我是网络新手,不知道如何正确配置。
我可以 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,但具体怎么做取决于已经存在的其他路由。