Routing

將路由表配置為通過 VPN 連接僅路由一個(或 IP 範圍)

  • March 20, 2021

這是我的家庭網路配置:

設備/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 包的特性。

  1. 在備用表上創建新的預設路由ip route add table 55 default via 192.168.20.10 dev ppp0
  2. 標記您要路由的流量iptables -t mangle -I PREROUTING 1 -s 192.168.1.40 -j MARK --set-mark 55
  3. 創建一個規則,以便標記為 55 的流量通過表 55 路由ip rule add fwmark 55 table 55

此時,如果您在介面 ppp0 上執行 tcpdump 並從您的 192.168.1.40 設備發送一些流量,您應該會看到一些流量。

現在你可能會遇到兩個問題:

  1. NAT :您可能必須添加一個 nat 規則,以便通過 ppp0 介面傳出的流量使用介面 ip 地址進行 nat
  2. 碎片:您的 ppp0 介面的 MTU 可能小於 eth0 介面的 mtu,因此您必須安裝 TCPMSS 規則以將流量限制在 1300 和 1400 之間

引用自:https://serverfault.com/questions/577553