我已承担了企业局域网中 IPv6 网络的配置。局域网中的所有主机都有一个 VLAN。我使用的是 pfsense 2.3.4 软件。
我现在必须弄清楚 LAN 中的地址分布。这些地址不应允许识别来自全球网络的任何主机,因此有两个选项。使用本地地址的 NATv6 或使用地址轮换的全局地址,但我读到过 NATv6 不是一个好选择。我可以使用全局地址设置地址轮换,但这会阻止我创建基于 IP 地址的防火墙规则,因为地址会一直变化。
有没有办法可以为每个主机分配一个 IPv6 地址范围,以便在该范围内轮换它们的地址,这样我仍然可以为这些范围中的每一个编写防火墙规则(而不是静态地址)并(在某种程度上)隐藏主机的公共地址来自全局查看者?这在 pfsense 中可行吗?
我还可以为办公室中的每个不同角色创建一个 VLAN,并根据每个角色轮换全局地址,并根据每个角色创建防火墙规则,但这不是一种选择。
答案1
在过去的几天里,我又做了一些调整和修补,并取得了良好的效果。
因此我将写一份关于我所做工作的总结。
刷新主题:我想在我的 pfsense 盒的单个 (LAN) 接口后面创建一个网络。网络的要求是为网络中的工作站提供有效的 ipv6 地址。网络不应允许全局网络识别此网络上的设备,但应提供基于此网络中的地址编写防火墙规则的选项。我希望此网络中的所有主机都能够“匿名”浏览网络并保持身份不被识别,并且我希望此网络中的所有主机对直接连接到我的 pfsense 盒的其他网络都有访问限制。因此,我需要识别每个主机并为每个主机(或每个员工角色)编写防火墙规则,以限制对内部资源的某些访问。
据我所知,有三种方法可以实现这一点。
使用 ULA(唯一本地地址)进行内部通信并对静态 ULA 进行访问限制,但使用 NAT66 进行全局通信,保护主机的身份。这被认为是不好的。
在网络中为每个员工角色(访问级别)设置多个 VLAN。这样,防火墙规则就可以基于忽略地址的 VLAN 编写,并且每个主机都可以拥有用于全局和本地通信的 GUA(全局唯一地址)。可以使用临时隐私地址来帮助保护身份免受全局网络攻击。这不是一个选择,因为我想用单个 VLAN 来实现这一点。
仍然保留一个带有 GUA 的 VLAN,但为每个主机分配一个特定的地址范围,主机可以在其中轮换地址。这样我就可以根据这些范围编写防火墙规则,并使用轮换地址保护身份。这就是我想要实现的,但发现在 pfsense 中是不可能的(与一些商业解决方案相反)。
现在我找到了实现这一目标的第四种方法。
- LAN 中的每个主机都有 2 个不同的网络地址:一个 ULA 和一个 GUA。实际上可以有多个 GUA,因为 GUA 是自动生成的。我可以通过向网络中的主机通告全局前缀来让路由器通告处理 GUA。然后,这些 GUA 将用于访问全球网络,主机可以使用隐私(轮换)地址,以便它们在全球网络中保持不可识别。至于 ULA:DHCPv6 服务器将负责这些地址,为每个主机提供每个 DUID LUA 的统计信息。这些地址可用于提到的内部通信,并基于它们编写防火墙规则。为了实现这一点,我需要每个主机在这个本地网络中只有一个地址,所以我必须禁用此前缀的 RA(路由器通告)。默认情况下,pfsense 会生成 /var/etc/radvd.conf 配置文件,其中包含所有 RA 列出的前缀,并且始终将 DHCPv6 前缀添加到 RA。这样,所有主机都会获得多个地址,这将导致它们使用隐私地址作为源,而我的防火墙规则将毫无用处,因此我从 /etc/inc/services/inc 文件中注释掉了为 radvd.conf 文件生成 DHCPv6 前缀子句的部分,DHCP 网络不再通过路由器通告进行通告。这样,每个主机在这个本地前缀内只有一个地址。除此之外,我还必须确保主机始终使用 ULA 访问内部资源,使用 GUA 访问全局资源,这要归功于 RFC6724 中源地址选择协议中的第二条规则(https://www.rfc-editor.org/rfc/rfc6724),表示将优先使用与目标具有相同范围(全局、本地、链接本地)的源地址。多亏了这一点,并且内部资源也具有本地地址,我才能让一切按我想要的方式运行。唯一的办法是更改 /etc/inc/services.inc 文件以注释掉该部分。此外,我还必须为 LAN 接口设置 IP 别名类型虚拟 IP,其地址来自网络的第二个前缀。因此,一个地址设置为接口(在我的情况下是本地接口),另一个(全局地址)设置为虚拟 IP。
因此,第四种方式按预期工作,并且不需要更多的 VLAN 或 NAT66 或 pfSense 不提供的功能。