ASA NAT64、NAT46.note
·属性解释:
net-to-net //配置一对一映射关系,例如当IPv6设备访问2001:db8:100::/64中的地址时,ASA会自动将后32位转换为192.168.1.0/24网段内的IPv4地址;或者需要将单个IPv6地址转换为单个IPv4地址时也需要这个
dns //当dns服务器返回IPv4地址时,能够自动将其转换为IPv6地址【这个属性默认最好加上】(例如:当内部DNS服务器返回192.168.1.100 时,防火墙会将其转换为 2001:db8::c0a8:164) 无论是 一、还是 二, 配置原理都是将内部IPv6地址,转换成IPv4接口地址(或者自定义一个IPv4地址),作为该IPv6在IPv4网络中的源地址
然后定义一个IPv6前缀,用该前缀 + 内嵌IPv4地址 作为该IPv6在IPv6网络中的目的地址,它到底NAT64设备后,会被去掉前缀,仅保留IPv4地址,该IPv4地址将作为 该IPv6地址在IPv4网络中的目的地址。
一、NAT46/64(将ipv6转换成指定ipv4地址):
这个配置既可以让IPv4通过访问 136.136.136.136 来访问到 IPv6网络
也可以让IPv6通过访问 前缀+内嵌IPv4 来访问呢到 IPv4网络
1、(一对一映射)配置NAT46静态转换,将内部单个IPv6地址转换为外部单个IPv4地址:
外网IPv4客户端通过访问这个IPv4地址来达到访问内部IPv6服务器的效果
拓扑:

# 将IPv6转换成IPv4:
object network ipv4
host 2001:db8::1
nat (Inside,Outside) static 136.136.136.136 net-to-net dns
# 给内部IPv6一个目标IPv6地址(让它能够访问IPv4):
object network outside
subnet 0.0.0.0 0.0.0.0
nat (Outside,Inside) static 64:ff9b::/96 dns
# 需要放行icmp和ACL
## 两边都需要有路由去到 NAT64:
IPv6 端需要路由: 64:ff9b::/96
IPv4 端需要路由(定义的IPv4映射地址):136.136.136.136(重要)如果ASA 上 Outside想要ping通Inside接口,需要放行 acl,否则肯能导致外网无法ping通这个转换后的 ipv4地址:
access-list ALL permit ip any any
access-group ALL global·测试:
# 测试时记得在防火墙上放行ICMP:
policy-map global_policy
class inspection_default
inspect icmpIPv4 访问 IPv6时,会将 136.136.136.136 这个地址转换为 64:ff9b::/96 下的地址
IPv6 访问 IPv4时,会将IPv6地址转换为 136.136.136.136 地址
测试:
外部IPv4 ping 静态IPv4地址(nat46测试):

内部IPv6 ping ipv6前缀 + ipv4地址(nat64测试):

二、NAT64(将ipv6转换成ipv4接口地址):
NAT64转换都是需要两次NAT的
例如,从IPv6访问去往IPv4
需要将源IPv6地址,转换为IPv4地址
需要将目的IPv6地址,转换为IPv4地址
1、配置NAT64,定义前缀,IPv6客户端访问这个 前缀+IPv4地址来访问 外部IPv4地址:
拓扑:

# 基础配置:
fw:
int g0/0
no sh
nameif Inside
ipv6 enable
ipv6 address 2001:db8::ffff/64
exit
int g0/1
no sh
nameif Outside
ip address 100.1.1.254 255.255.255.0
Inside-1:
ipv6 un
int g0/0
no sh
ipv6 enable
ipv6 address 2001:db8::1/64
Outside-1:
int g0/0
no sh
ip address 100.1.1.1 255.255.255.0配置方式一:
FW:
# 定义IPv6 Object:
object network inside_v6
subnet 2001:db8::/96 //匹配内网地址
nat (Inside,Outside) dynamic interface //将2001:db8::/96 内网地址转换为 G0/1接口的公网ipv4地址
# 定义IPv4 Object:
object network outside_v4
subnet 0.0.0.0 0.0.0.0
nat (Outside,Inside) static 2001:db8::/96 dns配置方式二:
object network ipv6
subnet 2001:db8::/96
nat (Inside,Outside) source dynamic ipv6 interface destination static ipv6 any·测试:
# 测试时记得在防火墙上放行ICMP:
policy-map global_policy
class inspection_default
inspect icmp
此时,就能够ping通 ASA防火墙能够ping通的任何IPv4地址(除了ASA防火墙本地的IPv4地址)
2、如果前缀与客户端不同网段,例如:64:ff9b::/96:
# 只需要将 IPv4回包的 object 的nat转换地址改为 64:ff9b::/96即可
FW:
# 定义IPv6 Object:
object network inside_v6
subnet 2001:db8::/96 //匹配内网地址
nat (Inside,Outside) dynamic interface //将2001:db8::/96 内网地址转换为 G0/1接口的公网ipv4地址
# 定义IPv4 Object:
object network outside_v4
subnet 0.0.0.0 0.0.0.0
nat (Outside,Inside) static 64:ff9b::/96 dns
## 内网客户端上需要有去往 64:ff9b::/96的路由,否则路由不通,路由无法到底nat64:
ipv6 route 64:ff9b::/96 g0/0ASA 本地不需要有 64:ff9b::/96 这条路由条目(有也没关系)
·测试:
# 测试时记得在防火墙上放行ICMP:
policy-map global_policy
class inspection_default
inspect icmp