这是我的家庭网络配置:
设备/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
ip rule add fwmark 55 table 55
此时,如果您在接口 ppp0 上运行 tcpdump 并从您的 192.168.1.40 设备发送一些流量,您应该会看到一些流量。
现在你可能会遇到两个问题: