当 IPv6 前缀是动态时,是否允许入站 IPv6 流量到主机和端口?

当 IPv6 前缀是动态时,是否允许入站 IPv6 流量到主机和端口?

使用 IPv4,您可以为主机提供 LAN 上的静态本地 IP 地址,并使用防火墙/路由器上的防火墙规则将网络使用的(可能是动态的)面向 Internet 的 IP 上的端口转发到特定主机上的端口,使用主机的静态 LAN IPv4 地址作为在防火墙规则中识别主机的稳定方式。

但是使用 IPv6,每个主机都使用真正的可路由 Internet IP,因此主机的传入流量已经发送到该主机,无需 NAT。但您仍然需要能够编写防火墙规则,规定应允许发送到某个特定主机和端口的传入流量,同时阻止发送到其他主机或端口的流量。

但是,如果网络分配 IPv6 地址的前缀是动态的,您如何在防火墙规则中引用特定主机以允许流量到达它?您不能只允许流量到达其 IPv6 地址,因为下周它将有一个带有不同前缀的 IPv6 地址,因为 ISP 将为网络分配一个不同的前缀。

那么,您如何实际配置防火墙以允许某个端口上的入站流量进入该主机?其中ip6tables似乎有一个--dest按目的地匹配的选项,但这似乎只允许您输入整个地址,而不是例如地址的后缀,您可以确保该后缀对于主机保持静态。从手册页:

       [!] -s, --source address[/mask][,...]
              Source  specification.  Address can be either a network name, a
              hostname, a network IP address (with /mask), or a plain IP  ad‐
              dress. Hostnames will be resolved once only, before the rule is
              submitted to the kernel.  Please note that specifying any  name
              to  be resolved with a remote query such as DNS is a really bad
              idea.  The mask can be either an ipv4 network mask  (for  ipta‐
              bles)  or  a  plain number, specifying the number of 1's at the
              left side of the network mask.  Thus, an iptables mask of 24 is
              equivalent to 255.255.255.0.  A "!" argument before the address
              specification inverts the sense of the address. The flag  --src
              is  an alias for this option.  Multiple addresses can be speci‐
              fied, but this will expand to multiple rules (when adding  with
              -A), or will cause multiple rules to be deleted (with -D).

       [!] -d, --destination address[/mask][,...]
              Destination  specification.   See  the  description  of  the -s
              (source) flag for a detailed description of  the  syntax.   The
              flag --dst is an alias for this option.

有没有办法处理这个问题ip6tables?是否有其他层ip6tables可以生成随着网络重新编号而变化的规则,而这些规则实际上每个人都在使用?是否有某种ip6tables插件可以让我匹配即使网络编号发生变化也会流向特定主机的流量?其他操作系统防火墙是否以不同的方式处理此问题?

答案1

ip6tables接受地址的位掩码。与iptablesIPv4 不同,这些位不一定全部位于地址的开头,因此类似下面的代码应该可以正常工作:

ip6tables -A INPUT -d ::1234:56ff:fe78:90ab/::ffff:ffff:ffff:ffff -j ACCEPT

这将使得 ip6tables 接受所有发往以 结尾的 IPv6 地址的数据包::1234:56ff:fe78:90ab,无论前缀是什么。

相关内容