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

來自捲曲手冊頁:

--介面

使用指定的介面執行操作。您可以輸入介面名稱、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,但具體操作取決於已存在的其他路由。

相關內容