Vpn
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
我正在嘗試使用 curl 呼叫http://42.112.178.185並且需要從 192.168.42.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,但要做什麼取決於已經存在的其他路由。