为何要使用ipv6
目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。
主流的ipv6方案
1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6
2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。
3.6RD方案 :基于ipv4网络引入ipv6方案,当用户使用ipv6接入时,CPE与
DR网关直接建立IPV6 over IPV4的隧道。
3.6in4方案 :一种IPv6转换传送机制,是将IPv6的数据包直接封装在IPv4数据包中。
3.6to4方案 :6to4定义了一个网络前缀2002::/16用于表达这是一个6to4网络整体,任何一个公共IPv4地址将地址的十六进制值加在6to4网络前缀之后,从而产生一个前缀数为48的相应IPv4的6to4子网的网络前缀。
本文章主要是讲解 DS -Lite 方案 。
DS -Lite 组成
原理参考文献:https://docs.citrix.com/zh-cn/citrix-adc/current-release/citrix-adc-support-for-telecom-service-providers/dual-stack-lite.html
主要组成
1.实现B4功能的家庭网关或直连主机;
2.实现AFTR功能的网络设备;
3.位于B4和AFTR之间的隧道。
B4设备可以采用路由型家庭网关实现,也可以在终端PC上运行DS-Lite客户
端软件实现。
AFTR设备负责执行隧道封装、解封装和IPv4-IPv4地址翻译,提供多个用户
对全局IPv4地址池的复用。由于采用IPv6源地址作为隧道起始端的标识,终端主
机的私有地址可以重叠而不会产生混乱。
隧道即轻型双栈模型采用的IPv4-in-IPv6隧道,通过隧道,IPv4流量可穿越
IPv6网络到达电信级IPv4-IPv4 NAT设备(AFTR),CPE无需对私有IPv4地址进
行翻译,从而避免了多级NAT。
AFTR环境搭建
系统需求 :必须支持ipv6、tun、内核必须高于2.6.26(可以在虚拟机搭建,这边使用的是ubuntu16.0.4版本(桌面版),测试过可创建成功)
AFTR安装
1.下载aftr压缩包
cd /root
wget http://ftp.isc.org/isc/aftr/aftr-1.1.tar.gz
tar zxvf aftr-1.1.tar.gz
cd aftr-1.1
./configure
make
2.AFTR配置
aftr.conf配置:将aftr.conf配置文件放在/etc目录下
cd /etc
vi aftr.conf
aftr.conf配置内容
defmtu 1420
defmss on
deftoobig off
acl6 2001:240:63f:ff10::/64 # 需要接入的ipv6网段,b4与aftr服务器端的连接桥梁
address endpoint 2001:240:63f:ff11::1 # aftr侧隧道端点
address icmp 192.168.0.111 #
pool 192.168.0.111 #aftr上用于nat 转换的Ipv4地址池
aftr-script:将该配置文件放在 /usr/sbin/ 目录下
cd /usr/sbin
vi aftr-script
aftr-script 配置内容
aftr_start()
{
set -x
ip link set tun0 up #启用tun0
ip addr add 192.0.0.1 peer 192.0.0.2 dev tun0 #建立tun0隧道(点对点隧道)
ip route add 192.168.0.111/32 dev tun0 #添加NAt的地址指向隧道tun0
ip -6 addr add fe80::1 dev tun0 #添加tun0的ipv6地址
ip -6 route add 2001:240:63f:ff11::/64 dev tun0 #将aftr侧隧道地址指向tun0
}
aftr_stop()
{
set -x
ip link set tun0 down
}
case "$1" in
start)
aftr_start
;;
stop)
aftr_stop
;;
*)
echo "Usage: $0 start|stop"
exit 1
;;
esac
exit 0
3.开启ipv4、ipv6转发
cd /etc
vi sysctl.conf
修改ipv4、ipv6的转发配置
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
需要开启iptable的开放中转端,否则B4端无法访问外网
iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.0.111 -o ens33 -j MASQUERADE
使用命令让配置生效sysctl -p
4.网络配置
aftr侧的网络配置
如果是桌面版的可以直接使用管理器配置,需要配置ipv4、ipv6
ipv4的配置是为了让aftr服务器能够上网
ipv6的配置是为了能够连接B4
5.启动aftr
./aftr -c /etc/aftr.conf -s /usr/sbin/aftr-script -g
B4端配置
1.B4端网络配置
B4也是用一台ubuntu系统搭建的,网络配置如下
B4与aftr建立ipv6隧道
modprobe lp #添加模块命令
modprobe ip6_tunnel
ip -6 route add 2001:240:63f:ff11::1/128 via 2001:240:63f:ff10::1 //如果在配置网卡时没有添加IPV6网关时,需执行这条命令
ip -6 tunnel add tun0 mode ipip6 remote 2001:240:63f:ff11::1 local 2001:240:63f:ff10::2 dev ens33 encaplimit none
ip link set tun0 up
ip addr add 192.0.0.2 peer 192.0.0.1 dev tun0
ip route add 0.0.0.0/0 via 192.0.0.1
测试AFTR服务器是否可以
1.检测ipv6隧道是否打通
在B4端ping aftr端的tun0虚拟ip,ping成功代表隧道已经打通了
ping 192.0.0.1
在aftr端查看(开启调试模式 可用telnet172.0.0.1 1015或在开启aftr时加上-g)
在tun0加上DNS就可以ping域名啦
vi /etc/resolv.conf
nameserver 114.114.114.114
2.检测B4端是否可访问外网
在B4端去ping 外网ip
ping 114.114.114.114
在aftr端抓包查看
在tun0抓包