如何将请求路由到内部地址到本地主机

如何将请求路由到内部地址到本地主机

我刚刚从一种托管环境转移到另一种托管环境,我的网络也发生了一些变化。

以前,从服务器发送到其自己的外部 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并按照建议进行检查。

相关内容