我正在编写iplock工具,以帮助我安装Linux防火墙。在大多数情况下,我目前的策略(因为我还没有经常使用IPv6 )是阻止一切IPv6 (“简单”)。
我想将所有面向公众的服务切换到使用IPv6。因此,要做到这一点,我首先需要一个好的防火墙计划。
我知道我可以在一个IPv4地址中映射一个IPv6地址(换句话说,IPv6包括所有IPv4地址)。下面是IPv4在IPv6中的映射方式:
0000:0000:0000:0000:0000:FFFF:xxxx:xxxx我想知道的是,这样的IPv6地址是通过iptables规则(IPv4)还是通过ip6tables (IPv6)路由的?由于它将通过一个IPv6地址,通过ip6tables运行它是有意义的,但同时,我认为它应该通过iptables,因为那个特殊的IPv6地址应该只是一个封装。我在iptables(8)和ip6tables(8)手册页面中找不到任何关于这类信息的信息。
发布于 2022-09-18 20:24:02
我发现了一个这里评论
您不能使用IPv4 4映射地址(::ffff:0:0/96)作为源地址或目标地址...。
这些地址只是用于允许在一个IPv4中定义一个IPv6地址。这两者都是不同的协议,因此您不能通过IPv4接口发送IPv6通信。
但是,您可以使用NAT64,并允许IPv4 6专用设备与IPv4 4专用设备通信。但这是一个完全不同的讨论。
因此,这个问题的答案是:不可能通过::ffff:x.x.x.x地址通过IPv6发送一个数据包。这些地址没有路由,所以它们失败了。因此,在iptables或ip6tables中都无法接收这样的信息。
若要使100%声明您不接受此类无效数据包,您可以使用以下规则安全地对其进行DROP:
ip6tables -A INPUT --source ::ffff:0:0/96 -j DROP但这是不应该发生的,所以可能没有必要封锁你的防火墙。
https://security.stackexchange.com/questions/264699
复制相似问题