问题
有两台机子,各自设置了静态 IP:
- A 机:
ifconfig eth0 192.168.32.10 netmask 255.255.254.0
- B 机:
ifconfig eth0 192.168.1.15 netmask 255.255.254.0
A 机 Ping B 机时,显示异常:
1 | [root@test]# ping 192.168.1.15 |
需要在不改变 AB 机 IP 的情况下,让网络互通。
说明
子网掩码是一个32位的2进制数,常见格式为255.255.255.255
(即FF.FF.FF.FF)。子网掩码由1和0组成,且1和0分别连续。 其对应网络地址的所有位都置为1,对应于主机地址的所有位置都为0。用于告知路由器,地址的哪一部分是网络地址,哪一部分是主机地址,使路由器正确判断任意IP地址是否是本网段)的,从而正确地进行路由。
注意:只有网络标识相同的两台主机在无路由的情况下才能相互通信。
通过子网掩码判断两台设备是否属于同一网段的方法是,将IP地址和子网掩码转换为二进制,然后进行二进制“与”计算,如果得出的结果是相同的,那么这两台计算机就属于同一网段。
比如:
1 | #子网掩码:255.255.254.0 |
使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。
解决方法
设置掩码为
255.255.192.0
,从而在二层打通 192.168.0.0 - 192.168.63.255 ,两个设备间可以走二层直接交付1
2
3
4# A机
ifconfig eth0 192.168.32.10 netmask 255.255.192.0
# B机
ifconfig eth0 192.168.1.15 netmask 255.255.192.0设置静态路由:
由于掩码是 23 位,A 机所在局域网 IP 地址范围是 192.168.32.1 ~ 192.168.33.254 (0 和 255 一般不分配给主机),B 机所在局域网 IP 地址范围是 192.168.0.1 ~ 192.168.1.254。所以不是同一个 network ,网络不可达,无法 ping 通,只能在 A 机上添加一条到 B 机 network 的静态路由,并且在 B 机器上添加 A 机器的 static route
1
2
3
4# A机
ip route add 192.168.0.0/23 dev eth0
# B机
ip route add 192.168.32.0/23 dev eth0