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

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

我目前正在 Linode 上跨多个数据中心设置 OpenVPN。OpenVPN 设置运行良好,我现在专注于设置防火墙,以便保护 Linode 提供的公共和私有 IP。

但是,我似乎遇到了问题。在我的 VPN 服务器上,当我设置防火墙并重新启动 VPN 服务器时,防火墙会在启动时自动加载,但是,我的 VPN 客户端似乎都无法 ping VPN 服务器(位于10.8.0.1)。当我关闭 VPN 服务器上的防火墙(iptables -F)时,客户端能够 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

答案1

防火墙不会阻止已经建立 VPN 连接因为在顶部附近有以下规则:

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

这意味着,已经处于该ESTABLISHED状态的连接(从连接跟踪如果不指定 netfilter 模块,则该命令将一直通过。

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

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

概括起来,发生的事情是:

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

相关内容