我刚刚从一种托管环境转移到另一种托管环境,我的网络也发生了一些变化。
以前,从服务器发送到其自己的外部 IP 地址的请求被路由到本地主机,并且 ping 时间与 ping 本地主机无法区分:
wg@akl2:~$ ping akl2.wb.gs
PING akl2.wb.gs (112.109.67.244) 56(84) bytes of data.
64 bytes from akl2.wb.gs (112.109.67.244): icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from akl2.wb.gs (112.109.67.244): icmp_seq=2 ttl=64 time=0.031 ms
[...]
wg@akl2:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.033 ms
现在我在OpenStack环境中,ping时间有很大不同:
ubuntu@legacy1:~$ ping legacy1.webgenius.co.nz
PING legacy1.webgenius.co.nz (103.250.241.12) 56(84) bytes of data.
64 bytes from 103-250-241-12.rev.nz-hlz-1.catalystcloud.nz (103.250.241.12): icmp_seq=1 ttl=63 time=0.912 ms
64 bytes from 103-250-241-12.rev.nz-hlz-1.catalystcloud.nz (103.250.241.12): icmp_seq=2 ttl=63 time=0.643 ms
[...]
ubuntu@legacy1:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.051 ms
上述两个请求应该完全是本地的,因为它们不应该离开机器。
如何将这些请求路由到本地接口?
答案1
我的猜测是在后一种情况下,103.250.241.12
不是直接在服务器上配置的(例如,如果您运行ip a
,您可能会看到一个私有IP而不是前面提到的IP),即使该IP专用于1: 1 网络地址转换。
如果我的猜测是真的,但103.250.241.12
也不是短暂的,您可以考虑:
iptables -t nat -I OUTPUT -d 103.250.241.12 -j REDIRECT
看iptables 扩展(8)了解详情。
答案2
除了其他答案:
如果所有请求都是通过主机名发出的,您还可以添加legacy1.webgenius.co.nz
到/etc/hosts
并将其解析为127.0.0.1
.不需要 iptables。
ip addr
并按照建议进行检查。