jmc*_*han 2 linux firewall iptables ipv6
我的 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
Run Code Online (Sandbox Code Playgroud)
ICMPv6 流量仍然能够通过入站和出站。
当我使用 刷新这些规则时-F,出站流量正常。
我在这里缺少什么?
编辑:看来 ip6tables 将 ESTABLISHED 数据包标记为 INVALID。因此,出站流量实际上并未被阻止。回复数据包不允许再次入站,因此看起来像阻塞的出站流量。允许 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3168 次 |
| 最近记录: |