有两台机子,各自设置了静态 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 3
最省事的就是掩码改成 255.255.192.0 从而在二层打通 192.168.0.0 - 192.168.63.255 ,两个设备间可以走二层直接交付。
|
3
liuweisj 2022-02-28 12:23:55 +08:00 1
A 机:ip route add 192.168.1.0/24 dev eth0
B 机:ip route add 192.168.32.0/24 dev eth0 |
4
MonoLogueChi 2022-02-28 12:33:30 +08:00 via Android 1
@liuweisj 23
|
5
jane35622 2022-02-28 13:37:14 +08:00 1
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 1
静态路由,上面敲错发出去了
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 1
由于掩码是 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>? |