我的私有网络中有两台设备。一台计算机的 IP 为 10.42.0.1,另一台计算机的 IP 为 10.42.0.173。
我可以从一台计算机 ping 到另一台计算机,反之亦然。
如果我想通过 ifconfig 将 IP 从 10.42.0.173 更改为例如 10.42.0.43:
ifconfig eth0 10.42.0.43 netmask 255.255.255.0 broadcast 10.42.0.255
我仍能 ping 通。
但是当我想将其从 10.42.0.173 更改为 10.42.1.43 时
ifconfig eth0 10.42.1.43 netmask 255.255.0.0 broadcast 10.42.1.255
我可以从 10.43.1.43 ping 到 10.42.0.1 但无法从另一端 ping 通(从 10.42.0.1 到 10.42.1.43)
可能是路由表的问题。但我不知道该如何设置。
答案1
您的第一台设备的 IP 地址10.42.0.1
很可能为 ,子网掩码为 24 位(255.255.255.0
)。为了使其10.42.1.255
无需网关即可看到,您必须将子网掩码设置为 24 位或更少(255.255.254.0
或更少)两个都机器
答案2
网络掩码错误。
ifconfig eth0 10.42.0.43 netmask 255.255.255.0 broadcast 10.42.0.255
I can still have ping.
这是网络 10.42.0,
其中有 254 个主机,从 10.42.0.1 开始到 10.42.0.254 结束。
广播是 10.42.0.255
But when I want change it from 10.42.0.173 for example to 10.42.1.43 by
ifconfig eth0 10.42.1.43 netmask 255.255.0.0 broadcast 10.42.1.255
那是一个完全不同的网络。广播位于 10.42.1.255
,而 10.42.0.255 只是一个常规主机 IP。
请将两者置于同一 LAN 上。使用相同的网络掩码。
答案3
计算机10.42.1.43/255.255.0.0
认为对方在其网络中
10.42.x.x/255.255.0.0
。它会假设对方在
10.42.0.1/255.255.0.0
,因此会愉快地发送 ping 数据包。
然而,反过来,因为10.42.0.1/255.255.255.0
的 IP
10.42.1.43
不在其网络中,并且它没有任何将数据包传递给 的路由规则10.42.1.x
。因此 ping 将失败,因为它没有可用的网络路由。换句话说,10.42.0.1
不知道如何将网络数据包发送到10.42.1.x
。
在物理网络上发送的数据包将被每个连接的设备接收。每个设备都会检查每个数据包,看它是否是发往自己的。因此,重点是发送数据包,在第一种情况下会发生这种情况,但在第二种情况下不会发生。