内部および外部ネットワークファイルの一方向伝送サーバー用にsamba + rsync + inotifyを構築します

同社は内部ネットワークと外部ネットワークを持っており、現在、外部ファイルの内部ネットワークへの無料転送を許可したいが、内部ファイルの外部ネットワークへの無料転送を許可したくないので、外部転送用のファイルサーバーを構築したいので、インターネットでいくつかの記事を見つけて組み合わせました実際のプロセスのいくつかの記録。

1.前提条件と注意事項:
1。rsyncd、sambaなどのサービスを許可するようにファイアウォールに注意してください。途中で不明なエラーがある場合は、setenforce0を試すことができます。
2. 2つのLinuxサーバー、1つの内部ネットワークと1つの外部ネットワーク。2つのcentos7.9仮想マシンを使用します。3
。最初にネットワークをテストする必要があることに注意してください。これを行ったとき、ゲートキーパーの設定が間違っていました。その結果、多くの時間が無駄になりました。まず、外部ネットワークサーバーが内部ネットワークサーバーポート873にtelnetできる限り、ネットワークがtelnet873ポートを介して接続できるかどうかを確認します。
4.ソースエンドはrsyncdリスナーを実行する必要はありませんが、inotify.shスクリプトを実行する必要があり、宛先エンドはスクリプトを実行せずにrsyncdリスナーを開く必要があります。
次に、インストールと構成のプロセス

  • イントラネットサーバー
    1.ソフトウェアyuminstall -y rsync inotify-toolsをインストールします
    。2。次のようにrsyncd.confを編集します。
    [wzn]この名前は非常に重要であり、ソースがデータを送信するときに使用されます。スクリプトのdst
    #外に注意してください。ネットワークは自動的にイントラネットに転送されます。ファイル
    uid = rootはrootである必要があり、authユーザーと同じでは
    ありません
    。gid = rootはrootである必要があります。path= / data / wznfileディレクトリは自分で定義できます
    comment = wzn file
    #ignoreエラー
    読み取り専用= no
    書き込み専用=
    ホストなし許可= *
    最初に制限することはできません#list = false
    auth users = wznユーザー名独自の
    シークレットファイルを設定= / etc / rsync.passパスワードファイルの場所

            3.创建目录
       mkdir -p /data/wznfile
    
    4.创建用户名密码文件,内网侧也即rsync服务端需要同时有用户名和密码
       echo “wzn:123456” > /etc/rsync.password 
       chmod -R 600  /etc/rsync.password                   #必须设置为600,否则会报错
    
     5.启动服务
       rsync --daemon
       systemctl start rsyncd
       systemctl enable rsyncd.service
  • 外部ネットワークサーバーのインストールプロセス
    1.ソフトウェア
    yuminstall -y rsyncinotify -toolsをインストールします2.ディレクトリmkdir-p / data / wznfileを
    作成します3.パスワードファイルを作成します。ローカルファイルをrsyncサーバーに転送する外部ネットワーク側は、パスワードは
    echo "123456"> / etc / rsync.password
    chmod -R 600 /etc/rsync.passwordを600に設定する必要があります。そうしないと、エラーが報告され
    ます
    。5.inotify監視スクリプトviminotify.sh
    #!/ bin / bash
    ip =を記述します。192.168.1.21
    src = / data / wwfile /#最後の/記号は、このフォルダー内のファイルを反対側に転送することを意味します。それ以外の場合は、フォルダー全体が転送されます
    。dst= wzn#パスではなく、イントラネットサーバーの構成rsyncd.confモジュール名は、[]
    user = wzn
    / usr / bin / inotifywait -mrq --timefmt '%d /%m /%y%H:%M' --format '%T%w%f'の名前です。読み込みファイルが一方で| -e、ATTRIBの$ {SRC}を作成、削除、変更
    を行います
    rsync -vzrtopg --delete --progress $ src $ user @ $ ip :: $ dst --password-file = / etc / rsync.password> / dev / null && echo "$ src was rsyncd"#デバッグ中に使用できます> / del / nullが削除され、
    完了したエラーログが表示されます

        检查脚本  bash -x /scripts/inotify.sh
    
        6.创建目录  mkdir -p /data/wwfile
    
        7.执行脚本,在对应文件夹写入文件,查看内网服务器上是否有文件,查看日志信息。
  • ソース側では、仮想マシン設定スクリプトが起動後に自動的に開始されます
    。/etc/rc.d/rc.localファイルは、Linuxシステムのすべてのサービスが開始された後に実行されます。したがって、起動後にスクリプトを実行する場合は、スクリプトパスをファイルに追加できます。
    chmod + x /etc/rc.d/rc.localは、このファイルに実行権限を追加します

          echo 'nohup /bin/bash /scripts/inotify.sh' >> /etc/rc.d/rc.local   执行脚本的命令追加到这个文件
    
          重启执行命令查询有没有运行脚本,注意不是查询rsyncd
          ps -ef | grep inotify
  • ソースと宛先に同時にsambaをインストールして構成
    する1.yum install -ysambaをインストールします

                        2.配置 vi /etc/samba/smb.conf 增加以下内容
             [hzh-ww-file]
             path=/data/wznfile
              browseable = yes
             writable =  yes
             valid user = hzh
    
        3.添加用户
           useradd -s /sbin/nologin hzh         必须先创建系统层面的hzh账号
           pdbedit -a -u hzh                            设置hzh用户的smaba密码
    
                      4.设置开机启动 systemctl enable samba

  • ファイアウォールの許可されたサービスポートを追加しますfirewall-cmd--add-service samba --permanent
    Firewall-cmd --reload

    selinuxを閉じます。次の再起動は閉じたままになります
    vim / etc / sysconfig / selinuxこれはソフトリンクであり、/ etc / selinux / configへのリンクです

    SELINUX =無効

    次のコマンドは上記と同じですが、いずれかを押して
    vim / etc / selinux / configを実行します#selinuxを完全に閉じます

    set SELINUX = disabled#SELINUX = Enforceing改是SELINUX = disabled

参考資料:
samba https://www.cnblogs.com/kevingrace/p/8550810.html

おすすめ

転載: blog.51cto.com/14439838/2596888