Embedded模式的NAT64

网络需求

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

网络拓扑

image-20230830110328579

Client侧为IPv6,Server侧为IPv4,FortiGate做NAT64转换,将IPv4服务器的IPv4地址嵌入IPv6 VIP地址的最后32位中,使用Client访问Server的IPv6 VIP地址。

配置步骤

  1. 创建VIP,选择类型为IPv6,“外部IP地址/范围”填写IPv6 VIP地址,“映射到”选择Use Embedded,这里会根据IPv6外部地址的最后32位二进制数字,计算出映射的IPv4地址,并显示在提示信息中,这里计算出的是Server IPv4 10.10.12.1。

    image-20230830104602648

    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
    
  2. 可以看默认存在一个naf.root接口,用于处理NAT64流量,创建VIP完成后,如果开启了add-nat64-route(默认开启),针对naf.root接口生成去往VIP IPv6地址的路由,关闭add-nat64-route后,该路由会消失。

    image-20230106150223599

    image-20230830104748461

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

    image-20230830101039510

    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
    
  4. 创建完成后,如果开启了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)
    
  5. 创建防火墙策略,先在NAT选项中开启NAT64,在源地址中引用IPv6的all,然后在目标地址中引用VIP,在IP池配置中引用IPPool。

    image-20230830105145342

    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
    

结果验证

  1. Client访问FortiGate的NAT64 VIP地址2100::a0a:c01,抓包查看NAT64过程,可以看到经过naf.root接口,目标地址被转换为IPv6的extip的最后32位二进制数字的embedded IP 10.10.12.1。

    image-20230830105304769

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

    image-20230830105325941

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

    image-20230830105356760

    image-20230830105404909

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

    image-20230830105421736

    image-20230830105427293

Copyright © 2024 Fortinet Inc. All rights reserved. Powered by Fortinet TAC Team.
📲扫描下方二维码分享此页面👇
该页面修订于: 2024-03-14 11:24:02

results matching ""

    No results matching ""