使用 tayga 配置 NAT64、464XLAT



















· tayga 配置文件参数解释:
tayga 软件包在 DLBD-2 中
apt install -y tayga## 可以使用:man 5 tayga.conf 查看配置文件参考
vim /etc/tayga.conf # (必要)定义接口的名称(tayga使用的是tun隧道接口 来进行NAT64转换) tun-device nat64 # (必要)作为 tayga的IPv4地址,充当 IPv4 和 IPv6转换之间的路由器(需要能够收发ICMP消息,能ping通) ipv4-addr 10.0.0.254 # 作为 tayga的IPv6地址,充当 IPv4 和 IPv6转换之间的路由器(需要能够收发ICMP消息) # 如果指定了 ‘prefix’,则该选项可选(因为会tayga使用ipv4-addr和prefix自动构建出ipv6-addr) # 如果没有指定 ‘prefix’ 就是必选。 # 如果指定的 ‘prefix’为:“ 64:ff9b::/96 ” 并且 ipv4-addr 是一个私有地址,则该选项必选。(ipv6-addr 和 prefix中指定的地址段可以不相同) ipv6-addr 2001:db8:1::2 # 指定 IPv6地址前缀,用于在将IPv4地址转换为IPv6地址时 作为IPv6的前缀使用 # 如果使用 ‘map’ 指定了所有必要的地址映射,则无需配置该选项。 prefix 2001:db8:1:ffff::/96 # prefix 64:ff9b::/96 # 当IPv6主机的流量通过tayga时,会从该pool中动态分配一个IPv4地址给该IPv6地址(实现IPv4与IPv6地址的一对一映射),而纯IPv4客户端则能够通过该IPv4地址访问到该IPv6机器(该IPv4映射地址有效时间为:124分钟) # 是可选项,但是 如果不配置它,外部IPv6主机将无法 ping 通tayga(出现 ICMP不可达) dynamic-pool 10.0.0.0/24 # 用于保存 ‘dynamic-pool’ 分配的IPv4地址与IPv6地址的映射,如果没有定义dynamic-pool,则无需配置。 data-dir /var/spool/tayga //该目录默认存在,题目无要求则无需修改(会保存在该目录的 dynamic.map 文件中) # 能够手动指定 单个主机、地址段的映射(使用 map 指定的 IPv4地址可以处于 dynamic-pool 定义的地址中,不冲突) 1、映射网段: IPv4网段 - IPv6网段 map 192.168.10.0/24 2001:abcd:3000::/120 //可以通过(2001:abcd:3000::192.168.10.x)进行访问 2、映射单个地址: IPv4 - IPv6 map 192.168.10.1 2001:db8:1000::192.168.10.1 map 192.168.10.2 2001:db8:1000::192.168.10.2
使用 prefix 和 dynamic-pool 可以实现 有状态 NAT64使用 map 能够实现 无状态 NAT64
·(注意!!!)tayga本机是ping不同转换后的地址(ipv6和ipv4),需要在其它机器上ping转换后的地址才行
一、IPv6端 与 IPv4端 实现互通(通过 有状态NAT64实现):
1、安装软件包:
·注意:只有在 DLBD-2 中才会有 tayga 软件包:
apt install -y tayga
2、如果需要配置 IPv6 静态路由 或 默认路由:
添加、删除路由表(IPv6、IPv4)
3、配置 tayga:
(1)【这些配置可以省略】配置 tayga:
tayga --mktun 和 ip link set nat64 up 在 /etc/init.d/tayga 文件中有定义,每次tayga启动都会自动配置ip addr add 给nat64接口添加IP地址可以在 /etc/default/tayga 中配置ip route add 添加路由条目可以写在 /etc/init.d/tayga 中

tayga --mktun //将 nat64 接口持久化(当tayga服务不运行时,nat64接口也会存在)ip link set nat64 up //启用 nat64 接口# 可以在/etc/default/tayga中配置 ip addr add 192.168.100.254 dev nat64 //给nat64接口添加一个IPv4地址(地址为该设备本身的地址)# 可以在/etc/default/tayga中配置 ip addr add 2001:abcd:1000::1 dev nat64 //给nat64接口添加一个IPv6地址(地址为该设备本身的地址)ip route add 203.84.113.0/24 dev nat64 //将定义的路由引入nat64ip route add 2001:db8:aaaa::/96 dev nat64 //将定义的路由引入nat64
但是这样操作的话,重启就会失效
· 配置 nat64接口的地址:(可以用上面的 ip addr add 但是重启会失效)
有时不配置 nat64 接口地址也可以,但是按照 tayga 官网(http://www.litech.org/tayga/faq.html)所述:这有时可能会遇到一些问题
配置nat64接口地址重启不失效:vim /etc/default/tayga## 在这个文件中输入 nat64接口的 IPv4 地址和 IPv6 地址即可
(2)编辑 /etc/tayga.conf 文件:
vim /etc/tayga.conf# 这个文件中有示例,修改其中地址和参数即可## Mandatory 是必须的## Optional 是可选的
配置了 prefix 就不需要配置 ipv6-addr(配置了会导致服务能够运行,但是转换失败)
配置 prefix 之后,例如,如果要想要通过 NAT64 访问 192.168.1.1,直接 ping 2001:db8:1000::192.168.1.1 就可以访问到 192.168.1.1而访问成功后,该IPv6服务器的地址,就会与 上面定义的IPv4地址池中的地址形成一个映射,存储在 上面定义的 /var/spool/tayga/目录下的 文件中(IPv4客户端就能够通过该 IPv4映射地址进行访问IPv6服务器了)
systemctl enable tayga
4、配置 重启不失效(不管是重启机器,还是重启网卡):
(1)推荐方法:
· 推荐方法:
vim /etc/init.d/tayga找到 第100行的‘start_server’,在其下添加路由:
systemctl restart taygasystemctl daemon-reloadsystemctl restart tayga
·马哥的方法:(但是有时容易无法生效【原因未知】)
vim /etc/init.d/tayga# 使用 “ /case ” 定位到 case 语句,找到 case语句下的 start,在判断语句if下添加路由:
(2)其它方法:
1、如果重启时,nat64 接口不会失效就使用:
vim /etc/network/interfaces
2、如果重启时,nat64接口 会失效(消失)就使用:
vim /etc/network/interfaces
3、如果重启时,tayga 服务会 启动失败则配置:
vim /etc/network/interfaces
5、IPv4客户端 ping IPv6 地址:
(1)先在 tayga 服务器 上查看 IPv4 和 IPv6 地址的映射:
cat /var/spool/tayga/dynamic.map# 里面定义了 IPv4 和 IPv6 地址的映射## 前提是需要这些地址先 ping tayga 服务器(才会将其进行自动映射)
(2)在 IPv4客户端上 ping 映射中的 IPv4 地址:
5、如果其它公网IPv6服务器想要 ping ,则需要 将tayga IPv6 地址池 指向 tayga服务器:
route -A inet6 add 2001:db8:1000::/96 gw 2001:abcd:1000::1或:ip route -A 2001:db8:1000::/96 via 2001:abcd:1000::1## 此时再看:ping 2001:db8:1000::192.168.10.1ping 2001:db8:1000::192.168.10.254
二、配置 464XLAT(IPv4 端 通过 IPv6 端 到达 IPv4端)
· 安徽韩国交流赛环境:
PUB-R2
MAIN-R
PLAT映射地址
[IPv4] -- [IPv6] -- [IPv4]# 五台机器:(INTSRV)- IPv4 -(MAIN-R)- IPv6 -(PUB-R1)- IPv6 -(PUB-R2)- IPv4 -(PUBSRV)
先保证公网互通,机器基础地址等配置完成
1、配置 MAIN-R:
开启路由功能(这里不赘述)
(1)配置 /etc/tayga.conf:
apt install -y taygacp /etc/tayga.conf ~ //先备份一份配置文件vim /etc/tayga.conf
data-dir 结合 dynamic-pool:dynamic-pool 是可选项(但是没有该选项,会导致路由不通,因此可以当作必选项)data-dir 是可选项(配置了后会生成一个数据库,只要有外部IPv6机器访问该tayga或经由该tayga服务器进行nat64转换过后的地址,都会将其IPv6地址记录在 /var/spool/tayga下的数据库文件中,将该IPv6地址与上面 dynamic-pool 定义的 IPv4地址进行一对一映射,IPv4客户端则可以通过这个映射地址访问到IPv6客户端)例如:IP为:2001:eeee::1 的服务器访问了这台tayga服务器,那么就会在 /var/spool/tayga数据库文件中形成192.168.255.x 2001:eeee::1 xxxxxxxx会形成这样一条映射,(假设是192.168.255.30)那么就可以通过 192.168.255.30 从而访问到2001:eeee::1此时,对于IPv4客户端而言,192.168.255.30 这个IP地址,就是2001:eeee::1(可以理解为NAT转换,tayga将从IPv4客户端收到的 192.168.255.30 转换为 2001:eeee::1,它对于客户端来说是不知情的,对于2001:eeee::1来说也是不知情的)这一点可以称为 NAT46(使IPv4地址主动访问到IPv6地址)NAT64,则是使IPv6地址,能够主动访问到IPv4地址(但是大多数情况下,NAT64和NAT46统称为NAT64)
· 也可以配置网段映射:
(2)添加路由(且重启不失效):
vim /etc/init.d/tayga# 移动到第 100 行:
在 if 语句下添加你想要添加的路由条目
171.205.239.0/24 是 PUBSRV的网段,使用路由将它引入 nat64 ,tayga会将其转换成 64:ff9b::/96 ,然后再将 64:ff9b::/96 网段指向 PUB区域的 tayga 服务器(如果有默认路由,就无需手动将 64:ff9b::/96 指向外部)如果有默认路由指向外部就无需手动添加的路由:ip route add 64:ff9b::/96 via 2001:db8:1000::ffffip route add 2001:db8:bbbb::/96 via 2001:db8:1000::ffffip route add 2001:db8:cccc::/96 via 2001:db8:1000::ffff
· 配置默认路由:
vim /etc/network/interfaces
(3)为 nat64 接口添加地址:
nat64 接口不配置地址也能够使用,但是按照tayga官方网站所说,不配置nat64接口的地址,有时会导致tayga转换失败
vim /etc/default/tayga
(4)重启服务器:
systemctl restart tayga
2、配置 PUB-R2:
开启路由功能(这里不赘述)
(1)配置 /etc/tayga.conf:
apt install -y taygacp /etc/tayga.conf ~vim /etc/tayga.conf
(2)为nat64接口设置固定IP地址:
vim /etc/default/tayga
(3)添加路由条目:
vim /etc/init.d/tayga
如果定义了默认路由指向外部,就无需配置以下路由条目:ip route add 2001:db8:aaaa::/96 via 2001:db8:ffff::ffffip route add 2001:db8:bbbb::/96 via 2001:db8:ffff::ffffip route add 2001:db8:cccc::/96 via 2001:db8:ffff::ffff
· 配置默认路由:
vim /etc/network/interfaces
(4)重启服务器:
systemctl restart tayga
3、配置 ISP:
开启路由功能(只需开启IPv6的路由功能即可)
(1)在 ISP 上配置静态路由:
vim /etc/network/interfaces
4、进行测试:
(1)在 MAIN-R 上 测试:
测试前,先在所有机器上安装 ssh,并允许 root 进行访问:apt install -y ssh && echo "PermitRootLogin yes" >> /etc/ssh/sshd_configsystemctl restart sshd
· 使用 ping 测试:
ping PUB-R2 的 tayga 转换的地址:ping 64:ff9b::171.205.239.254ping 64:ff9b::171.205.239.1# ping 自己使用 tayga 转换的地址:ping 2001:db8:aaaa::10.0.0.1ping 2001:db8:aaaa::10.0.0.254
· 使用 ssh 测试:

(2)在 PUB-R2 上进行测试:
这里就不进行 ping 测试了,ssh能连上代表连通信也没问题
ssh 2001:db8:aaaa::10.0.0.1 //这条是通过路由转发,没有通过PUB-R2使用tayga进行NAT转换,而是直接通过路由发送给 MAIN-R 进行tayga的ssh 203.84.113.1 //这条是通过本地 tayga,将 203.84.113.1 转换为 2001:db8:aaaa::10.0.0.1,再通过路由转发给 MAIN-R# 上面这两条都是访问 10.0.0.1 的# 下面这两条都是网文 10.0.0.254 的ssh 2001:db8:aaaa::10.0.0.254ssh 203.84.113.254
(3)在 INTSRV 上 测试:
· 1、ping dynamic.map 文件中的映射
· 先查看 /var/spool/tayga/dynamic.map 中的 一对一映射
因为 INTSRV是纯IPv4客户端,只能访问IPv4地址,因此上面的配置文件中需要定义(data-dir + dynamic-pool)就是为了供给给IPv4客户端使用vim /etc/spool/tayga/dynamic.map
· 在 IPv4 客户端上访问 该IPv4地址:
ssh 192.168.255.231ssh 192.168.255.75
· 2、访问 PUBSRV:
ping 171.205.239.1