![如果我仅使用 iptables,是否还需要为 ipv6 设置另一条 iptables 规则?](https://linux22.com/image/1118566/%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%85%E4%BD%BF%E7%94%A8%20iptables%EF%BC%8C%E6%98%AF%E5%90%A6%E8%BF%98%E9%9C%80%E8%A6%81%E4%B8%BA%20ipv6%20%E8%AE%BE%E7%BD%AE%E5%8F%A6%E4%B8%80%E6%9D%A1%20iptables%20%E8%A7%84%E5%88%99%EF%BC%9F.png)
假设我在我的 Linux 服务器上使用 iptables 设置了防火墙,这样我只接受端口 22 和端口 80 的流量,并阻止对所有其他端口的访问。
这些规则是否仅在客户端计算机使用 IPv4 地址时才有效?因此,如果使用 ipv6 地址,客户端可以访问我不希望它们访问的端口?(即端口 22 和端口 80 以外的端口)
答案1
iptables
适用于 IPv4,但不适用于 IPv6。 ip6tables
是等效的 IPv6 防火墙,并且与一起安装iptables
。
但归根结底,iptables
适用于 IPv4 连接,也ip6tables
适用于 IPv6 连接。如果您希望您的iptables
规则也适用于 IPv6,您ip6tables
也必须将它们添加到 IPv6。
iptables
如果您尝试在 中复制规则集ip6tables
,则并非所有可以移植的规则都iptables
可以整齐地移植到ip6tables
,但大多数规则都可以。
请参阅手册页ip6tables
如果你想确保你使用的命令iptables
能够顺利地移植过来。
如果您愿意,我们可以帮助您创建等效ip6tables
规则集以匹配您的iptables
规则,前提是您提供防火墙规则列表(删除任何可以识别系统本身的信息)。否则,我们只能回答您的一般问题。
答案2
正如其他人已经告诉您的那样,IPv4 和 IPv6 有不同的防火墙表。您可以像为 IPv4 设置规则一样为 IPv6 设置规则,但如果您不了解 IPv6,则很有可能会搞砸。例如,您不能放弃 IPv6 ICMP
,因为那里有必要的握手部分。例如告诉发送者帧太大等。如果没有这些东西,IPv6 可能会停止为某些用户服务。
因此强烈建议将或与ufw
包一起使用。shorewall6
shorewall
前端支持 IPv4 和 IPv6,在具有一个或两个接口iptables
的ufw
服务器上运行良好,现在还支持简单路由(用作路由器或网关)。它还支持应用程序和评论,因此请使用它们,以便更轻松地回顾并查看您所做的工作。
但是如果你路由流量,你可能需要更好的东西,比如之前手动添加一些使用和shorewall
转发的规则。iptables
ip6tables
不要忘记,接口上可以有多个 IPv6 地址。有些仅是本地链接,有些是全局静态和动态的。因此,您应该相应地设置规则,并且服务器只监听正确的地址。
再次强调,iptable
直接使用就像在汇编程序中编码一样。这很有趣,但如果您不了解所有相关的 RFC,则不应这样做,而应使用一些前端。
答案3
在 2021 年,您可以创建一个包含用于 IPv4 和 IPv6 的规则的文件,并使用前缀-4
和-6
来制定对两种协议有不同作用的规则:
## Custom rules
## Based on https://gist.github.com/jirutka/3742890
*filter
#
# Base policy
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#
# Don't attempt to firewall internal traffic on the loopback device.
-A INPUT -i lo -j ACCEPT
-A INPUT -s localhost -j ACCEPT
#
# Continue connections that are already established or related to an established
# connection.
-4 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-6 -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#
# and so on ...
或者,您可以将其存储为文件,例如并/etc/iptables/rules.combined
为和创建符号链接rules.v4
:rules.v6
cd /etc/iptables
sudo ln -s rules.combined rules.v4
sudo ln -s rules.combined rules.v6