V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yaron
V2EX  ›  Linux

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

  •  
  •   yaron · 2022-02-28 11:56:51 +08:00 · 3663 次点击
    这是一个创建于 1019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有两台机子,各自设置了静态 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 机时,显示异常:

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

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

    二选一
    anyclue
        6
    anyclue  
       2022-02-28 13:41:26 +08:00
    静态路由 A 机:ip route add 192.168.1.0/24 dev eth0
    anyclue
        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
    AllenHua
        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 个。
    yaron
        9
    yaron  
    OP
       2022-02-28 14:32:14 +08:00
    @laozhoubuluo 十分感谢,可以用
    yaron
        10
    yaron  
    OP
       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
        11
    yaron  
    OP
       2022-02-28 14:57:38 +08:00   ❤️ 1
    结案:
    方法 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
        12
    wangyu17455  
       2022-02-28 15:18:21 +08:00 via Android
    冷知识:掩码是一个由 n 位的 1 和 32-n 位的 0 组成的二进制数,n 可以取 0-32 ,所以 255.255.255.254 显然不是一个合格的掩码
    AllenHua
        13
    AllenHua  
       2022-02-28 15:22:17 +08:00
    @yaron #10 确实是,我疏忽了。a b 两个网络相互独立,icmp 包去了要能回来 b 机器也要配静态路由。
    AllenHua
        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 显然不是一个合格的掩码” 这种说法站不住脚也说不通。
    sampeng
        15
    sampeng  
       2022-02-28 16:33:20 +08:00
    隔了几十个 C 。。能通就见鬼了
    wangyu17455
        16
    wangyu17455  
       2022-02-28 18:18:56 +08:00 via Android
    @AllenHua 我看错了,看成 255.255.255.254 了,我道歉
    yaron
        17
    yaron  
    OP
       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
        18
    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
        19
    yaron  
    OP
       2022-04-14 18:03:08 +08:00   ❤️ 1
    @AllenHua 噢,明白了,谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:14 · PVG 12:14 · LAX 20:14 · JFK 23:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.