You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WireGuard服务器端限制客户端仅访问局域网、禁止互联网访问及客户端间通信?

如何在WireGuard服务器端限制客户端仅访问局域网、禁止互联网访问及客户端间通信?

没问题,我帮你梳理清楚怎么配置!你要的是在服务器端强制限制客户端权限,不管客户端私自修改AllowedIPs都没用,对吧?咱们直接修改WireGuard配置里的PostUp和PostDown规则就能实现,下面是完整的配置方案,我会逐条给你解释:

# 替换成你的实际LAN网段(比如192.168.0.0/24、10.0.0.0/8等)
LAN_SUBNET="192.168.1.0/24"
# 替换成你的WireGuard监听端口(默认是51820)
WG_PORT="51820"

PostUp = \
  # 允许WireGuard握手流量进入服务器
  iptables -A INPUT -p udp --dport $WG_PORT -j ACCEPT; \
  # 禁止客户端之间通过wg0接口通信
  iptables -A FORWARD -i wg0 -o wg0 -j DROP; \
  # 允许客户端流量转发到LAN网段
  iptables -A FORWARD -i wg0 -d $LAN_SUBNET -j ACCEPT; \
  # 允许LAN网段的流量回传给客户端
  iptables -A FORWARD -o wg0 -s $LAN_SUBNET -j ACCEPT; \
  # 禁止客户端的所有其他转发流量(包括访问互联网)
  iptables -A FORWARD -i wg0 -j DROP;

PostDown = \
  # 对应删除PostUp添加的规则
  iptables -D INPUT -p udp --dport $WG_PORT -j ACCEPT; \
  iptables -D FORWARD -i wg0 -o wg0 -j DROP; \
  iptables -D FORWARD -i wg0 -d $LAN_SUBNET -j ACCEPT; \
  iptables -D FORWARD -o wg0 -s $LAN_SUBNET -j ACCEPT; \
  iptables -D FORWARD -i wg0 -j DROP;

规则详细解释

  • 允许WireGuard握手流量:确保客户端能正常和服务器建立WireGuard连接,这是基础,不能少。
  • 禁止客户端间通信:直接阻断wg0接口内部的转发流量,让客户端互相看不到对方。
  • 允许客户端访问LAN:只放行客户端到你的局域网网段的流量,这是你要的核心权限。
  • 允许LAN回传流量:让局域网里的设备能正常响应客户端的请求(比如客户端ping局域网电脑,对方能回包)。
  • 禁止其他客户端转发流量:兜底规则,挡住客户端所有没被上面允许的转发请求,包括访问互联网的流量,彻底封死客户端绕开限制的可能。

额外注意事项

  1. 开启IP转发:服务器必须开启IPv4转发,否则转发规则根本不起作用。执行下面的命令临时开启:

    sysctl net.ipv4.ip_forward=1
    

    要永久生效的话,编辑/etc/sysctl.conf,把net.ipv4.ip_forward=1这行的注释去掉,然后执行sysctl -p生效。

  2. 删除原有的MASQUERADE规则:你原来的PostUp里的MASQUERADE是用来给客户端流量做NAT转发到互联网的,现在我们要禁止客户端访问互联网,所以直接把那两行删掉就行,留着反而没用。

  3. 替换实际参数:一定要把配置里的LAN_SUBNET换成你自己的局域网网段,WG_PORT换成你的WireGuard实际监听端口,不然规则会失效。

备注:内容来源于stack exchange,提问作者Alexander Pravdin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:15:22