我最近在家里获得了 IPv6 连接,现在我想仅允许通过 LAN 通过 IPv6 连接到我的家庭服务器。诀窍在于分配给服务器的 IPv6 地址/前缀是动态的。有没有办法编写一条仅允许来自直接连接的子网的 UFW 规则?
答案1
请记住,没有 IPv6“本地范围” - 每个 IPv6“本地范围”都是其自己的(至少)/64 段 v6 地址,具有明确定义的前缀。因此,您收到的任何“私有范围”地址都将特定于路由器为您设置的子网,而不是您拥有的外部 v6 地址(路由器内部有逻辑可以自动设置子网,但当您使用高级防火墙、路由器、交换机等进行企业级路由时,必须手动配置和设置 IPv6。
当您添加到等式中时,您很可能(并且经常)一直有一个不断变化的子网,如果不接受所有 IPv6 入站连接,就无法动态地接受它们 - 至少在消费级网络设置上是这样(使用更复杂和更昂贵的防火墙设备,您可以明确进行 VLAN 分离以防止事物与外部通信并仅接受内部 v6,但您无法在消费级路由器技术上做到这一点)。
此外,防火墙规则的设计(以及ufw 使用的ufw
底层iptables
技术)是为了netfilter
具体的规则(例如ALLOW aaaa:bbbb:cccc:dddd::dead:beef INBOUND TO dddd:eeee:ffff:0000::dead:beef PORT 22/tcp
(显然不是规则,而只是一个例子))并且如果您在不同的 v6 子网上总是有不同的地址(无论是内部还是外部,但尤其是内部),它会破坏防火墙对这些类型的规则的要求。
因此,您需要了解您将获得的所有子网,并ufw
为每个子网添加一条规则。如果该子网总是在变化,而您不知道将获得哪个子网,那么您无法在任何设置中可靠地创建防火墙规则,该规则可以在动态不断变化的基础上完成您想要完成的任务。
这也适用于家庭端口转发 - 除非内部 IP 地址(v4 或 v6)不会改变,否则您无法可靠地设置端口转发。(只要您在静态设置中设置内部 v6,路由器就会自行透明地处理来自互联网的入站,但您无法保证在没有更多耗时的网络配置和设置的情况下会发生这种情况,并且可能需要更多昂贵的企业级设备)
答案2
这是一个老问题,但谷歌让我来到这里,所以我认为值得注意的是,你可以使用以下命令添加 IPv6 本地链接范围:
ufw allow from fe80::/64
如果您通过 LAN 连接,则应使用链路本地地址,而不是全局 IPv6 地址。