我有一个带网关的 VPN 和一个应用服务器。应用服务器只知道 VPN 的网关。VPN 的网关知道虚拟机所托管的物理网络的网关。
问题:我无法从应用服务器访问 api.twitter.com。观察:缓存中充满了显示以下内容的条目物理网关IP 地址。以下是摘录:
ip -s route show cache 199.16.156.40
199.16.156.40 via 37.59.245.62 dev eth0 src 10.1.4.20
cache <redirected> used 170 age 22sec ipid 0x9e49
199.16.156.40 from 10.1.4.20 via 37.59.245.62 dev eth0
cache <redirected> age 25sec ipid 0x9e49
以 199 开头的 IP 是 Twitter IP。37.59.245.62
是物理网关的 IP。10.1.4.20
是 VPN 网关的 VPN IP。
物理网关的 IP 仅出现在处理 Twitter 服务器的条目中。
为什么这台机器会缓存它无法直接访问的 IP 的路由?
答案1
为什么要缓存?在任何其他情况下使用缓存的原因相同,以防止路由查找的开销。您看到“外部”网关的原因很可能是 ICMP 消息返回,通知您该 IP 不可用。
答案2
我问过这个别的地方,事实证明解决方案是关闭 ICMP 重定向。