Linux

ip6tables 阻止輸出流量

  • November 12, 2014

我的 OpenVZ VPS 阻止了出站 IPv6 流量,但正確過濾了入站 IPv6 流量。

下面是我的 ip6tables-restore 腳本。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
-A INPUT -p udp -m udp --dport 51413 -j ACCEPT
-A INPUT -m limit --limit 5/min
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT

ICMPv6 流量仍然能夠通過入站和出站。

當我使用 刷新這些規則時-F,出站流量正常。

我在這裡想念什麼?

編輯:似乎 ip6tables 將 ESTABLISHED 數據包標記為無效。因此,出站流量實際上並未被阻止。回複數據包不允許再次入站,因此看起來像是被阻止的出站流量。允許 INVALID 數據包入站解決了出站問題,但也使入站過濾器無用。

您使用的是哪個版本的核心,舊版本在 IPv6 的 netfilter 中沒有 conntrack 狀態防火牆支持,因此允許 RELATED、ESTABLISHED 流量的規則不起作用,您需要允許!–syn -dport 1024:65535 和 udp 流量。

您可能需要在允許流量時指定狀態模組,例如這裡是來自 RHEL6 主機的配置,它確實有效。

ip6tables -t filter -F INPUT
ip6tables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -t filter -A INPUT -p ipv6-icmp -j ACCEPT
ip6tables -t filter -A INPUT -i lo -j ACCEPT
ip6tables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
ip6tables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
ip6tables -t filter -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
ip6tables -t filter -A INPUT -j LOG --log-prefix=v6_input_deny --log-level=4
ip6tables -t filter -A INPUT -j REJECT --reject-with icmp6-adm-prohibited

引用自:https://serverfault.com/questions/285388