Routing
將路由表配置為通過 VPN 連接僅路由一個(或 IP 範圍)
這是我的家庭網路配置:
設備/PC/智能手機 —> DD-WRT 路由器 —> 網際網路路由器 —> 網際網路/世界
- DD WRT路由器ip:192.168.1.1(預設gw為192.168.1.254)
- 網際網路路由器ip:192.168.1.254
- 設備 ip 從 192.168.1.2 到 192.168.1.253
我想配置執行 PPTP VPN 客戶端的 DD WRT 快閃記憶體路由器。PPTP VPN 虛擬設備稱為ppp0。
然後 :
- 從 192.168.1.40 到 192.168.1.50 的所有 ip 都通過 Vpn(所以,通過 ppp0 介面和 ppp0 網關)
- 所有其他 ip 使用預設區域網路網關(因此,不使用 vpn)
當我在 DD WRT 上啟動 VPN 客戶端時,我的路由表是
0.0.0.0 via 192.168.1.254 dev eth0 default via 192.168.120.10 dev ppp0 scope link 8.8.8.8 via 192.168.1.254 dev eth0 62.101.93.101 via 192.168.1.254 dev eth0 127.0.0.0/8 dev lo scope link 169.254.0.0/16 dev br0 proto kernel scope link src 169.254.255.1 192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.132 192.168.1.254 via 192.168.1.254 dev eth0 192.168.120.10 dev ppp0 scope link
現在,我想我必須更換
- 預設通過 192.168.120.10 dev ppp0
和
- 預設通過 192.168.1.254 dev eth0
所以所有 ip 都通過標準的網際網路網關(沒有 PPTP vpn)……然後添加一個規則,如
- 192.168.1.40 通過 192.168.120.10 開發 ppp0
只允許 ip 192.168.1.40 使用 PPTP 退出。
但是..它不起作用!
所以我的最後一個問題是:
- 如何配置我的路由器通過預設網際網路網關(192.168.1.254)路由所有 IP 並且只有一個 IP(或 IP 範圍)使用 pptp vpn 連接退出?
非常感謝!
網路路由不考慮源 IP 地址,只考慮目標 IP 地址。這就像說“如果有人想訪問網路 1.2.3.4,請使用 192.168.1.xx 作為網關”。
你想要做的是說:“來自這個 IP 地址的流量通過這個特定的網關進入網際網路”。
這稍微複雜一些。Linux 中的標準解決方案是使用 iproute2 包的特性。
- 在備用表上創建新的預設路由
ip route add table 55 default via 192.168.20.10 dev ppp0
- 標記您要路由的流量
iptables -t mangle -I PREROUTING 1 -s 192.168.1.40 -j MARK --set-mark 55
- 創建一個規則,以便標記為 55 的流量通過表 55 路由
ip rule add fwmark 55 table 55
此時,如果您在介面 ppp0 上執行 tcpdump 並從您的 192.168.1.40 設備發送一些流量,您應該會看到一些流量。
現在你可能會遇到兩個問題:
- NAT :您可能必須添加一個 nat 規則,以便通過 ppp0 介面傳出的流量使用介面 ip 地址進行 nat
- 碎片:您的 ppp0 介面的 MTU 可能小於 eth0 介面的 mtu,因此您必須安裝 TCPMSS 規則以將流量限制在 1300 和 1400 之間