我正在使用 DD-WRT 3.0 路由器通过 openVPN 进行连接。在 LAN 中,192.168.1.50 是一个不应该通过 VPN 的设备。
(如何设置防火墙让 192.168.1.50 不通过 VPN 以及 当 VPN 断开/掉线时如何使所有其他 IP 失去 WAN 连接?)
或者
(创建两个子网,一个通过 VPN(wi-fi 设备),另一个直接(有线设备) , 当 VPN 掉线时让 VPN 子网失去 WAN 连接)
我对这两种设置都没有偏好。什么都容易。
此规则不起作用(对于第一种情况):
iptables -I FORWARD ! -o tun1 -s 192.168.1.50 -j DROP
这是正在使用的路由表,路由器处于网关模式:
要阻止普通 WAN 上客户端的所有出站流量,您可以使用 nvram 变量
get wan_iface
您需要定义特定的 IPv4 子网,注意不要阻塞整个 LAN 范围!
这将阻止任何超出路由器的出站流量,当不在 VPN 接口上时,您可以通过
traceroute
对任何外部 IPv4 地址进行确认,您会发现在第一跳后流量将下降。对于您的特定 IPv4 客户端,我有点困惑。您不能为要访问 VPN 的客户端创建 IPv4 子网,然后根据范围确保
192.168.1.50
客户端不在其中吗?然后只需添加一条ACCEPT
规则以允许它正常使用 WAN 吗?DD-WRT 论坛中的某个人帮助我以最好(最简单)的方式解决了这个问题。
基于策略的路由是解决问题的选择性 VPN 隧道部分的正确方法。它是您指定 OpenVPN 连接详细信息的字段之一。您必须在此处输入您想要通过 VPN 的设备。请注意,由于 DD-WRT 中的错误,路由器本身的 IP 不能在此列表中。
所以我设置了以下内容:
现在对于问题的第二部分,当 VPN 关闭/失败时,拒绝 WAN 访问应该在 VPN 上的设备,可以通过在“保存防火墙”部分输入以下命令来完成:
关于上述命令的两个注意事项:
REJECT
而不是DROP
因为前者比后者更友好。DROP
不响应并要求客户端超时,这对用户来说可能很烦人。相反,REJECT
导致客户端立即退出。NEW
。通过检查 NEW,我们阻止了这些设备启动出站连接,但不会阻止它们被远程访问并通过 WAN 发送回复(至少在 VPN 关闭时)。如果您想阻止远程访问以及--state NEW
从这些规则中删除。