公司有内外网,当前想实现允许外网文件自由转入内网,但不允许内网文件自由转出到外网,所以想搭建一个外转内文件服务器,所以在网上找了一些文章,结合实际做的过程中的一些记录。
一、前提条件及注意事项:
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 samba2.配置 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/configSELINUX=disabled
下面命令同上,只按其中一个做就行
vim /etc/selinux/config #永久关闭selinuxset SELINUX=disabled #SELINUX=enforcing改为SELINUX=disabled
参考文档:
samba https://www.cnblogs.com/kevingrace/p/8550810.html