eth0 和 ppp0 損壞的路由表
我使用本指南連接到我的 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
。