我的OpenVZ VPS阻塞出站IPv6流量,但正确地过滤入站IPv6流量。
下面是我的ip6表-还原脚本。
*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
COMMITICMPv6流量仍然能够通过入站和出站。
当我使用-F刷新这些规则时,出站流量很好。
我在这里错过了什么?
编辑:看来ip6tables正在将已建立的数据包标记为无效。因此,出站通信实际上并没有被阻塞。应答数据包不允许再次入站,因此出现阻塞的出站通信量。允许无效数据包入站解决了出站问题,但也使入站筛选器失效。
发布于 2011-06-29 18:23:08
您使用的是哪个版本的内核,旧版本在IPv6的netfilter中没有连接跟踪有状态防火墙支持,因此允许相关的、已建立的通信量的规则将无法工作,您需要允许!-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发布于 2014-11-11 22:09:01
看来您正在使用CentOS5或另一个RHEL5变体。
Netfilter在RHEL5 5中的连接跟踪中断,永远不会被修复。因此,典型的iptable规则(如-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT )将无法工作,ip6table/connfilter只会简单地认为它们“无效”。在下面的示例中,请注意Netfilter如何错误地将有效数据包标记为“无效”而不是“已建立”:
# ip6tables-save |grep state
-A INPUT -s ::/0 -d ::/0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s ::/0 -d ::/0 -m state --state INVALID -j ACCEPT
# curl -6 www.google.com >/dev/null 2>&1
# ip6tables --list --numeric -v
...
Chain INPUT (2 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all lo * ::/0 ::/0
3 208 ACCEPT icmpv6 * * ::/0 ::/0
0 0 ACCEPT ah * * ::/0 ::/0
0 0 ACCEPT all * * ::/0 ::/0 state RELATED,ESTABLISHED
61 65747 ACCEPT all * * ::/0 ::/0 state INVALID 如果您为tcpdump流量运行IPv6,您将看到来自远程主机的'SYN‘数据包到远程主机,’SYN‘响应包。此时,对于默认的ip6tables,数据包将不匹配任何现有规则,因此将属于最后一个规则- -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited。
为什么这些数据包是无效的?它是那个版本的红帽中的一个bug,而且从来没有被修复过。
作为一种解决方法,您可以尝试忽略入站SYN,它提示连接跟踪问题:
-A INPUT -s ::/0 -d ::/0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp ! --syn -s 2001:1:1:1::/48 -j ACCEPT另外,有些人还可以接受UDP数据包:
-A RH-Firewall-1-INPUT -p udp -m udp但在某种程度上,这开始看起来像是一种安全隐患。如果你接受所有这样的流量,为什么还要用防火墙呢?
发布于 2011-06-29 18:11:19
您必须接受tcp、sctp和udp流量。
-A OUTPUT -p tcp -j ACCEPT
-A OUTPUT -p udp -j ACCEPT
-A OUTPUT -p sctp -j ACCEPThttps://serverfault.com/questions/285388
复制相似问题