我在 Linux 上工作。
100.10.10.2
我通过运行以下命令添加了到虚拟 IP 的路由:
route -n add 100.10.10.2 gw 127.0.0.1
它已被重定向到我的本地环回。我检查了内核 IP 表,它已正确设置路径。现在,我运行一个绑定在同一 IP 上的脚本,然后尝试从我的机器 ping 该 IP,它会正确收到 ping 回复。
但同一网络上的另一台计算机无法 ping 通此虚拟 IP 地址。我在互联网上查了一下,上面确实说我的本地环回上可以有多个 IP,并且可以从同一网络上的对等点查看它们。
我尝试在 eth0 接口上添加路径,方法是127.0.0.1
用我的eth0
IP 地址替换 。信息已正确添加到路由表中,但随后发生了同样的事情:我可以从自己的机器 ping 通,但对等端却无法 ping 通。
我在 Google 上搜索了同样的事情,但没有任何解决方案能帮助我。
该脚本(它发回 ICMP 数据包答复)是正确的(我确信这一点),因为我从我自己的机器获得了针对我设置了路由的 IP 的 ping 答复。
我哪里做错了?还是我遗漏了一些配置?
任何帮助深表感谢!
编辑:
这是路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
100.10.10.2 localhost.local 255.255.255.255 UGH 0 0 0 lo
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
和接口配置:
eth0 Link encap:Ethernet HWaddr 00:22:19:ec:ee:50
inet addr:192.168.1.2 Bcast:10.200.200.255 Mask:255.255.255.0
inet6 addr: fe80::222:19ff:feec:ee50/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
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
答案1
我不清楚你为什么要在本地系统上乱用路由命令。如果你在本地接口之一上配置了地址,则无需指定显式路由;你的系统已经知道如何联系它。
例如,如果您已经eth0
按上述配置,那么您应该能够执行以下操作:
ifconfig eth0:0 100.10.10.2 netmask 255.255.255.0
现在您的本地系统已经全部设置好了。
要使网络上的其他系统能够通过该 IP 地址联系您的系统,需要满足以下三项之一。要么:
- 它们需要在同一个 IP 网络上有一个接口,或者
- 他们需要有到该 IP 网络的明确路由,或者
- 他们的默认网关需要有到该 IP 网络的路由
因此,如果您有另一个系统的“真实”地址是 192.168.1.3,那么您可以执行以下操作:
ifconfig eth0:0 100.10.10.3 netmask 255.255.255.0
或这个:
route add -net 100.10.10.0/24 dev eth0