语境
我成功整合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 服务器转发数据包依赖于:
- IP 转发
/etc/sysctl.conf
(Cf我的脚本) - 添加了以下规则(-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
顺便提一下,我不会在PostUp
和PostDown
钩子中添加和删除规则,当接口不再存在时删除它们没有用,因为在这种情况下它们什么也不做。只要一直留在那里,这样不容易出错,也更容易管理。