Linux
如何將請求路由到內部地址到 localhost
我剛剛從一個託管環境轉移到另一個,我的網路已經發生了一些變化。
以前,從伺服器到其自己的外部 IP 地址的請求被路由到 localhost,並且 ping 時間與 ping localhost 沒有區別:
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
上述兩個請求應該完全是本地的,因為它們不應該離開機器。
如何將這些請求路由到本地介面?
我的猜測是在後一種情況下,
103.250.241.12
不是直接在伺服器上配置的(例如,如果你執行ip a
,你可能會看到一個私有 IP 而不是前面提到的 IP),即使 IP 專用於它 1: 1個NAT。如果我的猜測是正確的,並且
103.250.241.12
不是(太)短暫的,你可以考慮:iptables -t nat -I OUTPUT -d 103.250.241.12 -j REDIRECT
有關詳細資訊,請參閱iptables-extensions(8)。
除了其他答案:
如果所有請求都是由主機名發出的,您還可以添加
legacy1.webgenius.co.nz
並/etc/hosts
使其解析為127.0.0.1
. 不需要 iptables。並
ip addr
按照建議進行檢查。