请教大佬一个关于网络的问题

2022-02-28 11:56:51 +08:00
 yaron

有两台机子,各自设置了静态 IP:

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 命令之类的方法?

3481 次点击
所在节点    Linux
19 条回复
holinhot
2022-02-28 11:59:26 +08:00
255.255.254.0 ??????
laozhoubuluo
2022-02-28 12:04:46 +08:00
最省事的就是掩码改成 255.255.192.0 从而在二层打通 192.168.0.0 - 192.168.63.255 ,两个设备间可以走二层直接交付。
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 eth0
MonoLogueChi
2022-02-28 12:33:30 +08:00
jane35622
2022-02-28 13:37:14 +08:00
1. 改掩码
2. 加路由

二选一
anyclue
2022-02-28 13:41:26 +08:00
静态路由 A 机:ip route add 192.168.1.0/24 dev eth0
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
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 个。
yaron
2022-02-28 14:32:14 +08:00
@laozhoubuluo 十分感谢,可以用
yaron
2022-02-28 14:43:33 +08:00
@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
```
yaron
2022-02-28 14:57:38 +08:00
结案:
方法 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
wangyu17455
2022-02-28 15:18:21 +08:00
冷知识:掩码是一个由 n 位的 1 和 32-n 位的 0 组成的二进制数,n 可以取 0-32 ,所以 255.255.255.254 显然不是一个合格的掩码
AllenHua
2022-02-28 15:22:17 +08:00
@yaron #10 确实是,我疏忽了。a b 两个网络相互独立,icmp 包去了要能回来 b 机器也要配静态路由。
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 显然不是一个合格的掩码” 这种说法站不住脚也说不通。
sampeng
2022-02-28 16:33:20 +08:00
隔了几十个 C 。。能通就见鬼了
wangyu17455
2022-02-28 18:18:56 +08:00
@AllenHua 我看错了,看成 255.255.255.254 了,我道歉
yaron
2022-04-14 16:43:02 +08:00
@AllenHua
刚看了一下子网掩码的说明,掩码中置 1 的部分为网络地址。有点疑惑。
想问一下,上面说的<B 机所在局域网 IP 地址范围是 192.168.1.1 ~ 192.168.2.254>这句话是不是不对,而是<192.168.0.1 ~ 192.168.1.254>?
AllenHua
2022-04-14 17:25:46 +08:00
@yaron #17 都可以的。这要看这个网络当时是如何定义的。

如果定义成 192.168.0.0/23 那么就是你说的 <192.168.0.1 ~ 192.168.1.254>

如果定义成 192.168.1.0/23 那么就是我说的 <192.168.1.1 ~ 192.168.2.254>
yaron
2022-04-14 18:03:08 +08:00
@AllenHua 噢,明白了,谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836870

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX