路由配置通過 VPN 發送一些流量
我有一個配置了服務的
DD-WRT
路由器OpenVPN
。我只想通過 vpn 連接發送某些源 IP。我相信我目前的路由表(如圖所示
netstat -rn
)通過介面上的 vpn 發送我的所有流量tun1
。據我了解,路由表是一個“失敗”表,所以在這種情況下,因為第一個條目是0.0.0.0
所有流量都將通過tun1
介面。Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1 0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 br0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 10.182.1.1 10.182.1.5 255.255.255.255 UGH 0 0 0 tun1 10.182.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1 46.23.68.178 10.0.1.1 255.255.255.255 UGH 0 0 0 br0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 128.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
我的目標是僅通過網站路由 1 或 2 個網站 - 特別
a1505.g2.akamai.net
是根據NSLookup
映射到以下 IP
- 地址:195.59.150.43
- 地址:195.59.150.26
我相信需要的是3個步驟。
1)發出某種
iptables
命令來刪除第一個路由條目 - 這樣做會停止通過 vpn 發送流量tun1
2)發出兩個命令來告訴目的地195.59.150.43
並195.59.150.26
路由通過tun1
但是,老實說,我發現 iptables 相當令人困惑。
這是正確的方法嗎?如果可以,有人可以給我一兩個範例命令嗎?
謝謝!
我了解路由表是“失敗”表
並不真地。路由表從“最具體的路由”到“最不具體的路由”排序。您的預設路由是 via
br0
,並且被定義為最後的路由,因為沒有網路遮罩(即genmask
is0.0.0.0
)。因為第一個條目是 0.0.0.0 所有流量都將通過 tun1 介面
雖然這是正確的結論,但不幸的是這是錯誤的推理。這是您的路由表,以視覺方式排序以表示用於路由的順序(頂部是最佳匹配):
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.182.1.1 10.182.1.5 255.255.255.255 UGH 0 0 0 tun1 10.182.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1 46.23.68.178 10.0.1.1 255.255.255.255 UGH 0 0 0 br0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1 128.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1 0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 br0
預設路由仍然是 via
br0
。但是,還有兩個更具體的路由(網路遮罩是128.0.0.0
),每個路由都將匹配可用數字 IPv4 地址空間的一半,因此它們將匹配所有非本地流量。我的目標是僅通過網站路由 1 或 2 個網站 - 特別是 a1505.g2.akamai.net 根據
nslookup
映射到以下 IP:195.59.150.43
和195.59.150.26
.我不確定您所說的“網站”是什麼意思;我會假設
tun1
你想阻止你所有的流量都這樣。要使用 OpenVPN 執行此操作,您只需
route-gateway def1
從其配置文件中刪除該指令。(如果您使用的是 NetworkManager 之類的東西,那麼應該有一個選項需要取消勾選,將連接標記為預設路由。)完成此操作後,您需要做的就是通過網關添加兩條路由,每個主機一條
tun1
:route add -host 195.59.150.43 gw 10.182.1.5 route add -host 195.59.150.26 gw 10.182.1.5
這些是主機路由,因此網路遮罩是隱式的
/32
(即255.255.255.255
),因此它們優先於所有內容,並且在我的視覺排序表中,三個條目位於列表頂部。實際上,您也應該能夠在 OpenVPN 配置文件中執行此操作。這將允許使用 VPN 本身自動啟動和刪除路由。根據您的設置,配置可以在伺服器中,路由將被“推送”到客戶端,或者作為客戶端的 OpenVPN 配置文件中的指令:
route 195.59.150.43 route 195.59.150.26