精华内容
下载资源
问答
  • OpenWRT上的NAT64 适用于OpenWRT Chaos Calmer(15.05.1),LEDE 17.01.02,OpenWrt 18.06.1和OpenWrt 19.07.x的IPv6到IPv4协议转换器 为什么? 尽管运行双栈是IPv6的首选过渡方法,但由于需要运行两个协议(v4和...
  • Mutarjem是一个Linux内核可加载模块,可以添加到Linux内核中。 它是nat64在内核空间中的实现。 可以将其加载到防火墙内核,以仅将IPv6网络连接到IPv4 Internet。
  • NAT64-rfc6146

    2018-08-29 09:02:42
    NAT64-rfc6146
  • 小型系统ipv6改造经验,使用nat64,不改变原来网络架构。本文阐述了改造详细过程,使用的网络设备等。
  • 适用于Linux的 。 笔记! Jool的网站同时在两个单独的域中托管: (一次过几天可能会过时) (不适用于IPv6) 文献资料 。 您也可以。 您可能还想查看。 学分 网卡 g 豪尔赫·卡诺·普恩特...亚伯拉罕·贝兹( Abr
  • NAT64与DNS64基本原理概述.pdf
  • Nat64 地址转换.pptm

    2020-06-27 15:33:50
    ipv6地址转换为ipv4地址实现分析 --nat64服务 i
  • (无状态)Linux 的 NAT64 用户模式实现 作者 Kohei Takahashi 先决条件 C++11 就绪编译器 4.8 或更高版本 3.1 或更高版本 OvenToBoost(又名范围扩展) 自动工具 入门 Clone Boost 开发分支 git clone -b ...
  • 使用CentOS7搭建Nat64服务器实现IPv6网段访问IPv4地址

    千次阅读 热门讨论 2019-08-20 18:16:24
    最近在工作中测试环境里遇到IPv6访问IPv4的需求场景,加上刚好没有防火墙可以实现Nat64的需求,索性自己在centos7上使用开源的jool软件搭建一个NAT64服务器 我在安装过程中参考的网上的安装步骤和方法 Git上的jool...

    最近在工作中测试环境里遇到IPv6访问IPv4的需求场景,加上刚好没有防火墙可以实现Nat64的需求,索性自己在centos7上使用开源的jool软件搭建一个NAT64服务器

    我在安装过程中参考的网上的安装步骤和方法
    Git上的jool安装方法:https://github.com/leblancd/kube-v6/blob/master/NAT64-DNS64-CENTOS7-INSTALL.md
    Jool官网提供的安装步骤:https://www.jool.mx/en/install.html
    Jool的Git项目位置:https://github.com/NICMx/jool

    安装CentOS操作系统

    不做赘述了,我使用的是CentOS7.5(1804),安装方式是Server with GUI,分区使用的是CentOS自动分区

    关闭selinux和防火墙

    vim /etc/selinux/config
    
    将 SELINUX=enforcing 修改为 SELINUX=disabled
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    # SELINUX=enforcing
    SELINUX=disabled
    # SELINUXTYPE= can take one of three two values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected. 
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted 
    
    systemctl disable firewall
    

    重启CentOS服务器

    安装开发环境

    这一步里面有个安装kenel-devel,这个kenel-devel一定不要用公网上的源安装,公网上的kernel版本一般比安装的Centos自带的kernel版本要高,通过公网安装的kenel-devel的内核版本是和本机的内核不一致的,后面会导致dmks安装jool的时候报错,建议这一步使用centos的iso镜像作为源安装开发环境

    cd /etc/yum.repos.d/
    ll
    -rw-r--r--. 1 root root 1664 Apr 29  2018 CentOS-Base.repo
    -rw-r--r--. 1 root root 1309 Apr 29  2018 CentOS-CR.repo
    -rw-r--r--. 1 root root  649 Apr 29  2018 CentOS-Debuginfo.repo
    -rw-r--r--. 1 root root  314 Apr 29  2018 CentOS-fasttrack.repo
    -rw-r--r--  1 root root  657 Aug 20 23:34 CentOS-Media.repo
    -rw-r--r--. 1 root root 1331 Apr 29  2018 CentOS-Sources.repo
    -rw-r--r--. 1 root root 4768 Apr 29  2018 CentOS-Vault.repo
    

    将上面列出的repo文件中,除了CentOS-Media.repo其他全部改名

    mv CentOS-Base.repo CentOS-Base.repo.bak
    mv CentOS-CR.repo CentOS-CR.repo.bak
    mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
    mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
    mv CentOS-Sources.repo CentOS-Sources.repo.bak
    mv CentOS-Vault.repo CentOS-Vault.repo.bak
    

    将iso镜像挂载到/media/cdrom目录下

    yum repolist all
    
    Loading mirror speeds from cached hostfile
    repo id                                 repo name                                       status
    c7-media                                CentOS-7 - Media                                disabled
    

    将c7-media的状态由disable修改为enable

    yum-config-manager --enable c7-media
    
    Loading mirror speeds from cached hostfile
    repo id                                  repo name                                       status
    c7-media                                 CentOS-7 - Media                                enabled: 3,971
    

    安装开发环境

    yum clean all
    yum repolist all
    yum groupinstall -y "Development Tools"
    yum install -y pkgconfig
    yum install -y iptables-devel
    yum install kernel-devel
    yum install kernel-headers
    

    检查目录

    [root@localhost yum.repos.d]# ll /lib/modules/3.10.0-862.el7.x86_64/
    total 3212
    lrwxrwxrwx.  1 root root     38 Aug 20 14:52 build -> /usr/src/kernels/3.10.0-862.el7.x86_64
    drwxr-xr-x.  3 root root     99 Aug 20 23:47 extra
    drwxr-xr-x. 12 root root    128 Aug 20 14:52 kernel
    -rw-r--r--   1 root root 820164 Aug 20 23:48 modules.alias
    -rw-r--r--   1 root root 784670 Aug 20 23:48 modules.alias.bin
    -rw-r--r--.  1 root root   1346 Apr 21  2018 modules.block
    -rw-r--r--.  1 root root   7091 Apr 21  2018 modules.builtin
    -rw-r--r--   1 root root   8965 Aug 20 23:48 modules.builtin.bin
    -rw-r--r--   1 root root 280744 Aug 20 23:48 modules.dep
    -rw-r--r--   1 root root 387639 Aug 20 23:48 modules.dep.bin
    -rw-r--r--   1 root root    361 Aug 20 23:48 modules.devname
    -rw-r--r--.  1 root root    132 Apr 21  2018 modules.drm
    -rw-r--r--.  1 root root     82 Apr 21  2018 modules.modesetting
    -rw-r--r--.  1 root root   1746 Apr 21  2018 modules.networking
    -rw-r--r--.  1 root root  95355 Apr 21  2018 modules.order
    -rw-r--r--   1 root root    490 Aug 20 23:48 modules.softdep
    -rw-r--r--   1 root root 385449 Aug 20 23:48 modules.symbols
    -rw-r--r--   1 root root 473998 Aug 20 23:48 modules.symbols.bin
    lrwxrwxrwx.  1 root root      5 Aug 20 14:52 source -> build
    drwxr-xr-x.  2 root root      6 Apr 21  2018 updates
    drwxr-xr-x.  2 root root     95 Aug 20 14:52 vdso
    drwxr-xr-x.  2 root root      6 Apr 21  2018 weak-updates
    [root@localhost yum.repos.d]# ll /usr/src/kernels/3.10.0-862.el7.x86_64
    total 4492
    drwxr-xr-x  32 root root    4096 Aug 20 23:36 arch
    drwxr-xr-x   3 root root      78 Aug 20 23:36 block
    drwxr-xr-x   4 root root      76 Aug 20 23:36 crypto
    drwxr-xr-x 119 root root    4096 Aug 20 23:36 drivers
    drwxr-xr-x   2 root root      22 Aug 20 23:36 firmware
    drwxr-xr-x  75 root root    4096 Aug 20 23:36 fs
    drwxr-xr-x  28 root root    4096 Aug 20 23:36 include
    drwxr-xr-x   2 root root      37 Aug 20 23:36 init
    drwxr-xr-x   2 root root      22 Aug 20 23:36 ipc
    -rw-r--r--   1 root root     505 Apr 21  2018 Kconfig
    drwxr-xr-x  12 root root     236 Aug 20 23:36 kernel
    drwxr-xr-x  10 root root     219 Aug 20 23:36 lib
    -rw-r--r--   1 root root   51197 Apr 21  2018 Makefile
    -rw-r--r--   1 root root    2305 Apr 21  2018 Makefile.qlock
    drwxr-xr-x   2 root root      58 Aug 20 23:36 mm
    -rw-r--r--   1 root root 1093137 Apr 21  2018 Module.symvers
    drwxr-xr-x  60 root root    4096 Aug 20 23:36 net
    drwxr-xr-x  14 root root     220 Aug 20 23:36 samples
    drwxr-xr-x  13 root root    4096 Aug 20 23:36 scripts
    drwxr-xr-x   9 root root     136 Aug 20 23:36 security
    drwxr-xr-x  24 root root     301 Aug 20 23:36 sound
    -rw-r--r--   1 root root 3409143 Apr 21  2018 System.map
    drwxr-xr-x  17 root root     221 Aug 20 23:36 tools
    drwxr-xr-x   2 root root      37 Aug 20 23:36 usr
    drwxr-xr-x   4 root root      44 Aug 20 23:36 virt
    -rw-r--r--   1 root root      41 Apr 21  2018 vmlinux.id
    

    将yum.repo.d目录下的repo文件恢复

    mv CentOS-Base.repo.bak CentOS-Base.repo
    mv CentOS-CR.repo.bak CentOS-CR.repo
    mv CentOS-Debuginfo.repo.bak CentOS-Debuginfo.repo
    mv CentOS-fasttrack.repo.bak CentOS-fasttrack.repo
    mv CentOS-Sources.repo.bak CentOS-Sources.repo
    mv CentOS-Vault.repo.bak CentOS-Vault.repo
    

    安装其他工具

    安装epel源

    yum install -y epel-release
    

    安装dkms

    yum install -y dkms
    

    安装pkgconfig

    yum install -y pkgconfig
    

    安装libnl3,如果不安装,后面在configure时会报错“No package ‘libnl-genl-3.0’ found”

    yum install -y libnl3-devel
    

    安装iptables-devel,如果不安装,后面在configure时会报错“No package ‘xtables’ found”

    yum install -y iptables-devel
    

    从Git下载jool最新版本

    从Git下载jool最新版本

    git clone https://github.com/NICMx/Jool.git
    

    安装jool

    dkms install Jool/
    cd Jool/
    ./autogen.sh
    ./configure
    make
    make install
    

    加载jool模块

    /sbin/modprobe jool
    lsmod |grep jool
    
    jool                  179931  0 
    nf_defrag_ipv6         35104  1 jool
    nf_defrag_ipv4         12729  2 jool,nf_conntrack_ipv4
    

    关闭系统自带的防火墙,并安装iptables

    systemctl stop firewalld
    systemctl diable firewalld
    yum install -y iptables-services
    systemctl start iptables
    systemctl start ip6tables
    systemctl enable iptables
    systemctl enable ip6tables
    

    配置IPv6地址池和转发规则

    配置IPv6地址池,将fec0:1::/96网段的地址NAT成ipv4地址

    jool instance add "NAT64" --iptables --pool6 fec0:1::/96
    

    配置iptables转发规则,注意IPv6地址池的地址不应该和server的IPv6地址在一个段内,否则流量不会进入PREROUTING链

    ip6tables -t mangle -A PREROUTING -s fec0:1::1 -j ACCEPT
    ip6tables -t mangle -A PREROUTING -d fec0:1::/96 -j JOOL --instance "NAT64"
    iptables -t mangle -A PREROUTING -d 10.206.254.4 -p tcp --dport 61001:65535 -j JOOL --instance "NAT64"
    iptables -t mangle -A PREROUTING -d 10.206.254.4 -p udp --dport 61001:65535 -j JOOL --instance "NAT64"
    iptables -t mangle -A PREROUTING -d 10.206.254.4 -p icmp -j JOOL --instance "NAT64"
    

    如果需要停用nat64

    ip6tables -t mangle -D PREROUTING -s fec0:1::1 -j ACCEPT
    ip6tables -t mangle -D PREROUTING -d fec0:1::/96 -j JOOL --instance "NAT64"
    iptables -t mangle -D PREROUTING -d 10.206.254.4 -p tcp --dport 61001:65535 -j JOOL --instance "NAT64"
    iptables -t mangle -D PREROUTING -d 10.206.254.4 -p udp --dport 61001:65535 -j JOOL --instance "NAT64"
    iptables -t mangle -D PREROUTING -d 10.206.254.4 -p icmp -j JOOL --instance "NAT64"
    jool instance remove "NAT64"
    /sbin/modprobe -r jool
    

    配置jool模块开机加载

    vim /etc/sysconfig/modules/jool.modules
    
    #!/bin/bash
    
    /sbin/modinfo -F filename jool > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        /sbin/modprobe jool
    fi
    

    配置NAT64规则开机加载

    vim /etc/rc.local
    
    /usr/local/bin/jool instance add "NAT64" --iptables --pool6 fec0:1::/96
    /usr/sbin/ip6tables -t mangle -A PREROUTING -s fec0:1::1 -j ACCEPT
    /usr/sbin/ip6tables -t mangle -A PREROUTING -d fec0:1::/96 -j JOOL --instance "NAT64"
    /usr/sbin/iptables -t mangle -A PREROUTING -d 10.206.254.4 -p tcp --dport 61001:65535 -j JOOL --instance "NAT64"
    /usr/sbin/iptables -t mangle -A PREROUTING -d 10.206.254.4 -p udp --dport 61001:65535 -j JOOL --instance "NAT64"
    /usr/sbin/iptables -t mangle -A PREROUTING -d 10.206.254.4 -p icmp -j JOOL --instance "NAT64"
    

    Ping检查IPv6是否正常

    ping6 fec0:1::7272:7272(114.114.114.114增加fec0:1::前缀的IPv6地址)
    
    PING fec0:1::7272:7272(fec0:1::7272:7272) 56 data bytes
    64 bytes from fec0:1::7272:7272: icmp_seq=1 ttl=83 time=311 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=2 ttl=68 time=358 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=3 ttl=64 time=238 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=4 ttl=62 time=201 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=5 ttl=91 time=359 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=6 ttl=83 time=422 ms
    64 bytes from fec0:1::7272:7272: icmp_seq=7 ttl=81 time=292 ms
    

    Tips:

    做完上面的配置之后Server本身ping IPv4的地址会不通,但是可以正常上网,貌似就只有ping有问题,目前暂未找到解决办法

    配置DNS64

    安装bind服务

    yum -y install bind
    

    编辑named服务配置文件

    vim /etc/named.conf
    
    //
    // named.conf
    //
    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    // server as a caching only nameserver (as a localhost DNS resolver only).
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //
    // See the BIND Administrator's Reference Manual (ARM) for details about the
    // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
    
    options {
        // 监听IPv4任意地址的53号端口的请求,如果是业务服务器,请将any修改为本机的IPv4地址
    	listen-on port 53 { any; };
    	// 监听IPv6任意地址的53号端口的请求,如果是业务服务器,请将any修改为本机的IPv6地址
    	listen-on-v6 port 53 { any; };
    	// 将解析出的IPv4地址转换成fec0:1开头的IPv6地址,例如,解析出的IPv4地址是114.114.114.114,那么返回的地址应该是fec0:1::7272:7272
        dns64 fec0:1::/96 {
                clients { any; };
            };
    	directory 	"/var/named";
    	dump-file 	"/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	memstatistics-file "/var/named/data/named_mem_stats.txt";
    	recursing-file  "/var/named/data/named.recursing";
    	secroots-file   "/var/named/data/named.secroots";
    	allow-query     { any; };
    	// 非本地域名的解析请求转发到公网DNS服务器
        forward only;
        forwarders { 114.114.114.114; };
    
    	/* 
    	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
    	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
    	   recursion. 
    	 - If your recursive DNS server has a public IP address, you MUST enable access 
    	   control to limit queries to your legitimate users. Failing to do so will
    	   cause your server to become part of large scale DNS amplification 
    	   attacks. Implementing BCP38 within your network would greatly
    	   reduce such attack surface 
    	*/
    	recursion yes;
    
    	// 将DNS安全设置关闭,否则局域网内的DNS会被认为是非法DNS而无法将请求转发到公网DNS上
    	dnssec-enable no;
    	dnssec-validation no;
    
    	/* Path to ISC DLV key */
    	bindkeys-file "/etc/named.iscdlv.key";
    
    	managed-keys-directory "/var/named/dynamic";
    
    	pid-file "/run/named/named.pid";
    	session-keyfile "/run/named/session.key";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    检查配置文件语法格式

    named-checkconf
    

    启动服务,并设置开机启动

    systemctl start named
    systemctl enable named
    

    修改自定义域配置,在文件的最后增加内部的域名文件解析配置

    vim /etc/named.rfc1912.zones
    
    // named.rfc1912.zones:
    //
    // Provided by Red Hat caching-nameserver package 
    //
    // ISC BIND named zone configuration for zones recommended by
    // RFC 1912 section 4.1 : localhost TLDs and address zones
    // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
    // (c)2007 R W Franks
    // 
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //
    
    zone "localhost.localdomain" IN {
    	type master;
    	file "named.localhost";
    	allow-update { none; };
    };
    
    zone "localhost" IN {
    	type master;
    	file "named.localhost";
    	allow-update { none; };
    };
    
    zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
    	type master;
    	file "named.loopback";
    	allow-update { none; };
    };
    
    zone "1.0.0.127.in-addr.arpa" IN {
    	type master;
    	file "named.loopback";
    	allow-update { none; };
    };
    
    zone "0.in-addr.arpa" IN {
    	type master;
    	file "named.empty";
    	allow-update { none; };
    };
    
    zone "test.com" IN {
    	type master;
    	file "test.com.zone";
    	allow-update { none; };
    };
    
    

    创建域配置文件

    vim /var/named/test.com.zone
    
    $TTL 1D
    @        IN     SOA     @       test.com.(
                            0       ; serial
                            1D      ; refresh
                            1H      ; retry
                            1W      ; expire
                            3H )    ; minimum
     
            IN      NS      @
            IN      A       127.0.0.1
    route   IN      AAAA    fec0:1::1
    nat64   IN      AAAA    fec0:1::1
    web     IN      A       172.31.9.160
    web     IN      AAAA    fec0:1::160
    ftp     IN      AAAA    fec0:1::160
    mail    IN      AAAA    fec0:1::64
    sqlserv IN      AAAA    fec0:1::66
    ad      IN      AAAA    fec0:1::64
    oracle  IN      AAAA    fec0:1::63
    mysql   IN      AAAA    fec0:1::61
    radius  IN      AAAA    fec0:1::64
    
    # 所有的域名映射都将在此定义,若需增加子域名则在配置文件追加行即可
    # A        IPv4域名映射
    # AAAA     IPv6域名映射
    

    使用dig验证解析是否准确

    dig route.test.com @127.0.0.1 AAAA
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <<>> route.test.com @127.0.0.1 AAAA
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21750
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;route.test.com.	IN	AAAA
    
    ;; ANSWER SECTION:
    route.test.com. 86400 IN	AAAA	fec0:1::1
    
    ;; AUTHORITY SECTION:
    test.com.	86400	IN	NS	test.com.
    
    ;; ADDITIONAL SECTION:
    test.com.	86400	IN	A	127.0.0.1
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Wed Aug 28 00:38:07 CST 2019
    ;; MSG SIZE  rcvd: 113
    

    使用nslookup检查解析是否正确

    nslookup -q=aaaa route.test.com 127.0.0.1
    
    Server:		127.0.0.1
    Address:	127.0.0.1#53
    
    route.test.com	has AAAA address fec0:1::1
    
    

    至此NAT64服务器搭建完毕,后续就可以通过该服务器使用IPv6地址访问IPv4的网络了

    展开全文
  • NAT64与DNS64基本原理概述 1.NAT64与DNS64背景 在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。为了实现IPv6与IPv4的互访,IETF(互联网工程任务组...

    NAT64与DNS64基本原理概述

    1.NAT64与DNS64背景
         在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。为了实现IPv6与IPv4的互访,IETF(互联网工程任务组)在早期设计了NAT-PT的解决方案:RFC2766,NAT-PT通过IPv6与IPv4的网络地址与协议转换,实现了IPv6网络与IPv4网络的双向互访。但NAT-PT在实际网络应用中面临各种缺陷,IETF推荐不再使用,因此已被RFC4966所废除。
         为了解决NAT-PT中的各种缺陷,同时实现IPv6与IPv4之间的网络地址与协议转换技术,IETF(互联网工程任务组)重新设计一项新的解决方案:NAT64与DNS64技术。
         NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。
         DNS64则主要是配合NAT64工作,主要是将DNS查询信息中的A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,返回合成的AAAA记录用户给IPv6侧用户。DNS64也解决了NAT-PT中的DNS-ALG存在的缺陷。
         NAT64一般与DNS64协同工作,而不需要在IPv6客户端或IPv4服务器端做任何修改。NAT64解决了NAT-PT中的大部分缺陷,同时配合DNS64的协同工作,无需像NAT-PT中的DNS-ALG等。
         目前NAT64与DNS64均处于IETF的草案阶段,尚未形成正式的RFC文档。但由于IPv6的快速发展、应用场景的需求、IPv6侧网络用户的强烈需求,处于草案阶段的NAT64与DNS64已经正式开始在互联网中部署应用了。NAT64也只是IPv6网络发展初期的一种过渡解决方案,在IPv6发展前期会被广泛部署应用,而后期则会随着IPv6网络的发展壮大,逐步退出历史舞台。
        本文主要讨论DNS64与NAT64的基本原理与应用场景,不涉及DNS64与NAT64协议的具体实现、协议规范及数据处理细节,希望深入了解NAT64及DNS64的网络技术人员或IPv6网络开发人员可直接参考本文后面的IETF草案链接。

    2. NAT64与DNS64的网络部署场景

    NAT64与DNS64的常见应用场景组网如下图所示:

     

     



         在上图中,、DNS64 Server与NAT64 Router是完全独立的部分。其中64:FF9B::/96为DNS64的知名前缀,DNS64一般默认使用此前缀进行IPv4地址到IPv6地址的合成,同时该前缀也作为NAT64的转换前缀,实现匹配该前缀的流量才做NAT64转换。一般在DNS64与NAT64中该前缀被表示为pref64::/n,该前缀可根据实际网络部署进行配置。在NAT-PT中,转换的前缀只支持固定96位长度,而NAT64中则可使用:32, 40, 48, 56, 64 或96等范围,每种长度的前缀转换规则也不完全相同。
        当IPv6 Only User发起连接访问普通IPv6网站,流量将会匹配IPv6默认路由而直接转发至IPv6 Router处理。而访问的是IPv4单协议栈的服务器时,将经DNS64 Server进行前缀合成,Pref64::/n网段的流量将被路由转发至NAT64 Router上,从而实现IPv6与IPv4地址和协议的转换,访问IPv4 网络中的资源。

    3.NAT64与DNS64的报文交互

    NAT64与DNS64的报文交互过程如下图所示:

     

     



    假定的网络地址结构:
    IPv6 Only Client: 2001::1234::1234
    Pref64::/n :  64:FF9B::/96
    NAT64 Public IPv4 Address:22.22.22.22
    WWW.IPV6BBS.CN  IPv4 Address:11.11.11.11

    4.NAT64与DNS64相关协议标准

    NAT64:Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers
    draft-ietf-behave-v6v4-xlate-stateful-12:
    http://datatracker.ietf.org/doc/ ... 6v4-xlate-stateful/

    DNS64: DNS extensions for Network Address Translation from IPv6 Clients to IPv4 Servers
    draft-ietf-behave-dns64-11:
    http://datatracker.ietf.org/doc/draft-ietf-behave-dns64/


    与此相关的文档:
    1.RFC 6052:IPv6 Addressing of IPv4/IPv6 Translators
    链接地址:http://www.rfc-editor.org/rfc/rfc6052.txt

    2.IETF Draft文档:draft-ietf-behave-v6v4-xlate-23
    IP/ICMP Translation Algorithm 
    链接地址:http://datatracker.ietf.org/doc/draft-ietf-behave-v6v4-xlate/
    同时该Draft成为正式RFC后将废除SIIT [RFC 2765] 

    3.IETF Draft文档:draft-ietf-behave-v6v4-framework-10
    Framework for IPv4/IPv6 Translation
    链接地址:http://datatracker.ietf.org/doc/draft-ietf-behave-v6v4-framework/


    本文档会更新与修改,同时逐步对NAT64及DNS64的相关细节部分进行完善补充!

    2010.10.14 :发布NAT64与DNS64基本原理概述V1.0
    2010.12.12 :补充NAT64相关的算法及IETF  RFC/Draft文档!

     

    NAT64与DNS64基本原理概述V1.0:发布于2010.10.14
    本文档会更新与修改,同时逐步对NAT64及DNS64的相关细节部分进行完善补充,V1.0介绍的细节比较少!

     

     
     
     

    技术背景:

    1.NAT64与DNS64背景

    在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。为了实现IPv6与IPv4的互访,IETF(互联网工程任务组)在早期设计了NAT-PT的解决方案:RFC2766,NAT-PT通过IPv6与IPv4的网络地址与协议转换,实现了IPv6网络与IPv4网络的双向互访。但NAT-PT在实际网络应用中面临各种缺陷,IETF推荐不再使用,因此已被RFC4966所废除。

    为了解决NAT-PT中的各种缺陷,同时实现IPv6与IPv4之间的网络地址与协议转换技术,IETF(互联网工程任务组)重新设计一项新的解决方案: NAT64与DNS64技术。

    NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。

    DNS64则主要是配合NAT64工作,主要是将DNS查询信息中的A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,返回合成的AAAA记录用户给IPv6侧用户。DNS64也解决了NAT-PT中的DNS-ALG存在的缺陷。

    NAT64一般与DNS64协同工作,而不需要在IPv6客户端或IPv4服务器端做任何修改。NAT64解决了NAT-PT中的大部分缺陷,同时配合DNS64的协同工作,无需像NAT-PT中的DNS-ALG等。

    目前NAT64与DNS64均处于IETF的草案阶段,尚未形成正式的RFC文档。但由于IPv6的快速发展、应用场景的需求、IPv6侧网络用户的强烈需求,处于草案阶段的NAT64与DNS64已经正式开始在互联网中部署应用了。NAT64也只是IPv6网络发展初期的一种过渡解决方案,在IPv6发展前期会被广泛部署应用,而后期则会随着IPv6网络的发展壮大,逐步退出历史舞台。

    目前互联网大部分内容只对IPv4可用,在互联网内容迁移到IPv6的过渡期,IPv6终端用户也需要访问IPv4内容,NAT64和DNS64技术提供这种服务。

    NAT64和DNS64技术被运营商用来为IPv6终端用户提供IPv4内容访问,其它的技术还有DS-Lite等。

     

    益处:

    提供IPv6客户端对IPv4内容的访问

    无需改造已有IPv4基础设施 

    运营商 NAT64 和 DNS64 解决方案

    NAT64 and DNS64 technical walkthrough

    IPv6终端用户发出的DNS请求通过DNS64设备进行域名解析。

    如果存在请求域名的IPv6 DNS记录(AAAA记录),解析结果将直接返回给IPv6终端用户,IPv6终端用户使用该地址进行访问。

    如果对应域名记录不是基于IPv6而是基于IPv4的DNS记录(A记录),DNS64设备使用其NAT64做前缀将A记录转换为AAAA记录并转发给IPv6终端用户,IPv6终端用户经NAT64设备进行NAT转换访问相应的IPv4服务器。

    解决方案

    此方案可供IPv6网络用户访问IPv4资源,注意,必须是纯IPv6的网络,或IPv4与IPv6双栈用户 若是IPv4用户通过其它方式接入IPv6,则此方案不可用!

    windows xp 无解

    在纯IPv6网络的用户如果需要访问IPv4的网络资源时,一般需要通过第三方软件来实现(Veno\六飞\IPV6VPN等),而现在大家可直接通过支 持NAT64/DNS64的服务器,来实现IPv6与IPv4之间的NAT,从而实现在纯IPv6网络访问纯IPv4服务器资源(一般为Web服务或依靠 域名的IPv4服务器),目前应该只支持TCP\UDP\ICMP等协议的NAT转换。

    注意:NAT64为单向NAT,只支持IPv6端用户发起连接来访问IPv4网络的资源,不支持IPv4用户访问IPv6资源。

    目前Windows Vista与Win 7操作系统的用户,

    再打开“本地连接”网卡的属性,双击“Internet协议版本6(TCP/IPv6)”,然后将IPv6 DNS服务器地址手工设定为:2001:778::37,备份2001:df8:0:7::1

     

    同时将ipv4的dns的202.118.80.2 取消掉,让电脑做ipv6解析,这样就可以访问IPv4的网络资源了。

    重要提醒:切换DNS服务器后,记得在命令提示符下输入:ipconfig /flushdns命令来清空本机的DNS缓存记录。

    而且基于ipv4地址的网站或基于ipv4的应用无法使用。但校园网使用ip访问无压力

    对于Windows XP的用户,无解

    目前互联网上公布的二台DNS服务器地址为:

    2001:778::37

    2001:df8:0:7::1

     

    转载于:https://www.cnblogs.com/lsgxeva/p/9209300.html

    展开全文
  • IPv6 to IPv4过渡技术有手工隧道、GRE隧道、6over4、isatap和NAT64五种。从今天给大家发一系列文章,主要介绍IPv6 to IPv4过渡技术。本文介绍的是NAT64技术。 注意,阅读本文,您需要具有较深的IPv6知识,以及华为...

    IPv6 to IPv4过渡技术有手工隧道、GRE隧道、6over4、isatap和NAT64五种。从今天给大家发一系列文章,主要介绍IPv6 to IPv4过渡技术。本文介绍的是NAT64技术。
    注意,阅读本文,您需要具有较深的IPv6知识,以及华为系列防火墙设备配置知识。

    一、实验要求及拓扑

    实验拓扑图如下所示:
    在这里插入图片描述

    很简单的拓扑图,在上述场景中,PC1配置的是IPv4地址,PC2配置的是IPv6地址,现在使用华为防火墙设备配置NAT64,使得PC1和PC2可以互通。
    注:理论上,华为系列路由器也可以实现类似功能,但是在eNSP方面可能存在问题,因此在这里使用防火墙代替,其原理是相同的。

    二、实验配置命令

    下面,我就把实验中用到的命令粘贴如下

    (一)保证互通基本配置命令

    为了首先保证防火墙与两个PC之间PING功能正常,因此必须要配置安全域和安全策略,在这里为了演示最基本的NAT64功能,因此对这些配置采取了最简单的配置方式:

    firewall zone trust
     add interface GigabitEthernet1/0/1
     add interface GigabitEthernet1/0/2
    security-policy
     rule name 1
      action permit
    

    此外,为了保证接口上PING正常,除了配置IP地址外,还需要执行命令:

    service-manage ping permit
    

    这样,在完成接口上IP地址配置和上述配置后,两个PC应该可以PING通防火墙上的接口IP地址,也就是他们的网关了。

    (二)保证IPv4到IPv6通信——NAT64命令

    在NAT64配置中,要保证IPv4访问IPv6,只需要配置一条NAT64策略即可:

    nat64 static 2000::1 10.1.1.100
    

    同时在接口上应用该NAT64配置:

    interface GigabitEthernet1/0/2
     nat64 enable
    

    上面的配置命令,是将PC2的2000::1的地址映射到10.1.1.100,以此实现PC1对PC2的访问。
    在配置完上述命令后,应该能够实现PC1PING通PC2了。

    (三)保证IPv6到IPv4通信——NAT前缀和NAT策略命令

    但是,此时还不能实现PC2PING通PC1,这是因为在完成上述配置后,PC1发送的ICMP报文经过防火墙后,防火墙将该ICMP报文的源地址转化成NAT64的专用地址。但是在PC2 PING PC1的时候,防火墙不知道将该ICMP的源地址转换成什么IP地址。
    为了实现PC2 PING PC1,此时就必须配置NAT前缀和NAT策略,配置命令如下:

    nat address-group 1 0
     mode pat
     section 0 10.1.1.110 10.1.1.20
    #
    nat-policy
     rule name 1
      action source-nat address-group 1
    #
    nat64 prefix 3000:: 96 
    

    在上述配置命令中,配置了一个NAT地址范围,定义了PC2访问PC1的数据包在穿过防火墙后的源IP地址,而上面的NAT64前缀配置中96是专门为IPv6区域访问IPv4设计的,这样的前缀预留了32位主机地址,而当PC2要访问PC1时,就把该NAT64前缀拿过来,然后在后面24位预留主机IP中填入PC1的IPv4地址即可。

    三、实现效果

    1、PC1和PC2互相访问
    在这里插入图片描述
    在这里插入图片描述

    2、在没有配置反向NAT64之前抓包
    在这里插入图片描述
    3、防火墙上查看NAT64结果
    在这里插入图片描述

    四、附录——防火墙配置命令

    最后,把实验中防火墙配置全体粘贴如下(舍弃不必要配置命令)

    ipv6
    #
     nat64 prefix 3000:: 96
     nat64 static 2000::1 10.1.1.100
    #
    interface GigabitEthernet1/0/1
     undo shutdown
     ip address 10.1.1.254 255.255.255.0
     service-manage ping permit
    #
    interface GigabitEthernet1/0/2
     undo shutdown
     ipv6 enable
     ipv6 address 2000::2/64
     service-manage ping permit
     nat64 enable
    firewall zone trust
     set priority 85
     add interface GigabitEthernet0/0/0
     add interface GigabitEthernet1/0/1
     add interface GigabitEthernet1/0/2
    security-policy
     rule name 1
      action permit
    #
    nat-policy
     rule name 1
      action source-nat address-group 1
    nat address-group 1 0
     mode pat
     section 0 10.1.1.110 10.1.1.200
    

    原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118710599

    展开全文
  • 城域网过渡技术之NAT64+DNS64

    千次阅读 2019-04-02 19:17:56
    IPv6演进过程中,网络侧的IPv6 Ready程度较高,但是业务侧IPv6化还不乐观,因此解决IPv6和IPv4互访,是目前网络建设者重点关注问题,特别是IPv6用户访问IPv4服务器的场景。 ...NAT64则是专为IPv...

           IPv6演进过程中,网络侧的IPv6 Ready程度较高,但是业务侧IPv6化还不乐观,因此解决IPv6和IPv4互访,是目前网络建设者重点关注问题,特别是IPv6用户访问IPv4服务器的场景。

           前两篇NAT444和DS-lite技术都是为了实现IPv4用户访问IPv4业务,IPv6用户访问IPv6业务服务的,不解决IPv4和IPv6互访需求。NAT64则是专为IPv4和IPv6互访而产生,可以与NAT444或者DS-lite结合使用来满足各种业务应用。

           NAT64+DNS64是有状态地址转换协议,支持IPv6用户发起访问IPv4服务器资源,同时,NAT64也支持通过手工配置静态映射关系,实现IPv4用户访问IPv6网络资源。NAT64执行IPv4-IPv6的有状态地址转换和协议转化,DNS64实现域名地址解析,现有如下三种应用:

           应用1:IPv4 IDC/ISP站点为IPv6用户提供业务,NAT64最主要业务

           应用2:运营网络内IPv6用户与IPv4用户互访业务

           应用3:IPv6-only IDC/ISP站点为IPv4用户提供业务,比较超前的业务场景

    对于应用1的场景,具体业务流程如下:

    1. IPv6主机发起example.com的AAAA域名解析到DNS64
    2. DNS64触发查询到DNS66查询结果为NULL,转向触发查询到DNS44
    3. DNS 44返回example.com的地址192.0.2.1给DNS64
    4. DNS64合成IPv6地址2001:db8:cdfe::192.0.2.1返回给IPv6主机
    5. IPv6主机发起目的2001:db8:cdfe::192.0.2.1的IPv6数据包;由于2001:db8:cdfe::为NAT64服务器的通告前缀,数据包被发往NAT64服务器
    6. NAT64执行地址转换和协议转换,目的地址转换为192.0.2.1,源地址根据地址状态转换(2001:db8::1,1500)->(203.0.113.1,2000);在IPv4域内路由到IPv4 服务器
    7. 数据包返回,目的地址和端口为203.0.113.1,2000;
    8. NAT64根据已有记录进行转换,目的地址转换为2001:db8::1,源地址为加了IPv6前缀的IPv4 服务器地址2001:db8:cdfe::192.0.2.1,发送到IPv6主机;

            根据业务流程可以清楚的了解到,DNS64是将IPv4服务器的IPv4地址嵌入到IPv6地址,这个过程就叫做合成。(RFC6052给出了IPv4-embedded IPv6 address的格式)。NAT64在翻译IPv6地址到IPv4地址时,对于目的地址(IPv4服务器的地址,是内嵌IPv4的IPv6地址)按照规则直接转换为IPv4地址,这个过程是无状态的地址转换,对于源地址(IPv6用户地址)通过NAT64转换为公网IPv4地址(通常是从配置的IPv4地址池中随机选择一个可用的IPv4地址和端口号),这个过程是有状态的地址转换。NAT64设备同时记录这个状态信息,用于数据流返回时的地址转换。

           数据流大概如下:


            


            在NAT64+DNS64部署的时候需要特别注意,DNS64地址合成所使用的IPv6-prefix要和NAT64配置的IPv6-prefix一致。如果网络中存在多台NAT64设备时,每台NAT64配置的IPv6-prefix是不同的,DNS64可以通过不同的IPv6-prefix合成IPv6地址来控制NAT64间的业务负载(DNS负载均衡)。

        另外,NAT64设备需要同时向IPv4网络和IPv6网络发布路由。NAT64与IPv6网络连接的端口配置IPv6地址,向IPv6网络发布配置的IPv6-prefix路由;如果NAT64配置了多个IPv6-prefix,需要选择合适的汇总方式发布IPv6路由;NAT64与IPv4网络连接的端口配置IPv4地址,向IPv4网络发布配置的IPv4地址池路由。

        NAT64设备通常部署在网络边界,比如IPv6城域网与IPv4城域网的互联互通层次以及IPv4 IDC中心的出口路由器层次。

    展开全文
  • NAT64与DNS64

    千次阅读 2018-04-18 14:34:25
    转自:http://blog.sina.com.cn/s/blog_626e838c0101hdyn.html技术背景:1.NAT64与DNS64背景在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。...
  • ipv6转ipv4 NAT64与DNS64基本原理概述

    万次阅读 2019-06-15 20:19:19
    ipv6转ipv4 NAT64与DNS64基本原理概述 原文: https://blog.csdn.net/zhangjie1989/article/details/51464251 1.NAT64与DNS64背景 在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此...
  • openwrt使用tayga/totd实现NAT64/DNS64

    千次阅读 2020-02-08 15:34:46
    目前有一些智能家居方案如Thread在使用ipv6进行组网一种基于Thread的IPv6智能家居解决方案,但ipv6 ISP环境部署还未完善,所以很多方案选择使用ipv4...2.使用tayga/totd进行NAT64/DNS64实现6to4 2.1配置tayga实现...
  • 简单基于tun实现的用户态NAT64

    千次阅读 2021-01-24 22:00:04
    嗯,但还是想实现一个完整的用户态NAT64,今天上班,所以没多少时间,下班到家正好家人还没睡,在看殷墟考古(参与殷墟挖掘的尹焕章是我老婆的外婆的爸爸…鲜卑人的后裔…我老婆也是继承祖业,然而也仅仅是爱好,整天...
  • 搭建NAT64/DNS6实现IPv4/v6转换

    千次阅读 2020-06-28 11:44:08
    本文介绍如何利用开源软件NAT64、DNS64进行IPv4、IPv6协议进行互转。
  • 思科ccnp认证网络工程师关于NAT64协议概述一定要看,NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址,但现在又想和因特网上的主机通信时,...
  • 使用tayga测试nat64功能: tayga程序安装在/usr/local/sbin/tayga目录下 配置文件在/usr/local/etc/tayga.conf下 建立db目录mkdir -p /var/db/tayga,这个目录存储map关系 tayga.conf配置文件: tun-device nat64 ...
  • IPv4发展到今天已存在着诸多缺陷,比如地址枯竭...UCloud于2018年上半年开始研发公网入口的IPv6转换,依托NAT64技术和可编程P4交换机,现已成功推出了免费的UCloud公网入口IPv6转换服务。该产品功能简洁易用,申请E...
  • 转载 nat64 流程描述 通俗易懂

    千次阅读 2018-05-05 21:33:33
    NAT64 与 DNS 64 协同工作就像两个翻译官。
  • 支持IPv6 DNS64 / NAT64网络

    万次阅读 2016-05-24 15:10:15
    随着IPv4地址池耗尽在即,企业和移动运营商正越来越多地部署IPv6 DNS64和NAT64网络。一个DNS64 / NAT64网络是继续提供通过翻译访问IPv4的内容仅IPv6网络。根据您的应用程序的性质,过渡有不同的含义: ...
  • Tayga NAT64 IPv6与IPv4互访解决方案

    千次阅读 2020-06-16 12:41:08
    Setting up NAT64 with tayga on Centos7.7 tayga大致工作原理图: 测试拓扑图: setup1:基本环境配置 [root@tayge ~]# systemctl stop firewalld [root@tayge ~]# setenforce 0 [root@tayge ~]# yum -y install ...
  • IOS支持IPv6 DNS64/NAT64网络

    千次阅读 2016-07-04 17:35:49
    IPv6 DNS64/NAT64 Networks。本文是翻译稿。从本文中可以学到有关IPv6过度时期的网络架构和具体IOS应用如何兼容的知识。 随着IPv4地址池即将耗尽,企业和移动通信供应商在逐步部署IPv6 DNS64/NAT64网络。IPv6 DNS...
  • NAT64请求流程

    千次阅读 2018-08-31 16:28:57
    真正作用是:在客户端通过IPV6访问server时,如果server不支持IPV4,NAT64会将IPV6解析成IPV4访问server,能让客户端正常的访问 其它 1、NAT64 是一种有状态的网络地址与协议转换技术 2、通过 IPv6网络侧用户发起...
  • NAT64与DNS64的报文交互

    千次阅读 2018-05-16 09:38:07
    DNS64Server与NAT64Router是完全独立的部分。其中64:FF9B::/96为DNS64的知名前缀,DNS64一般默认使用此前缀进行IPv4地址到IPv6地址的合成,同时该前缀也作为NAT64的转换前缀,实现匹配该前缀的流量才做NAT64转换。...
  • TAYGA is an out-of-kernel stateless NAT64 implementation for Linux that uses the TUN driver to exchange IPv4 and IPv6 packets with the kernel. It is intended to provide production-quality NAT64 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,829
精华内容 17,931
关键字:

nat64