OpenWRT实现NAT64/DNS64

连接到核心路由器

# 连接到核心路由器
[C:\~]$ ssh root@10.0.0.1
Connecting to 10.0.0.1:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.WARNING! The remote SSH server rejected X11 forwarding request.BusyBox v1.35.0 (2022-10-23 20:45:02 UTC) built-in shell (ash)_______                     ________        __|       |.-----.-----.-----.|  |  |  |.----.|  |_|   -   ||  _  |  -__|     ||  |  |  ||   _||   _||_______||   __|_____|__|__||________||__|  |____||__| W I R E L E S S   F R E E D O M-----------------------------------------------------OpenWrt 22.03.0, r19685-512e76967f-----------------------------------------------------
root@OpenWrt:~#
root@OpenWrt:~#

测试访问IPv6是否正常

# 测试访问IPv6是否正常
root@OpenWrt:~# ping www.oiox.cn -6
PING www.oiox.cn (2409:8c44:2:160:50::): 56 data bytes
64 bytes from 2409:8c44:2:160:50::: seq=0 ttl=56 time=23.455 ms
64 bytes from 2409:8c44:2:160:50::: seq=1 ttl=56 time=22.949 ms
64 bytes from 2409:8c44:2:160:50::: seq=2 ttl=56 time=23.338 ms
64 bytes from 2409:8c44:2:160:50::: seq=3 ttl=56 time=23.695 ms
^C
--- www.oiox.cn ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 22.949/23.359/23.695 ms

安装tayga实现NAT64

# 安装tayga实现NAT64
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install tayga

配置/etc/config/network文件

# 配置/etc/config/network文件
# 重点配置 globals 和  interface 'nat64'config globals 'globals'option ula_prefix 'ddbe:48ec:56c6::/48'config interface 'nat64'option proto 'tayga'option ifname 'tayga-nat64'option ipv4_addr '192.168.1.1'option prefix 'ddbe:48ec:56c6:1111::/96'    option dynamic_pool '192.168.1.0/24'option accept_ra '0'option send_rs '0'# 完整配置如下
root@OpenWrt:~# vim /etc/config/network
root@OpenWrt:~# cat /etc/config/network config interface 'loopback'option device 'lo'option proto 'static'option ipaddr '127.0.0.1'option netmask '255.0.0.0'config globals 'globals'option ula_prefix 'ddbe:48ec:56c6::/48'config deviceoption name 'br-lan'option type 'bridge'list ports 'eth0'list ports 'eth1'list ports 'eth2'config interface 'lan'option device 'br-lan'option proto 'static'option ipaddr '10.0.0.1'option netmask '255.0.0.0'option ip6assign '64'config interface 'wan'option proto 'dhcp'option device 'eth3'config interface 'wan6'option proto 'dhcpv6'option device 'eth3'option reqaddress 'try'option reqprefix 'auto'config interface 'nat64'option proto 'tayga'option ifname 'tayga-nat64'option ipv4_addr '192.168.1.1'option prefix 'ddbe:48ec:56c6:1111::/96'    option dynamic_pool '192.168.1.0/24'option accept_ra '0'option send_rs '0'
root@OpenWrt:~#

配置/etc/config/firewall

# 配置/etc/config/firewall
config zoneoption name 'lan'list network 'lan'option input 'ACCEPT'option output 'ACCEPT'option forward 'ACCEPT'# 完整配置如下
root@OpenWrt:~# vim /etc/config/firewall
root@OpenWrt:~# cat /etc/config/firewallconfig defaultsoption input 'ACCEPT'option output 'ACCEPT'option synflood_protect '1'option forward 'ACCEPT'config zoneoption name 'lan'list network 'lan'option input 'ACCEPT'option output 'ACCEPT'option forward 'ACCEPT'config zoneoption name 'wan'list network 'wan'list network 'wan6'list network 'nat64'option input 'ACCEPT'option output 'ACCEPT'option forward 'ACCEPT'option masq '1'option mtu_fix '1'config forwardingoption src 'lan'option dest 'wan'config ruleoption target 'ACCEPT'option name 'IPv'option src '*'option dest '*'config ruleoption name 'Allow-DHCP-Renew'option src 'wan'option proto 'udp'option dest_port '68'option target 'ACCEPT'option family 'ipv4'config ruleoption name 'Allow-Ping'option src 'wan'option proto 'icmp'option icmp_type 'echo-request'option family 'ipv4'option target 'ACCEPT'config ruleoption name 'Allow-IGMP'option src 'wan'option proto 'igmp'option family 'ipv4'option target 'ACCEPT'config ruleoption name 'Allow-DHCPv6'option src 'wan'option proto 'udp'option dest_port '546'option family 'ipv6'option target 'ACCEPT'config ruleoption name 'Allow-MLD'option src 'wan'option proto 'icmp'option src_ip 'fe80::/10'list icmp_type '130/0'list icmp_type '131/0'list icmp_type '132/0'list icmp_type '143/0'option family 'ipv6'option target 'ACCEPT'config ruleoption name 'Allow-ICMPv6-Input'option src 'wan'option proto 'icmp'list icmp_type 'echo-request'list icmp_type 'echo-reply'list icmp_type 'destination-unreachable'list icmp_type 'packet-too-big'list icmp_type 'time-exceeded'list icmp_type 'bad-header'list icmp_type 'unknown-header-type'list icmp_type 'router-solicitation'list icmp_type 'neighbour-solicitation'list icmp_type 'router-advertisement'list icmp_type 'neighbour-advertisement'option limit '1000/sec'option family 'ipv6'option target 'ACCEPT'config ruleoption name 'Allow-ICMPv6-Forward'option src 'wan'option dest '*'option proto 'icmp'list icmp_type 'echo-request'list icmp_type 'echo-reply'list icmp_type 'destination-unreachable'list icmp_type 'packet-too-big'list icmp_type 'time-exceeded'list icmp_type 'bad-header'list icmp_type 'unknown-header-type'option limit '1000/sec'option family 'ipv6'option target 'ACCEPT'config ruleoption name 'Allow-IPSec-ESP'option src 'wan'option dest 'lan'option proto 'esp'option target 'ACCEPT'config ruleoption name 'Allow-ISAKMP'option src 'wan'option dest 'lan'option dest_port '500'option proto 'udp'option target 'ACCEPT'root@OpenWrt:~#

重启network与firewall

# 重启network与firewall
root@OpenWrt:~# /etc/init.d/network restart
root@OpenWrt:~# /etc/init.d/firewall restart

测试tayga功能

# 测试tayga功能
root@OpenWrt:~# ping -6 ddbe:48ec:56c6:1111::8.8.8.8
PING ddbe:48ec:56c6:1111::8.8.8.8 (ddbe:48ec:56c6:1111::808:808): 56 data bytes
64 bytes from ddbe:48ec:56c6:1111::808:808: seq=0 ttl=51 time=57.846 ms
64 bytes from ddbe:48ec:56c6:1111::808:808: seq=1 ttl=51 time=58.418 ms
64 bytes from ddbe:48ec:56c6:1111::808:808: seq=2 ttl=51 time=57.077 ms
64 bytes from ddbe:48ec:56c6:1111::808:808: seq=3 ttl=51 time=57.571 ms
^C
--- ddbe:48ec:56c6:1111::8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 57.077/57.728/58.418 ms
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# ping -6 ddbe:48ec:56c6:1111::1.1.1.1
PING ddbe:48ec:56c6:1111::1.1.1.1 (ddbe:48ec:56c6:1111::101:101): 56 data bytes
64 bytes from ddbe:48ec:56c6:1111::101:101: seq=0 ttl=50 time=212.821 ms
64 bytes from ddbe:48ec:56c6:1111::101:101: seq=1 ttl=50 time=212.753 ms
64 bytes from ddbe:48ec:56c6:1111::101:101: seq=2 ttl=50 time=212.087 ms
64 bytes from ddbe:48ec:56c6:1111::101:101: seq=3 ttl=50 time=212.161 ms
^C
--- ddbe:48ec:56c6:1111::1.1.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 212.087/212.455/212.821 ms
root@OpenWrt:~#

配置 bind-server 实现DNS64

# 配置 bind-server 实现DNS64
root@OpenWrt:~# opkg install bind-server
root@OpenWrt:~# root@OpenWrt:~# opkg install bind-rndc
root@OpenWrt:~#

Bind是Tayga官方最推荐的DNS软件,因此接下就使用Bind来配置DNS64功能。Bind的配置项有很多,好在官方给出了详细的

https://downloads.isc.org/isc/bind9/9.16.7/doc/arm/html/reference.html#options-statement-grammar

Bind的配置需要修改 /etc/bind/named.conf 文件。对于DNS64来说,主要关注 forwarders 、dns64 、 dnssec-validation 这几个字段。

forwarders 用来表明要把Bind作为转发器来用,在 forwarders 里面指定要将收到的DNS请求转发给那些外部的DNS服务器。

dns64 这个字段需要指定在tayga中配置的NAT64前缀(这里的前缀可以有多个),并且其下面还有许多配置项。clients 用来指定客户端ACL,来决定哪些客户端会受到DNS64的影响,默认为 any ;mapped 用来指定哪些IPv4地址要进行DNS64转换,默认为 any ;exclude 用来指定哪些出现在AAAA记录中的IPv6地址要被忽略,默认是 ::ffff:0.0.0.0/96 。

dnssec-validation 用来指定是否启用DNSSEC验证。dnssec-enable 已被废除,在这里不起作用。

完整配置如下

# 完整配置如下root@OpenWrt:~# vim /etc/bind/named.conf
root@OpenWrt:~# cat /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.options {directory "/tmp";// If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders.  // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder.listen-on port 53 { any; };listen-on-v6 port 53 { any; };allow-query { any; };allow-query-cache { any; };recursion yes;allow-recursion { any; };forwarders {// 0.0.0.0;202.106.46.151;202.106.0.20;//114.114.114.114;//8.8.8.8;};dns64 ddbe:48ec:56c6:1111::/96 {clients { any; };mapped { any; };exclude { ddbe:48ec:56c6:1111::/96; ::ffff:0000:0000/96; };suffix ::;};dnssec-validation no;auth-nxdomain no; # conform to RFC1035};include "/etc/bind/named-rndc.conf";include "/tmp/bind/named.conf.local";// prime the server with knowledge of the root servers
zone "." {type hint;file "/etc/bind/db.root";
};// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912zone "localhost" {type master;file "/etc/bind/db.local";
};zone "127.in-addr.arpa" {type master;file "/etc/bind/db.127";
};zone "0.in-addr.arpa" {type master;file "/etc/bind/db.0";
};zone "255.in-addr.arpa" {type master;file "/etc/bind/db.255";
};
root@OpenWrt:~#
# 重新DNS服务# 关闭默认dnsmasq
# 启用新安装namedroot@OpenWrt:~# service dnsmasq stop
root@OpenWrt:~# service named start
root@OpenWrt:~#

测试NAT64使用

image-635bad167b22d

测试DNS64使用

image-635bad160aad5

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、51CTO、知乎、开源中国、思否、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维》

文章主要发布于微信公众号

OpenWRT实现NAT64/DNS64相关推荐

  1. 运营商级网络地址转换(LSN/CGN)方案介绍

    运营商级网络地址转换(LSN/CGN)方案介绍 简述: 随着近期国内主要运营商移动互联网业务终端(如智能手机等)用户数目的迅猛增长,各种形式的终端设备对数据业务(据统计约90%以上的智能手机用户都有访 ...

  2. 怎样解决IPv4网络和IPv6网络的共存互通?

    现在,业界一致认为IPv6技术是解决IP地址短缺问题的唯一可行的根本办法.但由于IPv6与IPv4技术不兼容,且现有的IPv4设备和用户数量庞大,在网络演进过程中,需要解决异构网络的共存互通问题. 解 ...

  3. AppStore IPv6-only审核被拒原因分析及解决方案-a

    Apple关于IPV6规定 日前,苹果公司向开发者发出提醒,公司将会修改应用商店App Store的相关规定,所有IOS应用必须包含对IPv6-only标准的支持.据悉,该规定在6月1日生效,所有提交 ...

  4. 全球 IPv4 地址耗尽,IPv6 来了!

    本文作者:robintang,腾讯 WXG 后台开发工程师.转载自「 云加社区」. 就在昨天,2019 年 11 月 26 日,全球 43 亿个 IPv4 地址正式耗尽,很多人表示忧虑.不过不用担心, ...

  5. 纯IPv6环境App适配的坑

    来源:伯乐在线专栏作者 - MrPeak 链接:http://ios.jobbole.com/86580/ 苹果从2016年6月1号开始,强制所有app必须支持纯IPv6的网络环境.这项举措将对IPv ...

  6. 2012.4.10 全球IPv6暨下一代互联网高峰会议 日程表

    4月10日 主会场 展览区 会场二 上午 大会开幕式 IPv6产品展示&IPv6体验馆 媒体见面会 基调演讲 全球IPv6产业更新和战略导向 十二五规划IPv6下一代互联网深度解读 全球IPv ...

  7. iOS ipv6审核被拒绝的解决方案(已审核通过)

    目前解决IPv6被拒问题只有三种方案(其他任何方案都是这三种延伸而来): ① NAT64+DNS64 中转解决方案--配置简单.稳定有效. ② IPv6隧道技术解决方案--技术要求高.稳定性一般. ③ ...

  8. 《深入解析IPv6(第3版)》——11.4 流量转换

    本节书摘来自异步社区<深入解析IPv6(第3版)>一书中的第11章,第11.4节,作者: [美]Joseph Davies 更多章节内容可以访问云栖社区"异步社区"公众 ...

  9. NAT 穿透是如何工作的

    来自:入门小站 译者序 设想这样一个问题:在北京和上海各有一台局域网的机器(例如一台是家里的台式机,一 台是连接到星巴克 WiFi 的笔记本),二者都是私网 IP 地址,但可以访问公网, 如何让这两台 ...

最新文章

  1. today便利 java_在Today今天便利店吃饭,你的要求可以再高一点
  2. winform 对话框、打印框
  3. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第四题:约数倍数选卡片
  4. gradle拷贝静态资源文件_Gradle-操作文件文件拷贝
  5. mysql老是自动停止_ecs云服务器 mysql经常自动停止挂掉重启问题分析
  6. 寒冰王座(完全背包+多解)
  7. html中article、section、aside的区别与联系
  8. 如何在虚拟机中安装kali linux
  9. Python的模块千奇百怪,居然有自动发短信的模块?
  10. java之线程相关juc
  11. imp.load_source的用法
  12. BZOJ3642 : [CEOI 2014] Cake
  13. 找出不是两个数组共有的元素(学习去重复算法)
  14. Python3 不能直接导入reduce
  15. MySQL 优化1
  16. vue3中获取dom元素和操作
  17. Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
  18. 1698无法登录mysql服务器,Mysql ERROR 1698 (28000) 解决
  19. java中画图喷枪_JAVA 画图板实现(基本画图功能+界面UI)一、界面实现
  20. Linux应用开发: SQLite数据库交叉编译部署与运用

热门文章

  1. 浅析海思麒麟970、960和950
  2. EsotericSoftware Kryo —— 官方(1)
  3. 解决Nginx报错502之:[error] 17929#17929:57 rewrite or internal redirection cycle while internally redirect
  4. 视频无法输出?来一键安装InVideo插件
  5. 显著性检测数据集之——眼动预测
  6. 什么情况下我们需要进行硬盘对拷?硬盘对拷怎么操作?
  7. ICP和公安网备案以及网站底部添加相应备案号
  8. Gow是Gnu On Windows的缩写:windows 运行Linux工具
  9. 【程序人生】“阶段总结”-归来仍是少年
  10. 深入解读AB测试(含统计学原理)