Ubuntu 中的路由表

Ubuntu 中的路由表

我是网络新手,不知道如何正确配置。

我可以 ping 到服务器

ping -I 192.168.42.1 42.112.178.185

但我无法 ping 通

ping 42.112.178.185

42.112.178.185 仅允许接受 192.168.42.0/24。

我如何添加路由表?我想使用

ping 42.112.178.185 

代替

ping -I 192.168.42.1 42.112.178.185

我正在尝试拨打http://42.112.178.185使用 curl 并需要从 192.168.42.1 进行路由。

答案1

更新正如所愿,这里有一个针对具体问题的解决方案:curl连接时使用正确的源 IP,通过在连接前使用选项告诉它绑定到它--interface

来自curl 手册页

- 界面

使用指定的接口执行操作。您可以输入接口名称、IP 地址或主机名。

curl因此,只需使用此命令以正确的 IP 访问 42.112.178.185即可解决问题:

curl --interface 192.168.42.1 http://42.112.178.185/

当然你也可以指定接口。


我仍然保留下面的路由解决方案,以防它可以帮助到某人。


确实可以添加一条路由,该路由将告知在到达目标时使用除默认 IP(属于网关网络的 IP)以外的其他源 IP。

注意:由于未提供一些必需的信息:默认网关的 IP 和到达该网关的接口,因此需要编写一些额外的脚本来找出其值。此外,由于可能存在一个隧道,该隧道可能未替换默认路由,但可能添加了两个“半默认路由”0.0.0.0/1 和 128.0.0.0/1,因此我将获取到 42.112.178.185 的路由以获得正确的值。

因此我们将 gw IP 分配给gw

gw=$(ip -o route get 42.112.178.185 | sed -n 's/^.* via \([^ ][^ ]*\) *.*$/\1/p')

现在这是简单的路由命令:

ip route add 42.112.178.185 src 192.168.42.1 via $gw

例如,如果网关是 10.0.8.1,而 Ubuntu 假定的 tun0 的假定 IP 是 10.0.8.2,那么在更改之前,查询到 42.112.178.185 的路由将得到:

# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 10.0.8.2 
    cache 

修改后将变成:

# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 192.168.42.1
    cache

可以更改命令ip route以影响多个单个 IP,但具体怎么做取决于已经存在的其他路由。

相关内容