Iptables:如何允许仅从 wireguard NIC 转发到某些 IP

Iptables:如何允许仅从 wireguard NIC 转发到某些 IP

语境

我成功整合Wireguard在我的 LAN 中,这样我就可以从外部访问我的 NAS(192.168.1.45)。

|Router|     ===:5182=> |VPN server|        ====> |NAS|
192.168.1.254           192.168.1.21 (wlan0)      192.168.1.45
                        10.10.10.1 (wg0)

通过我的 VPN 服务器转发数据包依赖于:

  1. IP 转发/etc/sysctl.conf(Cf我的脚本
  2. 添加了以下规则(-A)当 wireguard 接口(WG0) 已上升。
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o $main_nic -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o $main_nic -j MASQUERADE

(这是我停止时 wireguard 执行的命令WG0

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o $main_nic -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o $main_nic -j MASQUERADE

需要

这很有效,但我该如何限制,以便通过此 VPN 入口点进入我的 LAN 的客户端只能访问 192.168.1.45,而不能访问其他 IP?它是否兼容IP 转发

理想情况下,如果这可以完全在张贴 发帖wireguard 的指令(独立于系统上的先前规则),这将是惊人的。尝试了一些,但让我们面对现实吧,我更像是一个开发人员,而不是网络管理员

答案1

当然可以,但不需要任意允许流量,只需确保它到达您期望的目标 IP 即可:

-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
-A FORWARD -i wg0 -d 192.168.1.45 -j ACCEPT

顺便提一下,我不会在PostUpPostDown钩子中添加和删除规则,当接口不再存在时删除它们没有用,因为在这种情况下它们什么也不做。只要一直留在那里,这样不容易出错,也更容易管理。

相关内容