内外网文件单向传输服务器搭建 samba+rsync+inotify

公司有内外网,当前想实现允许外网文件自由转入内网,但不允许内网文件自由转出到外网,所以想搭建一个外转内文件服务器,所以在网上找了一些文章,结合实际做的过程中的一些记录。

一、前提条件及注意事项:
1.注意防火墙要放通rsyncd samba等服务,中间有不明错误时可以试一下 setenforce 0 这一项。
2.两台linux服务器,一台内网,一台外网,我是用的两台centos7.9的虚拟机
3.注意网络要先测试通,本人在做这个的时候因为网闸上设置错误导致浪费了不少时间,通过telnet 873端口先验证一下网络是否可以通,只要外网服务器可以telnet通内网服务器的873端口即可。
4.源端不需要运行rsyncd监听程序,但需要执行inotify.sh脚本,目的端需要开启rsyncd监听程序,不需要运行脚本。
二、安装配置过程

  • 内网服务器
    1.安装软件 yum install -y rsync inotify-tools
    2.编辑rsyncd.conf,内容如下:
    [wzn] 这个名字很重要,源端传输数据时要用到,注意看脚本处的dst
    #外网自动转入内网文件
    uid = root 此处必须为root,不要和auth users一样
    gid = root 此处必须为root
    path=/data/wznfile 目录可以自己定义
    comment= wzn file
    #ignore errors
    read only = no
    write only = no
    hosts allow= * 刚开始可以先不限制
    #list = false
    auth users = wzn 用户名自己设置
    secrets file =/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.安装软件 yum install -y rsync inotify-tools
    2.创建目录 mkdir -p /data/wznfile
    3.创建密码文件,外网侧即把本地文件传给rsync服务端时只需要有密码即可
    echo “123456” > /etc/rsync.password
    chmod -R 600 /etc/rsync.password 必须设置为600,否则会报错
    5.编写 inotify监控脚本
    vim inotify.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 modify,delete,create,attrib ${src} | while read file
    do
    rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd" # 调试时可把>/del/null给删掉,以显示出错误日志
    done

        检查脚本  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 -y samba

                        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=disabled

    下面命令同上,只按其中一个做就行
    vim /etc/selinux/config #永久关闭selinux

    set SELINUX=disabled #SELINUX=enforcing改为SELINUX=disabled

参考文档:
samba https://www.cnblogs.com/kevingrace/p/8550810.html

猜你喜欢

转载自blog.51cto.com/14439838/2596888