![不同网络上的两个服务器之间的rsync管道断开](https://linux22.com/image/757017/%E4%B8%8D%E5%90%8C%E7%BD%91%E7%BB%9C%E4%B8%8A%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84rsync%E7%AE%A1%E9%81%93%E6%96%AD%E5%BC%80.png)
我有两台 FreeBSD 服务器,它们位于不同的网络上,中间有防火墙。我无法控制防火墙。
Server 1:
IP: 10.1.0.2
GW (firewall): 10.1.0.1
Server2:
IP: 10.2.0.2
GW (firewall): 10.2.0.1
我正在尝试将内容从一台服务器 rsync 到另一台服务器。该过程开始正常,但一段时间后,rsync 失败,并出现超时或管道损坏错误:
Jul 31 03:49:23 server1 rsyncd[54411]: building file list
Jul 31 03:51:34 server1 rsyncd[54411]: rsync: [sender] write error: Broken pipe (32)
----------------------------------------------------
Jul 31 03:49:23 server1 rsyncd[54412]: building file list
Jul 31 03:51:34 server1 rsyncd[54412]: rsync: read error: Operation timed out (60)
Jul 31 03:51:34 server1 rsyncd[54412]: rsync error: error in socket IO (code 10) at io.c(785) [sender=3.1.2]
我不知道防火墙是如何连接的,但如果我arp -a
从每台服务器运行命令,似乎防火墙每分钟左右就会更改一次 IF(MAC):
server1: ~# arp -a
[...]
? (10.1.0.1) at aa:aa:aa:aa:aa:aa on ix0 expires in 1150 seconds [ethernet]
-------
server2: ~# arp -a
[...]
? (10.2.0.1) at bb:bb:bb:bb:bb:bb on ix0 expires in 1150 seconds [ethernet]
大约一分钟后
server1: ~# arp -a
[...]
? (10.1.0.1) at bb:bb:bb:bb:bb:bb on ix0 expires in 1150 seconds [ethernet]
-------
server2: ~# arp -a
[...]
? (10.2.0.1) at aa:aa:aa:aa:aa:aa on ix0 expires in 1150 seconds [ethernet]
同一时间点的结果总是相反的,因此 IP 会在 IF 之间切换
我思考这种行为使得 rsync 出现问题,而且可能不仅仅是 rsync 的问题,而是所有 tcp 连接的问题。
由于我无法控制防火墙的行为,那么在操作系统方面可以做些什么吗?