我有一个 WireGuard VPN 服务器。所有客户端都从其wg0
接口连接到任何地方。我需要阻止来自此接口的所有流量(LAN IP 地址范围除外)的互联网访问。同时,主机应该可以访问任何地方。我还需要阻止客户端之间的流量。我该怎么做?我想我需要配置PostUp
和PostDown
配置值,但我没有足够的经验来正确做到这一点。我当前的设置如下:
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
我应该在这里添加什么才能正确配置 iptables 呢?
PS:我知道在客户端上配置AllowedIPs
设置的选项。但问题是,如果客户端将此设置更改为0.0.0.0/0
,则所有流量都将通过隧道。但我需要在服务器级别阻止这种可能性。
您至少需要以下内容(如果服务器的 WireGuard 接口名为
wg0
,并且 LAN 地址范围为192.168.200.0/24
):这将服务器的防火墙配置为:
wg0
)。192.168.200.0/24
)。但是,一旦您开始为服务器构建防火墙规则集,您可能会发现在一个地方定义所有防火墙规则并在服务器启动时运行它们一次会更方便——而不是通过 WireGuard 启动/关闭脚本临时添加和删除它们。此外,您可能希望进一步锁定对 WireGuard 服务器的网络访问(或对哪些 WireGuard 客户端可以访问 LAN 上的哪些服务实施进一步限制)。
例如,如果您从 Arch Linux wiki 中的简单状态防火墙iptables 规则集开始,则可以使用如下规则集来锁定 WireGuard 服务器以阻止除其 WireGuard 端口(UDP 端口 )之外的访问,并阻止转发除从其 WireGuard 接口( )到其 LAN( )
51820
之外的新连接:wg0
192.168.200.0/24
另一个示例是如何设置 WireGuard Jumphost文章中的 nftables 规则集,它锁定 WireGuard 服务器,以便它阻止除其 WireGuard 端口之外的网络访问,并限制特定的 WireGuard 客户端只能访问其 LAN 上的特定网络服务。