iptables只在服务器启动时阻止OpenVPN

我目前正在Linode的多个数据中心之间build立OpenVPN。 OpenVPN的设置工作非常好,现在我正专注于设置防火墙,以便我的公共和私有IP由Linode提供保护。

不过,我似乎遇到了这个问题。 在我的VPN服务器上,当我设置我的防火墙并重新启动VPN服务器时,防火墙会在启动时自动加载,但是,我的VPN客户端似乎都无法ping通VPN服务器(位于10.8.0.1 )。 当我在VPN服务器( iptables -F )上closures防火墙时,客户端能够ping VPN服务器。 当我然后在服务器上恢复防火墙( iptables-restore < /etc/iptables.up.rules )时,客户端仍然能够ping VPN服务器。

我会假设防火墙要么阻止或不,我似乎无法弄清楚为什么会发生这种行为。

这些是我在VPN服务器上的iptables:

 *filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You can modify this to only allow certain traffic -A OUTPUT -j ACCEPT # Allows SSH connections # # THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE # -A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy -A INPUT -j REJECT -A FORWARD -j REJECT # prevent attacks on port 22. -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 90 --hitcount 4 -j DROP # OpenVPN -A INPUT -i eth0:0 -m state --state NEW -p udp --dport 1194 -j ACCEPT -A INPUT -i eth0:1 -m state --state NEW -p udp --dport 1194 -j ACCEPT # Allow TUN interface connections to OpenVPN server -A INPUT -i tun+ -j ACCEPT # Allow TUN interface connections to be forwarded through other interfaces -A FORWARD -i tun+ -j ACCEPT -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT # NAT the VPN client traffic to the internet *nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE COMMIT 

防火墙不会阻塞已build立的VPN连接,因为您在顶部附近有以下规则:

 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

这意味着已经处于ESTABLISHED状态的连接(从netfilter的conntrack模块的angular度来看)将继续通过。

另外,很可能你的INPUT链有一个“ ACCEPT政策” 这就是为什么iptables -F打开你的防火墙,允许OpenVPN连接。

请注意,即使netfilter规则被刷新,连接仍然被跟踪。

总之,发生的事情是:

  1. 防火墙阻止OpenVPN连接尝试
  2. 规则被刷新
  3. OpenVPN可以连接==>状态转换到ESTABLISHED
  4. 规则恢复了
  5. OpenVPNstream量可以恢复,因为状态已经ESTABLISHED