iptables - 如何限制仅对网络上的本地设备进行访问?

iptables - 如何限制仅对网络上的本地设备进行访问?

我曾在 SuperUser 上问过这个问题,但唯一的回复来自一个我无法理解的人

我在 Debian 12 主机上运行 WireGuard VPN 服务器,没有任何问题,监听特定的 UDP 端口,一切运行正常。我可以在 5G 等网络上通过手机 WireGuard 客户端进行连接,一切运行正常。

但是我想暂时允许某人访问该服务器,但限制他们只能访问我本地网络上的设备 192.168.0.x - 一旦他们连接到 VPN,就无法访​​问公共互联网,因此他们无法访问一般网站等。只需根据需要访问 192.168.0.x 上的设备

我只是一个家庭新手用户,尝试了以下一组命令:

iptables -I OUTPUT -d 192.168.0.0/16 -j ACCEPT; iptables -P OUTPUT DROP
iptables -A INPUT -p udp -m udp --dport ##### -j ACCEPT
iptables -A INPUT -p udp -m udp --sport ##### -j ACCEPT

其中 ##### 是与外界通信的正确监听端口。在主机上,通常似乎可以按预期工作 - 我可以与所有 192.168.0.0 设备通信,并且无法与该范围之外的任何设备通信 - 唯一的问题是,我也无法再通过 5G 连接到 ######,这是我之前工作的 VPN 监听端口。

任何帮助都将不胜感激,谢谢!

编辑:

另一个用户告诉我尝试 FORWARD,所以我尝试了这个但仍然没有变化,当从外部世界尝试时守护进程没有响应

iptables -I OUTPUT -d 192.168.0.0/16 -j ACCEPT; iptables -P OUTPUT DROP
iptables -A FORWARD -p udp -m udp --sport ##### -j ACCEPT
iptables -A FORWARD -p udp -m udp --dport ##### -j ACCEPT

答案1

我认为以下是正确的

iptables -A FORWARD -s x.x.x.x -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -s x.x.x.x -j DROP

x.x.x.x您为受限客户端分配的地址在哪里,该地址由您的 wireguard 服务器上的 allowedips 强制执行。

答案2

您可以访问本地网络内的设备,但无法访问互联网

iptables -I OUTPUT -d 192.168.0.0/16 -j ACCEPT
iptables -P OUTPUT DROP

此规则允许端口上的 WireGuard 流量传入

iptables -A INPUT -p udp --dport #### -j ACCEPT

相关内容