Iptables
Linux 路由器上的 IPv6 防火牆
我的 NAT 路由器上有 IPv6 隧道(he.net)。我還有一個簡單的防火牆和路由設置,允許路由器後面的主機使用 IPv6 地址空間。不幸的是,只有傳出連接和傳入 icmp 對這些主機有效。
#!/bin/bash PUBIF="he-ipv6" LOCIF="vmbr0" echo "Starting IPv6 firewall..." ip6tables -F ip6tables -X ip6tables -t mangle -F ip6tables -t mangle -X ip6tables -A INPUT -i lo -j ACCEPT ip6tables -A OUTPUT -o lo -j ACCEPT ip6tables -P INPUT DROP ip6tables -P OUTPUT DROP ip6tables -P FORWARD DROP ip6tables -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -m rt --rt-type 0 -j DROP ip6tables -A FORWARD -m rt --rt-type 0 -j DROP ip6tables -A OUTPUT -m rt --rt-type 0 -j DROP ip6tables -A INPUT -s fe80::/10 -j ACCEPT ip6tables -A OUTPUT -s fe80::/10 -j ACCEPT ip6tables -A INPUT -d ff00::/8 -j ACCEPT ip6tables -A OUTPUT -d ff00::/8 -j ACCEPT ip6tables -A INPUT -i $LOCIF -j ACCEPT ip6tables -A OUTPUT -o $LOCIF -j ACCEPT ip6tables -A FORWARD -i $LOCIF -o $PUBIF -j ACCEPT ip6tables -A FORWARD -i $PUBIF -o $LOCIF -p icmpv6 -j ACCEPT ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT ip6tables -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT ip6tables -A INPUT -i $PUBIF -p tcp --destination-port 65000 -j ACCEPT ip6tables -A INPUT -i $PUBIF -j LOG ip6tables -A INPUT -i $PUBIF -j DROP
我在這裡錯過了什麼?
您只允許 ICMP 向內!
ip6tables -A FORWARD -i $PUBIF -o $LOCIF -p icmpv6 -j ACCEPT
將其與之前允許所有流量向外的規則進行比較。
ip6tables -A FORWARD -i $LOCIF -o $PUBIF -j ACCEPT
順便說一句,這些規則是多餘的;自 2.6.25(2007 年左右)以來,Linux 核心已自動丟棄此流量。您可以安全地刪除它們。而且您應該重新評估您在其中找到它們的任何教程,因為它可能已經過時了。
ip6tables -A INPUT -m rt --rt-type 0 -j DROP ip6tables -A FORWARD -m rt --rt-type 0 -j DROP ip6tables -A OUTPUT -m rt --rt-type 0 -j DROP