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

一、前提条件及注意事项:
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/wznfile4.创建用户名密码文件,内网侧也即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

©著作权归作者所有:来自51CTO博客作者wx5d2407d243822的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 5、Shell命令脚本
  2. 用Python清除文件夹中的重复视频
  3. Java Web: 发送请求,CSS文件 和 JS文件引用失败
  4. 脚本实现Oracle19c_pdb单实例自动安装部署
  5. 附实战代码|告别OS模块,体验Python文件操作新姿势!
  6. 让Python在后台自动解压各种压缩文件!
  7. 10行Python代码自动清理电脑内重复文件,解放双手!
  8. 用Python打造一款文件搜索工具,所有功能自己定义!
  9. Python办公自动化|自动整理文件,一键完成!

随机推荐

  1. android dom 解析xml方式
  2. XML解析之SAX解析过程代码详解
  3. XML引入以及与html的区别
  4. XML解析之sax解析案例(一)读取contact.xml
  5. xml作用以及语法
  6. xml解析方式之JAXP解析入门
  7. XML解析之sax解析案例(二)使用sax解析把 xm
  8. java Domj4读取xml文件
  9. 用xml和xsl做网页实例
  10. xml——json