OpenVPN的Linux IP转发 – 正确的防火墙设置?

我有一台Linux机器上运行的OpenVPN。 VPN服务器具有公共IP地址(xxxx),VPN客户端在10.8.0.0 \ 24的“tun”设备上分配地址。 我有一个IP地址规则NAT伪装10.8.0.0 \ 24公共IP地址。

为了让VPN服务器运行,我必须启用IP转发(所以我设置net.ipv4.conf.default.forwarding = 1)。

换句话说,这正是OpenVPN教程所要做的,没有花哨的技巧。

这一切工作,但我担心启用转发部分。 我认为机器现在将把数据包从任何IP地址转发到任何IP地址,这看起来不合适。 由于它具有可公开访问的IP,所以这一点尤其糟糕。

是否有任何防火墙规则build议来限制不需要的转发行为? 我想任何答案都是FORWARD链中的一个或多个IPTables规则,但这是我卡住的地方。

谢谢!

如果你使用这些规则转发表,你应该没问题。

-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 

删除转发stream量的默认拒绝,并在上述三个规则之前添加“iptables”。

以下是我在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标准的事情。