配置路由表以通过 VPN 连接仅路由一个(或 IP 范围)

配置路由表以通过 VPN 连接仅路由一个(或 IP 范围)

这是我的家庭网络配置:

设备/电脑/智能手机 ---> DD-WRT 路由器 ---> 互联网路由器 ---> 互联网/世界

  • DD WRT 路由器 ip:192.168.1.1(默认网关为 192.168.1.254)

  • 互联网路由器 IP:192.168.1.254

  • 设备 IP 从 192.168.1.2 变为 192.168.1.253

我想配置 DD WRT 闪存路由器并运行 PPTP VPN 客户端。PPTP VPN 虚拟设备称为点对点0

然后 :

  • 所有从 192.168.1.40 到 192.168.1.50 的 IP 都通过 Vpn(因此,通过 ppp0 接口和 ppp0 网关)
  • 所有其他 IP 使用默认 LAN 网关(因此,不使用 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 dev ppp0

仅允许 ip 192.168.1.40 使用 PPTP 退出。

但是..它不起作用!

我的最后一个问题是:

  • 如何配置我的路由器通过默认互联网网关(192.168.1.254)路由所有 IP,并且只有一个 IP(或一个 IP 范围)使用 pptp vpn 连接退出?

多谢!

答案1

网络路由不考虑源 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 设备发送一些流量,您应该会看到一些流量。

现在你可能会遇到2个问题:

  1. NAT:您可能需要添加一个 nat 规则,以便通过 ppp0 接口传出的流量与接口 ip 地址进行 nat
  2. 碎片:你的 ppp0 接口的 MTU 可能小于你的 eth0 接口的 MTU,因此你必须安装 TCPMSS 规则将流量限制在 1300 到 1400 之间

相关内容