Embedded 模式的 NAT64
Embedded 模式的 NAT64
网络需求
将 IPv4 内部服务器,发布到 IPv6 网络之中,同时将 IPv4 服务器的 IPv4 地址嵌入 IPv6 VIP 地址的最后 32 位中,允许用户通过 IPv6 来对其进行访问。
网络拓扑

Client 侧为 IPv6,Server 侧为 IPv4,FortiGate 做 NAT64 转换,将 IPv4 服务器的 IPv4 地址嵌入 IPv6 VIP 地址的最后 32 位中,使用 Client 访问 Server 的 IPv6 VIP 地址。
配置步骤
创建 VIP,选择类型为 IPv6,“外部 IP 地址/范围”填写 IPv6 VIP 地址,“映射到”选择 Use Embedded,这里会根据 IPv6 外部地址的最后 32 位二进制数字,计算出映射的 IPv4 地址,并显示在提示信息中,这里计算出的是 Server IPv4 10.10.12.1。

config firewall vip6 edit "NAT64_embedded" set extip 2100::a0a:c01 set nat66 disable set nat64 enable set add-nat64-route enable set embedded-ipv4-address enable next end可以看默认存在一个 naf.root 接口,用于处理 NAT64 流量,创建 VIP 完成后,如果开启了 add-nat64-route(默认开启),针对 naf.root 接口生成去往 VIP IPv6 地址的路由,关闭 add-nat64-route 后,该路由会消失。


创建 IPv4 Pool,配置地址池范围,配置地址池范围,注意不要和 port18 地址冲突,开启 NAT64 后,须填写为一个完整的 subnet(最小 32 位)的 IPv4 地址范围。

config firewall ippool edit "NAT64_embedded" set startip 10.10.200.0 set endip 10.10.200.127 set nat64 enable set add-nat64-route enable next end创建完成后,如果开启了 add-nat64-route(默认开启),可以看到生成了 IPv4 的 kernel 路由,针对 naf.root 接口生成去往 IPPool IPv4 地址的路由,IPPool 关闭 NAT64 或关闭 add-nat64-route 后,该路由会消失。
FortiGate # get router info kernel | grep naf tab=254 vf=0 scope=0 type=1 proto=11 prio=0 0.0.0.0/0.0.0.0/0->10.10.200.0/25 pref=0.0.0.0 gwy=0.0.0.0 dev=37(naf.root)创建防火墙策略,,在源地址中引用 IPv6 的 all,然后在目标地址中引用 VIP,在 IP 池配置中引用 IPPool。

config firewall policy edit 2 set name "NAT64" set srcintf "lan" set dstintf "port18" set action accept set nat64 enable set srcaddr "all" set dstaddr "all" set srcaddr6 "all" set dstaddr6 "NAT64" set schedule "always" set service "ALL" set ippool enable set poolname "NAT64" next end
结果验证
Client 访问 FortiGate 的 NAT64 VIP 地址 2100::a0a:c01,抓包查看 NAT64 过程,可以看到经过 naf.root 接口,目标地址被转换为 IPv6 的 extip 的最后 32 位二进制数字的 embedded IP 10.10.12.1。

debug flow IPv4/IPv6,可以看到 DNAT64 整个过程都需要经过 naf.root 接口处理。

在 FortiGate 查看 IPv6 会话,可以看到源接口为物理入接口 lan,目标接口为 index 37,为 naf.root,naf 被标记为 1,IPv6 流量未被加速,会话中还包含相关的 IPv4 的相关信息。


在 FortiGate 查看 IPv4 会话,可以看到源接口为 index 37,为 naf.root,目标接口为物理出接口 port18,naf 被标记为 2,IPv4 流量未被加速,会话中还包含相关的 IPv6 会话信息。

