当 VPN 在 DD-WRT 路由器和单独的 VPN/直接客户端上停止时,如何阻止互联网访问?

当 VPN 在 DD-WRT 路由器和单独的 VPN/直接客户端上停止时,如何阻止互联网访问?

我使用 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

这是正在使用的路由表,其中路由器处于网关模式:

在此处输入图片描述

答案1

要阻止正常 WAN 上客户端的所有出站流量,可以使用 nvram 变量get wan_iface

IPV4_WAN=$(nvram get wan_iface)
iptables -I FORWARD -s 192.168.x.x/24 -o "$IPV4_WAN" -j DROP

您需要定义特定的 IPv4 子网,注意不要阻止整个 LAN 范围!

这将阻止超出路由器的任何出站流量,当不在 VPN 接口上时,您可以通过对任何外部 IPv4 地址执行确认traceroute,您会发现在第一次跳转后流量就会下降。

对于您的特定 IPv4 客户端,我有点困惑。您不能为要访问 VPN 的客户端创建一个 IPv4 子网,然后根据范围确保该192.168.1.50客户端不在该子网内吗?然后只需添加一条ACCEPT规则以允许它正常使用 WAN?

iptables -I FORWARD -s 192.168.1.50 -o "$IPV4_WAN" -j ACCEPT

答案2

有人在DD-WRT 论坛帮助我以最佳(最简单的)方式解决了这个问题。

基于策略的路由是解决选择性 VPN 隧道问题的正确方法。这是您指定 OpenVPN 连接详细信息的字段之一。您必须在此处输入您想要通过 VPN 的设备。请注意,由于 DD-WRT 中的一个错误,路由器本身的 IP 不能出现在此列表中。

因此我进行了如下设置:

  • DHCP 提供 1 到 127。
  • 我想要使​​用 VPN 的所有设备都分配有静态 IP >127
  • 不应通过 VPN 的设备应获取静态 IP <128 或仅接收 DHCP IP,该 IP 将小于 128
  • 基于策略的路由CIDR 为 192.168.1.128/25(这意味着将所有 IP > 127 的设备置于 VPN 中

现在来谈谈问题的第二部分,即当 VPN 关闭或失败时,拒绝对应处于 VPN 状态的设备的 WAN 访问可以通过在保存防火墙部分:

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

关于上述命令有两点需要注意:

  1. 它使用REJECT而不是DROP因为前者比后者更友好一些。DROP不响应并且需要客户端超时,这可能会让用户感到烦恼。 相反,REJECT会导致客户端立即退出。
  2. 检查的连接状态为NEW。通过检查 NEW,我们可以阻止这些设备启动出站连接,但不会阻止它们被远程访问并通过 WAN 发送回复(至少在 VPN 关闭时)。如果您想阻止远程访问,也可以--state NEW从这些规则中删除。

相关内容