如果我仅使用 iptables,是否还需要为 ipv6 设置另一条 iptables 规则?

如果我仅使用 iptables,是否还需要为 ipv6 设置另一条 iptables 规则?

假设我在我的 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包一起使用。shorewall6shorewall

前端支持 IPv4 和 IPv6,在具有一个或两个接口iptablesufw服务器上运行良好,现在还支持简单路由(用作路由器或网关)。它还支持应用程序和评论,因此请使用它们,以便更轻松地回顾并查看您所做的工作。

但是如果你路由流量,你可能需要更好的东西,比如之前手动添加一些使用和shorewall转发的规则。iptablesip6tables

不要忘记,接口上可以有多个 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.v4rules.v6

cd /etc/iptables
sudo ln -s rules.combined rules.v4
sudo ln -s rules.combined rules.v6

相关内容