Route

eth0 和 ppp0 損壞的路由表

  • December 15, 2017

我使用本指南連接到我的 VPN 伺服器 (pptp),這是唯一一個適用於許多教程的指南。

連接到 VPN 伺服器後,路由表如下所示,有時它只是最後兩行(非常隨機,我相信這是有原因的)。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     255.255.255.255 UGH   0      0        0 ppp0
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

**我的設置:(**範例中更改了 IP 以使其簡單)

  • 在 192.168.1.20 上執行的本地電腦 (centos)
  • 這使用內部 VPN 本地 IP 192.168.0.1 連接到 35.100.100.35(網際網路)上的外部 VPN(ubuntu)
  • 連接 centos 後,介面 ppp0 被添加 IP 192.168.0.2

但是,我需要通過 192.168.0.1(vpn 伺服器)路由來自 192.168.0.2 的所有流量。目前它使用本地網際網路。

我已經嘗試了很多變化,但無法做到正確。

route add default ppp0曾經可以工作,但由於路由表被破壞,它不再工作了。

路由表應該是什麼樣的?

你的問題

我會為此推荐一個單獨的路由表,因為我假設到達的流量192.168.0.2的源地址為35.100.100.35. 您遇到的問題是35.100.100.35您的路由表中未列出,因此正在使用預設值。

您也許可以擺脫以下簡單的事情:

ip route add 35.0.0.0/8 via 192.168.0.1 dev ppp0

因此,當您的機器嘗試響應35地址時,它會在ppp0介面上響應。

更強大/更精細的版本如下。

注意:您應該重新啟動電腦以清除您對路由表所做的任何臨時更改。


路由規則

一個足夠簡單的路由規則是讓任何發往或來自特定 IP 或子網的流量使用不同的路由表:

ip rule add from [interface ip]/[netmask] tab [table number] priority [priority]
ip rule add to [interface ip]/[netmask] tab [table number] priority [priority]

在這種情況下,您擔心到達192.168.0.2(您的ppp0設備 IP)的流量。您需要通過添加文件來創建一個新的路由表:/etc/iproute2/rt_tables. 語法是[table number] [table name]. 我通常使用介面名稱作為表名,保持簡單。

echo "168   ppp0" >> /etc/iproute2/rt_tables 

ip rule add from 192.168.0.2/32 tab 168 priority 101
ip rule add to 192.168.0.2/32 tab 168 priority 101

這應該會導致定址到的所有流量192.168.0.2與路由表匹配168,以及響應該表中流量的任何流量。


使用新的路由表

現在我們已經將流量定向到該路由表168,但它會是空的,現在只需要向它添加一個預設路由。

ip route add default via 192.168.0.1 dev ppp0 table 168

這給table添加了一個預設路由168,簡單來說就是使用介面ppp0


它看起來像什麼

最後你的路由表應該是這樣的:

# ip route show
default dev eth0 proto static metric 1024
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
192.168.0.0/24 dev ppp0 proto kernel scope link src 192.168.0.2

這是您的標準路由表,通常用於流量的表。至於這裡的路由:您可能最初定義的預設路由,後兩個是根據您介面的 IP 地址推斷的。

# ip rule show
0:       from all lookup local
101:     from 192.168.0.2 lookup ppp0
101:     from all to 192.168.0.2 lookup ppp0

這列出了您的路由規則,格式為“

$$ priority $$: $$ rule $$抬頭$$ table $$"。此範例說明通常使用本地路由表。如果流量是往返於 192.168.0.2 的,則使用名為 的路由表ppp0

# ip route show table ppp0
default via 192.168.0.1 dev ppp0

這顯示了名為的路由表ppp0,它應該只是將所有流量發送出去ppp0


最終結果

這樣做的最終結果是,當流量傳入或傳出ppp0介面的 IP 時,它將使用名為ppp0. 路由表ppp0只是將所有流量發送到設備ppp0

引用自:https://unix.stackexchange.com/questions/321373