Ubuntu 14.04 虚拟机上的内核路由问题

Ubuntu 14.04 虚拟机上的内核路由问题

我们在一些 Linux VM(基于云、多个提供商,主要是 Ubuntu 14.04 和 16.04)上遇到了一些奇怪的网络行为。我们有两个不同的网络,中间有一个 Strongswan 网关。

站点 A:网络 - 10.104.16.0/20 VPN 网关和在主路由器上配置的路由(虚拟机上无需配置)

站点 B:网络 - 10.240.132.0/25 Strongswan 网关 - 10.240.132.15 根据与站点 A 通信的需要(或不需要)为每个虚拟机配置路由

站点 B 上需要与站点 A 虚拟机通信的虚拟机之一上的内核路由表:

# route -vn
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.240.132.1    0.0.0.0         UG    0      0        0 eth0
10.104.16.0     10.240.132.15   255.255.240.0   UG    0      0        0 eth0
10.240.132.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

现在,问题是……当一切正常时,虚拟机会对站点 A 上的虚拟机执行 ping 操作,这就是 traceroute 命令的输出:

# traceroute 10.104.19.4
traceroute to 10.104.19.4 (10.104.19.4), 30 hops max, 60 byte packets
 1  10.240.132.15 (10.240.132.15)  0.248 ms  0.228 ms  0.220 ms
 2  * * *
 3  10.104.19.4 (10.104.19.4)  15.048 ms  15.042 ms  15.028 ms

然后,虚拟机突然无法 ping 通站点 A 资源,traceroute 输出将如下所示:

# traceroute 10.104.19.4
traceroute to 10.104.19.4 (10.104.19.4), 30 hops max, 60 byte packets
 1  10.104.19.4 (10.104.19.4)  0.552 ms  0.567 ms  0.616 ms
 2  * 10.104.19.4 (10.104.19.4)  0.659 ms  0.707 ms
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *^C

它看起来完全是随机的。当这种情况最终发生时,我将删除然后再次添加路线:

# route del -net 10.104.16.0 gw 10.240.132.15 netmask 255.255.240.0
# route add -net 10.104.16.0 gw 10.240.132.15 netmask 255.255.240.0

当然,这可以暂时解决问题,但它不会持续很长时间......知道什么可能会出错或者我做错了什么吗?

感谢你们 ;)

答案1

好吧,没关系...在意识到连接会在上午 9:00、上午 9:05、上午 9:10 精确地每 5 分钟丢失一次...之后,我查看了 Strongswan 日志,发现它会在以下时间重新启动服务:那些给定的时间(进程接收 SIGKILL 命令)。

我们和队长谈过,他说

嗯,我们可能在 Strongswan 服务器上有一个 cron 作业,对远程 IP 执行 ping 操作,如果找不到远程 IP,则重新启动服务。

确实是的。而且由于该远程 IP 早已消失,并且没有人禁用或更新此未记录的作业,因此从一开始就重新启动了服务。直到我们在复制 Postgres 数据库时注意到这个问题。

相关内容