清洁初始规则

清洁初始规则

我使用以下方式设置了 OpenVPN 服务器openvpn-安装。我希望客户端能够连接到 VPN 服务器,但任何针对互联网而不是 VPN 本地网络的流量都应该被阻止。

我已经看到许多解决方案提议添加push命令来server.conf要求客户端默认使用自己的网络进行互联网流量,但是这些请求可能会被客户端忽略 - 这不是我想要的。

我只希望 VPN 客户端能够访问本地 VPN 网络(在10.8.0.0/24),VPN 服务器应拒绝所有其他流量,并且客户端应使用自己的网络。

如何强制阻止来自 VPN 客户端的互联网流量?

答案1

这可以通过使用来实现iptables,通过阻止从 OpenVPN 网络接口到具有互联网访问的网络接口的流量。

openvpn-安装创建一些iptables配置文件来为您管理规则。

以下说明假定:

  • tun0是 OpenVPN 的网络接口
  • eth0是可以访问互联网的网络接口

清洁初始规则

首先,我们需要通过运行以下命令禁用 openvpn-install 加载的当前规则:

systemctl stop iptables-openvpn

配置文件

注意:使用DROP代替REJECT也是有效的,只是不会向 VPN 客户端返回错误。请参阅iptables 手册页了解更多信息。

添加 openvpn 规则.sh

在 中/etc/iptables/add-openvpn-rules.sh,将以下行从:

iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT

到:

iptables -I FORWARD 1 -i tun0 -o eth0 -j REJECT

rm-openvpn-规则.sh

在 中/etc/iptables/rm-openvpn-rules.sh,将以下行从:

iptables -D FORWARD -i tun0 -o eth0 -j ACCEPT

到:

iptables -D FORWARD -i tun0 -o eth0 -j REJECT

应用更改

运行以下命令,您的更改将被保存并生效:

systemctl start iptables-openvpn

分割隧道

然后,可以使用将路由推送到 VPN 客户端来请求它们通过自己的网络发送互联网流量。以下是我添加到 OpenVPN 文件中server.conf以实现此目的的行(我的 VPN 网络位于10.8.0.0/24):

push "route 10.8.0.0 255.255.255.0 vpn_gateway"
push "route 0.0.0.0 0.0.0.0 net_gateway"

相关内容