linux - Ubuntu 14.04 忽略内核路由

标签 linux routes

我们在某些 Linux 虚拟机(基于云、多个提供商,主要是 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

现在,问题... 当一切正常时,VM 会 ping 站点 A 上的 VM,这就是 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

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

谢谢你们;)

最佳答案

在过去的 3 个小时里,这让我很困惑;然而我还有一条线索——我的 ping 返回了 零星的“重定向主机(新下一站:x.x.x.x)”

我也不知道为什么它会偶尔发生,刷新路线肯定会在短期内解决它。

我通过禁用 icmp 重定向解决了这个问题。

回声0 | tee/proc/sys/net/ipv4/conf/*/accept_redirects

回声0 | tee/proc/sys/net/ipv6/conf/*/accept_redirects

从这里开始; https://unix.stackexchange.com/questions/57941/linux-always-send-icmp-redirect

干杯

马丁

关于linux - Ubuntu 14.04 忽略内核路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083416/

相关文章:

c++ - 在 Ubuntu 中从 cpp 程序创建新文件

linux - 为什么 grep 在 Debian 和 CentOs 中的工作方式不同?

c# - 如何做高级 ASP.NET MVC (3) 路由(计算操作等)?

c# - 启动后更改MVC6的路由集合

ruby-on-rails - 没有 Controller 名称的Rails 3 URL

linux - 为Wine下运行的Windows程序设置前台窗口

c - Linux套接字绑定(bind)连接

linux - 在 Linux 中替换 FastQ 文件中的特定核苷酸

laravel - 添加新路由后出现Laravel错误500( undefined variable 'e')?

mysql - Node Express MySQL 多路由