有两台机子,各自设置了静态 IP:
ifconfig eth0 192.168.32.10 netmask 255.255.254.0
ifconfig eth0 192.168.1.15 netmask 255.255.254.0
A 机 Ping B 机时,显示异常:
[root@test]# ping 192.168.1.15 PING 192.168.1.15 (192.168.1.15): 56 data bytes ping: sendto: Network is unreachable
想问怎么才能在不改变 AB 机 IP 的情况下,让网络互通。 能不能通过 route 命令之类的方法?
![]() | 1 holinhot 2022-02-28 11:59:26 +08:00 255.255.254.0 ?????? |
![]() | 2 laozhoubuluo 2022-02-28 12:04:46 +08:00 ![]() 最省事的就是掩码改成 255.255.192.0 从而在二层打通 192.168.0.0 - 192.168.63.255 ,两个设备间可以走二层直接交付。 |
![]() | 3 liuweisj 2022-02-28 12:23:55 +08:00 ![]() A 机:ip route add 192.168.1.0/24 dev eth0 B 机:ip route add 192.168.32.0/24 dev th0 |
4 MonoLogueChi 2022-02-28 12:33:30 +08:00 via Android ![]() @liuweisj 23 |
5 jane35622 2022-02-28 13:37:14 +08:00 ![]() 1. 改掩码 2. 加路由 二选一 |
![]() | 6 anyclue 2022-02-28 13:41:26 +08:00 静态路由 A 机:ip route add 192.168.1.0/24 dev eth0 |
![]() | 7 anyclue 2022-02-28 13:42:56 +08:00 ![]() 静态路由,上面敲错发出去了 A 机:ip route add 192.168.0.0/23 dev eth0 B 机:ip route add 192.168.32.0/23 dev eth0 |
![]() | 8 AllenHua 2022-02-28 13:49:06 +08:00 ![]() 由于掩码是 23 位,A 机所在局域网 IP 地址范围是 192.168.32.1 ~ 192.168.33.254 (0 和 255 一般不分配给主机),B 机所在局域网 IP 地址范围是 192.168.1.1 ~ 192.168.2.254 所以不是同一个 network ,网络不可达,无法 ping 通。解决方法既然要求了 “想问怎么才能在不改变 AB 机 IP 的情况下,让网络互通。”,就只能在 A 机上添加一条到 B 机 network 的静态路由(或者在 B 机器上添加 A 机器的 static route )。 ``` ip route add 192.168.1.0/23 dev eth0 ``` 注意掩码是 23 个。 |
![]() | 9 yaron OP @laozhoubuluo 十分感谢,可以用 |
![]() | 10 yaron OP @AllenHua 十分感谢,想问下是两个机子都要添加静态路由吗? 1. 我先在 B 机上设置了,但还是 ping 不通: ``` [root@test]# ip route add 192.168.32.0/23 dev eth0 [root@test]# ping 192.168.32.10 PING 192.168.32.10 (192.168.32.10): 56 data bytes --- 192.168.32.10 ping statistics --- 85 packets transmitted, 0 packets received, 100% packet loss [root@test]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.254.0 U 0 0 0 eth0 192.168.32.0 * 255.255.254.0 U 0 0 0 eth0 ``` 2. 然后我在 A 机也测试一下 ping ,也是不行: ``` [root@test]# ping 192.168.1.15 PING 192.168.1.15 (192.168.1.15): 56 data bytes ping: sendto: Network is unreachable ``` 3.最后我也在 A 机上尝试设置 route ,但是却失败了: ``` [root@test]# ip route add 192.168.1.0/23 dev eth0 RTNETLINK answers: Invalid argument [root@test]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.32.0 * 255.255.254.0 U 0 0 0 eth0 ``` |
![]() | 11 yaron OP ![]() 结案: 方法 1. @laozhoubuluo 的答案:两台机子的掩码都改成 255.255.192.0 方法 2. @anyclue 的答案:两台机子都要设置静态路由 A 机:ip route add 192.168.0.0/23 dev eth0 B 机:ip route add 192.168.32.0/23 dev eth0 |
![]() | 12 wangyu17455 2022-02-28 15:18:21 +08:00 via Android 冷知识:掩码是一个由 n 位的 1 和 32-n 位的 0 组成的二进制数,n 可以取 0-32 ,所以 255.255.255.254 显然不是一个合格的掩码 |
![]() | 14 AllenHua 2022-02-28 15:25:20 +08:00 @wangyu17455 #12 本帖中的掩码是 255.255.254.0 ,掩码 23 是合法的也是没问题的啊。你说的 255.255.255.254 是掩码 31 ,也是能用的,只是使用局限比较大,网络中能容纳的主机数量少而已。“255.255.255.254 显然不是一个合格的掩码” 这种说法站不住脚也说不通。 |
15 sampeng 2022-02-28 16:33:20 +08:00 隔了几十个 C 。。能通就见鬼了 |
![]() | 16 wangyu17455 2022-02-28 18:18:56 +08:00 via Android @AllenHua 我看错了,看成 255.255.255.254 了,我道歉 |
![]() | 17 yaron OP @AllenHua 刚看了一下子网掩码的说明,掩码中置 1 的部分为网络地址。有点疑惑。 想问一下,上面说的<B 机所在局域网 IP 地址范围是 192.168.1.1 ~ 192.168.2.254>这句话是不是不对,而是<192.168.0.1 ~ 192.168.1.254>? |