我正在使用DD-WRT 3.0路由器通过openVPN进行连接。 在局域网中,192.168.1.50是不应该通过VPN的设备。
( 如何设置防火墙有192.168.1.50不通过VPN和如何使所有其他IP丢失WAN连接时,VPN断开/丢弃? )
要么
( 创build两个子网,一个通过VPN(Wi-Fi设备)和其他直接(有线设备) , 并使VPN子网在VPN丢失时失去WAN连接 )
我没有任何设置的偏好。 无论如何更容易。
此规则不起作用(对于第一种情况):
iptables -I FORWARD ! -o tun1 -s 192.168.1.50 -j DROP
路由器处于网关模式:
要阻止正常WAN上客户端的所有出站stream量,可以使用nvramvariablesget wan_iface
IPV4_WAN=$(nvram get wan_iface) iptables -I FORWARD -s 192.168.xx/24 -o "$IPV4_WAN" -j DROP
您将需要定义您的特定IPv4子网,小心不要阻止您的整个LAN范围!
这将阻止任何超出路由器的出站stream量,当不在VPN接口上时,您可以通过对任何外部IPv4地址执行traceroute来确认,您会发现第一跳之后stream量将会下降。
对于您的特定IPv4客户端,我有点困惑。 你不能创build你想要去VPN的客户端的IPv4子网,然后根据范围确保192.168.1.50客户端不在其中吗? 那么只需添加一个ACCEPT规则,以允许它正常使用WAN?
iptables -I FORWARD -s 192.168.1.50 -o "$IPV4_WAN" -j ACCEPT
有人在DD-WRT论坛帮助我以最好(最简单)的方式解决这个问题。
基于策略的路由是完成select性VPN隧道部分问题的正确方法 。 这是您指定OpenVPN连接详细信息的字段之一。 你必须在这里input你想要通过VPN的设备。 请注意,由于DD-WRT中的一个错误,路由器本身的IP不能在这个列表中。
所以我设置了以下内容:
现在,对于问题的第二部分,即在VPNclosures时拒绝广域网访问应该在VPN上的设备/可以通过在“ 保存防火墙”部分中input以下命令来完成故障 :
iptables -I FORWARD -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with icmp-host-prohibited iptables -I FORWARD -p tcp -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with tcp-reset
关于上述命令的两个注释:
REJECT而不是DROP因为前者比后者更友好。 DROP不响应,并要求客户端超时,这可能会让用户烦恼。 相反, REJECT会导致客户立即退出。 NEW 。 通过检查NEW,我们正在阻止这些设备发起出站连接,但是不阻止它们被远程访问并通过WAN发送应答(至less在VPNclosures时)。 如果您想要防止远程访问,请将--state NEW从这些规则中删除。