![OpenVPN 的 Linux IP 转发-正确的防火墙设置?](https://linux22.com/image/488022/OpenVPN%20%E7%9A%84%20Linux%20IP%20%E8%BD%AC%E5%8F%91-%E6%AD%A3%E7%A1%AE%E7%9A%84%E9%98%B2%E7%81%AB%E5%A2%99%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
我在 Linux 机器上运行 OpenVPN。VPN 服务器有一个公共 IP 地址 (xxxx),VPN 客户端在“tun”设备上分配了 10.8.0.0\24 中的地址。我有一个 IPTables 规则,用于将 10.8.0.0\24 伪装成 NAT 到公共 IP 地址。
为了使 VPN 服务器运行,我必须启用 IP 转发(因此我设置了 net.ipv4.conf.default.forwarding=1)。
... 换句话说,它正是 OpenVPN 教程所要求做的,没有任何花哨的技巧。
这一切都有效,但我担心启用转发部分。我思考该机器现在会将数据包从任意 IP 地址转发到任意 IP 地址,这似乎不太合适。由于它有一个可公开访问的 IP,因此这尤其糟糕。
是否有任何防火墙规则建议来限制不需要的转发行为?我认为任何答案都将是 FORWARD 链中的一个或多个 IPTables 规则,但这就是我陷入困境的地方。
谢谢!
答案1
如果您将这些规则用于转发表,那么就没问题了。
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT
您可以将规则放入文件 /etc/sysconfig/iptables 中并重新启动防火墙。对于命令行试用,请先执行
iptables -F
删除转发流量的默认拒绝,并在上述三个规则前添加“iptables”。
答案2
这是我在 openvpn 网关上设置的一部分:
iptables -A FORWARD -i tun0 -o tun0 -j ACCEPT # vpn to vpn
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT # vpn to ethernet
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT # ethernet to vpn
请注意,这只是一个子集;规则的其余部分执行标准 NAT 操作。