网关可以 ping 通,但无法添加路由

网关可以 ping 通,但无法添加路由

我想使用 10.1.16.189 作为网关来访问 9.36.204.4,两者都在 redhat 6.4 上。这是我的机器的网络配置:

      eth0      Link encap:Ethernet  HWaddr 06:FB:C1:7B:19:FD
      inet addr:10.62.56.130  Bcast:10.62.56.255  Mask:255.255.255.128
      inet6 addr: fe80::4fb:c1ff:fe7b:19fd/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:435639 errors:0 dropped:0 overruns:0 frame:0
      TX packets:13729 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:46426471 (44.2 MiB)  TX bytes:1502807 (1.4 MiB)
      Interrupt:32

我想要用作网关的机器的网络配置:

      eth0      Link encap:Ethernet  HWaddr 52:54:00:EA:31:A2
      inet addr:9.42.27.23  Bcast:9.42.27.255  Mask:255.255.252.0
      inet6 addr: 2002:92a:111:430:5054:ff:feea:31a2/64 Scope:Global
      inet6 addr: fe80::5054:ff:feea:31a2/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:53655370 errors:0 dropped:0 overruns:0 frame:0
      TX packets:21812264 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:30987415175 (28.8 GiB)  TX bytes:27696977107 (25.7 GiB)

      tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
      inet addr:10.1.16.44  P-t-P:1.1.1.1  Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1450  Metric:1
      RX packets:480532 errors:0 dropped:0 overruns:0 frame:0
      TX packets:887766 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:500
      RX bytes:70276913 (67.0 MiB)  TX bytes:1234059626 (1.1 GiB)

以下是我的操作

route add -host 10.1.16.189 dev eth0 gw 10.62.56.129

添加通过10.1.16.189访问主机9.36.204.4的途径

route  add -host 9.36.204.4  gw 10.1.16.189
SIOCADDRT: Network is unreachable

但我能够 ping 并跟踪路由 10.1.16.189。

ping 10.1.16.189
PING 10.1.16.189 (10.1.16.189) 56(84) bytes of data.
64 bytes from 10.1.16.189: icmp_seq=1 ttl=54 time=76.2 ms
64 bytes from 10.1.16.189: icmp_seq=2 ttl=54 time=75.4 ms
64 bytes from 10.1.16.189: icmp_seq=3 ttl=54 time=75.5 ms

所以我想知道为什么它报告网络无法访问,但我可以 ping 并访问它,我甚至可以 ssh 它。以及如何配置它以访问 9.36.204.4(可以在 10.1.16.189 中访问)。以及如何确定网关是可访问的。谢谢。

答案1

您只能向知道如何到达该网关的服务器添加路由。首次配置 10.62.56.130/25 时,它只能到达地址 10.62.56.128 到 10.62.56.128。相比之下,它可以使用 ARP 找到这些机器的任何 MAC 地址(第 2 层)。

然后,添加此路线后:

route add -host 10.1.16.189 dev eth0 gw 10.62.56.129

它知道通过将流量发送到 10.62.56.129 也可以到达 10.1.16.189。它无法找到 10.1.16.189 的 MAC 地址,但会向 10.62.56.129 发送,希望能够到达 10.1.16.189。

因此,当您尝试:

route add -host 9.36.204.4 gw 10.1.16.189

无法将流量转发到 10.1.16.189(没有 MAC 地址)。正确的处理方法是使用以下命令:

route add -host 9.36.204.4 gw 10.62.56.129

并确保 10.62.56.129 将路由到 10.1.16.189——后者将路由到可能的下一个目的地(依此类推)最终到达 9.36.204.4。

答案2

您想通过不属于您主机 (10.62.56.130) 本地的网关 (10.1.16.189) 添加到主机 (9.36.204.4) 的路由,但这无法实现。您可以 ping 建议的网关 (10.1.16.189),因为您的本地网关有到该网关的路由。您需要通过本地网关为其他网络添加路由。

本质上,您无法使用远程网关添加路由。您只能使用本地网关添加路由。

答案3

Theo 的回答很好。我只想补充一点,如果你已经尝试了本帖中的所有答案但没有任何效果,请使用下面的语法。对我来说很管用。

ip route add <target ip> via <your gateway>

例子

sudo ip route add 10.128.4.145 via 10.10.10.1

10.10.10.1 是您的网关。

10.128.1.145 是另一个网关中的端点

相关内容