我有一个 OpenVZ 主机,并在其上运行多个服务(mongodb、bitcoind)。我只想在本地连接到它们。它们似乎都绑定到 127.0.0.2 - 接口venet
。当我尝试访问 127.0.0.1(客户端的默认设置)上的服务时,我没有得到任何响应。但是,在 127.0.0.2 上连接工作正常。我没有意识到两者之间可能存在差异。这里发生了什么?
以下是 ifconfig 的输出:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:199957 errors:0 dropped:0 overruns:0 frame:0
TX packets:199957 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:15822725 (15.8 MB) TX bytes:15822725 (15.8 MB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: 2a00:1dc0:2003::adb9:ca98/128 Scope:Global
inet6 addr: 2a00:1dc0:2003::a59d:5802/128 Scope:Global
inet6 addr: 2a00:1dc0:2003::8d9f:638b/128 Scope:Global
inet6 addr: 2a00:1dc0:2003::8638:9f63/128 Scope:Global
inet6 addr: 2a00:1dc0:2003::daef:a10a/128 Scope:Global
inet6 addr: 2a00:1dc0:2003::92b9:5c2a/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:389890 errors:0 dropped:0 overruns:0 frame:0
TX packets:341645 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:367108643 (367.1 MB) TX bytes:98312087 (98.3 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:178.17.169.91 P-t-P:178.17.169.91 Bcast:178.17.169.91 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
这是我的 /etc/hosts 文件:
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.2 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
178.17.169.91 btslots.com btslots
::1 localhost ip6-localhost ip6-loopback
我更改了 localhost 以使其指向 127.0.0.2。令我惊讶的是,127.0.0.1/8 子网中的两个地址可能会产生不同的结果。除 127.0.0.1 之外的所有地址都表现相同(并且符合预期)。
答案1
在 127.0.0.0/8 子网下拥有多个不同的环回设备并不罕见。例如,您可以在FreeBSD 监狱设置以隔离到特定监狱的环回流量。
127.0.0.0/8 是一个子网,与其他子网一样(不同之处在于发往该子网的流量应该“环形”在主机内部,当 127.0.0.1 和 127.0.0.2 绑定到两个不同的接口时,它们是不同的目的地。