随着IPV4地址耗尽,运营商开始回收并推进IPV4大内网地址,基于IPV4的传统内网映射、动态域名即将失效;但同时我们也要看到,运营商的IPV6推进计划基本快要完成了,现在我们的宽带、手机流量、各大门户网站,其实都已经支持IPV6了。
IPV6地址优势和特点:
1.全局可达性和灵活性
2.网络地址聚合性更高
3.地址的多宿主特性
4.地址自动分配方式简单
5.更容易实现端到端通讯
IPV6分为:
IPV6单播地址
IPV6组播地址
IPV6任意播地址
ipv6的地址格式类似:XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX。它是128位的,一共8段,每段包含四个X,每个X是一个16进制(16=2^4)数(4位),因此一段XXXX是4*4=16位,8段一共128位。相邻字段用冒号分隔。
ipv6的IP包含三部分:
1)站点前缀:前三段(48位),通常由ISP或者区域网络注册机构分配的公共拓扑;
2)子网ID:第四段(16位),是站点的内部ID;
3)接口ID:最右侧的四段(64位),接口ID可以从MAC地址自动配置,也可手动配置。
IP示例:
2001:0db8:3c4d:0015:0000:0001:1a2f:1a2b
2001:0db8:3c4d是站点前缀,0015是子网ID,0000:0001:1a2f:1a2b是接口ID。
IPV6的简化表示法,每段中前面的0000可以省略,连续的多段0000可以省略为::,但只能出现一次。
案例:
- 1080:0:0:0:8:800:200c:417a -> 1080::8:800:200c:417a
- Ff01:0:0:0:0:0:0:101 -> ff01::101
- 0:0:0:0:0:0:0:0 -> ::
- 0:0:0:0:0:0:0:1 -> ::1(代表ipv4中的127.0.0.1)
- ::ffff:10.3.69.93是支持IPV4映射过来的IPV6地址,它是在不支持IPV6的节点上用来表示IPV4节点,原ipv4地址为10.3.69.93
1、在 tunnelbroker.net 上申请一个免费的 IPv6 地址。
1) 访问 tunnelbroker.net 注册一个自己的账号。
2) 创建IPV6隧道
选择 Create Regular Tunnel 创建一个到自己公网 IP 的通道。(经本人测试,Tunnel Servers 可用 Tokyo, JP,Los Angeles, CA, US 可以配置,但实际网络环境不可用)。

输入服务器IP 然后选择 日本 点击下面的创建 ,经本人测试可用:

3) 找到 Example Configurations,选择操作系统对应的脚本(CentOS 7.x 选择 Linux-net-tools)

复制下来,在 linux 的控制台中执行脚本:
- ifconfig sit0 up
- ifconfig sit0 inet6 tunnel ::66.220.15.43
- ifconfig sit1 up
- ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
- route -A inet6 add ::/0 dev sit1

4) ping一下服务器的 IPv6 地址,看看是否工作正常(CentOS 上 IPv6 版的 ping 名为 ping6),如果通了就说明可以了:
- ping6 2001:4e0:d:e60::2
- PING 2001:4e0:d:e60::2(2001:4e0:d:e60::2) 56 data bytes
- 64 bytes from 2001:4e0:d:e60::2: icmp_seq=1 ttl=64 time=340 ms
- 64 bytes from 2001:4e0:d:e60::2: icmp_seq=2 ttl=64 time=348 ms
- 64 bytes from 2001:4e0:d:e60::2: icmp_seq=3 ttl=64 time=349 ms
2、修改 /etc/init.d/network 网卡的启动脚本, 系统重启时自动配置IPv6 tunnel
编辑脚本:
- cp /etc/init.d/network /etc/init.d/network_backup
- vi /etc/init.d/network
在 touch /var/lock/subsys/network 之前添加以下脚本:
- # 添加 IPv6 脚本支持
- ifconfig sit0 up
- ifconfig sit0 inet6 tunnel ::66.220.15.43
- ifconfig sit1 up
- ifconfig sit1 inet6 add 2001:4e0:d:e60::2/64
- route -A inet6 add ::/0 dev sit1
- #修改结束

现在每次重启机器都可以自动分配好 IPv6 地址。
3、域名解析 ,使用 AAAA 记录设置 IPv6
接下来就是ping6 域名了:

4、网站配置IPV6
为域名配置AAAA记录,A记录为IPV4地址,AAAA记录为IPV6地址,IP地址在我们购买VPS时会告诉我们。

为我们的web服务配置IPV6监听,比如我所使用的APPNODE面板需要单独为IPV6配置监听服务。

DNS同步需要一些时间,随后我们对域名进行ping测试,此时解析的已经是IPV6地址了。(注意,解析IPV6地址的前提是你的电脑也是IPV6):
- 正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据:
- 来自 2a00:b700:2::9 的回复: 时间=134ms
- 来自 2a00:b700:2::9 的回复: 时间=137ms
- 来自 2a00:b700:2::9 的回复: 时间=134ms
- 来自 2a00:b700:2::9 的回复: 时间=134ms
网页解析测试,按F12查看,此时网站为IPV6响应,配置完成。

5、 配置家庭宽带IPV6地址
IPV6号称可以为地球上的每一粒沙子配置IP地址,目前三大运营商的宽带和数据流量都已经配置公网IPV6了,但是很多家用路由器尚不支持IPV6,这里我以我的Padavan老毛子固件为例展示IPV6的配置。
如果使用路由器拨号,需要检查光猫是否开启了IPV6桥接,如果没有,百度一下,实在不行你就打客服嘛。

路由器设置,两步,配置完成后保存重启路由器,此时局域网内的设备都获取到了公网地址。


查看电脑IP地址:

此时ping外网地址已经通了:
- 正在 Ping 9sb.org [2a00:b700:2::9] 具有 32 字节的数据:
- 来自 2a00:b700:2::9 的回复: 时间=134ms
- 来自 2a00:b700:2::9 的回复: 时间=137ms
- 来自 2a00:b700:2::9 的回复: 时间=134ms
- 来自 2a00:b700:2::9 的回复: 时间=134ms
进行IPV6测试,此网站可以确定我们IPV6的状态test-ipv6.com。
外网ping进来是不通的,不是说IPV6都是公网地址吗?为什么不通呢?
这里就要重点说一下,安全问题!
如果你仅仅是想要访问外部IPV6地址,那么配置到此就结束了,如果你确定你要将自己的内部网络配置为IPV6公网地址并直接暴露在互联网上,自愿承受因此带来的风险,勇士请继续看下去!
IPV6之所以不能被外网访问,是因为我们的设备还有至少三层防火墙。
第一层防火墙是电信运营商防火墙,出于安全考虑,运营商会阻断我们80、443、21等常见端口的流量,并限制UDP发包;我们是不能关闭运营商防火墙的,所以只能选择使用其他端口。
第二层防火墙是路由器内的防火墙,此防火墙默认配置为禁止外部访问,在这个默认状态下,我们的IPV6设备是安全的,等于还是处于内网之中;此防火墙可以关闭。
第三层防火墙是设备自身的防火墙,比如windows10默认就禁止了ping协议,即便是公网的机器也不能ping通;此时我们可以设置解除ping和开放端口。
关闭路由器防火墙(此时你必须明确,你已经没有内网保护了,你必须为自己的信息安全负责!)

关闭windows防火墙,或允许ping通过:

从外网ping内网设备地址,已经ping通了,此时内部设备全部为IPV6公网状态:

6、可使用以下网址测试服务器对 IPv6 的支持情况:
https://ipv6.jmu.edu.cn/
7、IPV6 DNS服务器
阿里ipv6 dns:2400:3200::1 / 2400:3200:baba::1
百度ipv6 dns:240c::6666
天地互连 ipv6 dns:240C::6666 240C::6644
谷歌 vip6 dns:2001:4860:4860::8888/2001:4860:4860::8844
阿里云公开的 CentOS6和CentOS7 镜像将 IPv6 支持给去掉了,需要加载相关模块。


并且在内核目录下查找到一个文件:

但是不能编辑:
![]()
![]()
1、修改 /etc/modprobe.d/disable_ipv6.conf(没有则创建),开启centos系统的IPV6功能
修改 options ipv6 disable 为 0:
- cp /etc/modprobe.d/disable_ipv6.conf /etc/modprobe.d/disable_ipv6.conf_backup ##先备份原始配置
-
- vi /etc/modprobe.d/disable_ipv6.conf
-
- 修改前:
- alias net-pf-10 off
- options ipv6 disable=1
-
- 修改后:
- alias net-pf-10 off
- options ipv6 disable=0
2、修改 /etc/sysconfig/network(没有则创建)
修改 NETWORKING_IPV6为yes:
- cp /etc/sysconfig/network /etc/sysconfig/network_backup
- vi /etc/sysconfig/network
-
- 修改前:
- PEERNTP=no
- NETWORKING_IPV6=no
- GATEWAY=139.255.255.0
-
- 修改后:
- PEERNTP=no
- NETWORKING_IPV6=yes
- GATEWAY=139.255.255.0
3、修改 /etc/sysconfig/network-scripts/ifcfg-eth0
添加 IPV6INIT 为 yes 和 IPV6_AUTOCONF 为 yes,主要是新增 IPV6ADDR 和 IPV6_DEFAULTGW 两部分, 网址根据情况配置IPV6INIT="yes"
IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy" IPV6ADDR=2001:250:4000:2000::53 IPV6_DEFAULTGW=2001:250:4000:2000::1等:
- cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0_backup
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
-
- 修改前:
- DEVICE=eth0
- ONBOOT=yes
- BOOTPROTO=static
- IPADDR=10.10.10.1
- NETMASK=255.255.254.0
-
- 修改后:
- DEVICE=eth0
- ONBOOT=yes
- BOOTPROTO=static
- IPADDR=10.10.10.1
- NETMASK=255.255.254.0
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
4、修改 /etc/sysctl.conf
修改 net.ipv6.conf.all.disable_ipv6 为 0, net.ipv6.conf.default.disable_ipv6 为 0 和 net.ipv6.conf.lo.disable_ipv6 为 0:
- cp /etc/sysctl.conf /etc/sysctl.conf_backup
- vi /etc/sysctl.conf
-
- 修改前:
- vm.swappiness = 0
- net.ipv4.neigh.default.gc_stale_time=120
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.default.arp_announce = 2
- net.ipv4.conf.all.arp_announce=2
- net.ipv4.tcp_max_tw_buckets = 5000
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_max_syn_backlog = 1024
- net.ipv4.tcp_synack_retries = 2
- net.ipv6.conf.all.disable_ipv6 = 1
- net.ipv6.conf.default.disable_ipv6 = 1
- net.ipv6.conf.lo.disable_ipv6 = 1
- net.ipv4.conf.lo.arp_announce=2
-
- 修改后:
- vm.swappiness = 0
- net.ipv4.neigh.default.gc_stale_time=120
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.default.arp_announce = 2
- net.ipv4.conf.all.arp_announce=2
- net.ipv4.tcp_max_tw_buckets = 5000
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_max_syn_backlog = 1024
- net.ipv4.tcp_synack_retries = 2
- net.ipv6.conf.all.disable_ipv6 = 0
- net.ipv6.conf.default.disable_ipv6 = 0
- net.ipv6.conf.lo.disable_ipv6 = 0
- net.ipv4.conf.lo.arp_announce=2
5、创建系统在启动时自动加载 IPv6 模块的脚本
创建脚本文件 ipv6.modules:
- vi /etc/sysconfig/modules/ipv6.modules
-
- !/bin/sh
- if [ ! -c /proc/net/if_inet6 ] ; then
- exec /sbin/insmod /lib/modules/uname -r/kernel/net/ipv6/ipv6.ko
- fi
6、重启系统,加载 IPv6 模块
查看是否开启Ipv6:
lsmod | grep ipv6

果没有加载执行该命令加载:
modprobe ipv6
ifconfig查看是否有ipv6地址:
查看 IPv6 模块:
- ifconfig | grep -i inet6 #### 查看ipv6的信息,有看到输出就可以
- inet6 addr: fe80::x:x:x:x/64 Scope:Link
- inet6 addr: fe80::x:x:x:x/64 Scope:Link
- inet6 addr: x:x:x:x::2/64 Scope:Global
- inet6 addr: fe80::x:x/128 Scope:Link
- inet6 addr: ::1/128 Scope:Host

netstat –tuln查看服务监听的ip是否有ipv6格式地址:

打开/etc/sysconfig/network-scripts:

打开ifcfg-ensxxx配置静态ipv6地址:
- IPV6INIT=“yes” //是否开机启用IPV6地址
- IPV6_AUTOCONFI=“no” //是否使用IPV6地址的自动配置
- IPV6ADDR=“2001:da8:8003:801:10:3:71:220” //IPV6地址
- IPV6DEFAULTGW=“2001:da8:8003:801::1%ens192” //IPV6地址网关
- IPV6_FAILURE_FATAL=no //如果配置失败,不会关闭网口,保证IPV4的配置还能生效
配置完成后重启生效:
service network restart
配置完成后使用ssh/scp/rsync/ping命令不在需要指定网卡名。

CentOS5 IPV6配置:
- vim /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0
- BOOTPROTO=static
- BROADCAST=192.73.1.255
- HWADDR=00:0C:29:2C:16:24
- IPADDR=192.73.1.45
- IPV6ADDR=2021:1:14:18::45/64
- IPV6_DEFAULTGW=2021:1:14:18::1
- IPV6INIT=yes
- IPV6_AUTOCONF=no
- NETMASK=255.255.254.0
- NETWORK=192.73.0.0
- ONBOOT=yes
- vim /etc/resolv.conf
- search 0.5.4a3
- nameserver 218.30.19.40
- nameserver 114.114.114.114
- vim /etc/sysconfig/network
- NETWORKING=yes
- NETWORKING_IPV6=yes
- HOSTNAME=2.0.5.4a3
- GATEWAY=192.73.0.1
- IPV6_DEFAULTGW=2021:1:14:18::1%eht0
CentOS6 IPV6配置:
IPV6地址为2020:2500:4000:2000::88,前缀64。网关为2020:2500:4000:2000::1
- vim ifcfg-ens33
- DEVICE=eth0
- TYPE=Ethernet
- ONBOOT=yes
- NM_CONTROLLED=yes
- BOOTPROTO=none
- IPADDR=192.73.1.46
- GATEWAY=192.73.0.1
- NETMASK=255.255.254.0
- DNS1=218.30.19.40
- DNS2=114.114.114.114
- IPV6INIT=yes
- IPV6ADDR=2021:5:6:2000::47/64
- IPV6_DEFAULTGW=2021:5:6:2000::1
- PREFIX=23
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=yes
- IPV6_AUTOCONF=no
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- NAME="System eth0"
- HWADDR=00:0C:29:7F:E8:55
Centos7 IPV6配置:
- vim ifcfg-ens33
-
- PROXY_METHOD="none"
- BROWSER_ONLY="no"
- BOOTPROTO="static"
- DEFROUTE="yes"
- IPV4_FAILURE_FATAL="no"
- IPV6INIT="yes"
- IPV6_AUTOCONF="yes"
- IPV6_DEFROUTE="yes"
- IPV6_FAILURE_FATAL="no"
- IPV6_ADDR_GEN_MODE="stable-privacy"
- NAME="ens33"
- UUID="daf72edb-d29f-453a-beca-e2396b4dbbf2"
- DEVICE="ens33"
- ONBOOT="yes"
- IPV6ADDR=2020:2500:4000:2000::58/64
- IPV6_DEFAULTGW=2020:2500:4000:2000::1/64
- IPADDR=192.73.1.45
- GATEWAY=192.73.0.1
- NETMASK=255.255.254.0
- DNS1=218.30.19.40
- DNS2=114.114.114.114
- IPV6_PRIVACY=no
- ZONE=public
增加网关:
- vim /etc/sysconfig/network
- NETWORKING=yes
- NETWORKING_IPV6=yes
- GATEWAY=192.73.0.1
- IPV6_DEFAULTGW=2021:5:6:2000::1%ens33
添加IPV6 DNS:
- vim /etc/resolv.conf
-
- # Generated by NetworkManager
- search localdomain
- nameserver 218.30.19.40
- nameserver 114.114.114.114
- nameserver 2400:3200:baba::1
- nameserver 240c::6666
添加IPV6路由:
- route -A inet6 add default gw 2020:2500:4000:2000::1/64 dev eth0
- route -A inet6 -n
- route -A inet6 del 2020:2500:4000:2000::/64
关闭防火墙:
service ip6tables stop
测试:
- C:\Users\Lenovo>ping -6 fe80::14cc:7f77:da11:3ef1%9 // ping -6 目标机IPv6%本机IPv6端口
- C:\Users\Lenovo>ping6 fe80::8db7:57f0:78fe:f6d2%ens33 // ping6 目标机IPv6%本机IPv6端口
访问:
http://[2020:2500:4000:2000::58]:8080/
Windows和Linux互相ping通:
windows和linux之间相互ping通,需要DNS一样都为240c::6666,并且Linux要设置IPV6地址为手动。
windows7:
- 2021:5:6:2000::45
- 64
- 2021:5:6:2000::1
- 240c::6666
- 2400:3200:baba::1
Linux:
- TYPE=Ethernet
- PROXY_METHOD=none
- BROWSER_ONLY=no
- BOOTPROTO="static"
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=no
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=ens33
- #UUID="f2182a02-5fa2-4dba-aea3-6a16692ae005"
- DEVICE=ens33
- ONBOOT=yes
- IPADDR=192.73.1.47
- PREFIX=23
- HWADDR=00:0C:29:01:14:18
- GATEWAY=192.73.0.1
- DNS1=218.30.19.40
- DNS2=114.114.114.114
- IPV6ADDR=2021:5:6:2000::47/64
- IPV6_DEFAULTGW=2021:5:6:2000::1
- IPV6_PRIVACY=no
- DNS3=240c::6666
- UUID=c96bc909-188e-ec64-3a96-6a90982b08ad
测试:
- ping -6 2021:5:6:2000::47
- ping6 2021:5:6:2000::45
- https://[2021:5:6:2000::45]:3000/login.html
CentOS7:
- TYPE=Ethernet
- PROXY_METHOD=none
- BROWSER_ONLY=no
- BOOTPROTO=none
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=yes
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=ens33
- UUID=fcd4e886-2dec-4475-877e-0446fd5efeeb
- DEVICE=ens33
- ONBOOT=yes
- IPADDR=192.73.1.47
- PREFIX=23
- GATEWAY=192.73.0.1
- DNS1=218.30.19.40
- DNS2=114.114.114.114
- IPV6ADDR=2021:5:6:2000::47/64
- IPV6_DEFAULTGW=2021:5:6:2000::1
- DNS3=240c::6666
- IPV6_PRIVACY=no
- vim /etc/resolv.conf
- # Generated by NetworkManager
- nameserver 218.30.19.40
- nameserver 114.114.114.114
- nameserver 240c::6666
windows7:
- 2021:5:6:2000::49
- 64
- 2021:5:6:2000::1
- 240c::6666
- 2400:3200:baba::1
测试:
- ping6 2021:5:6:2000::49
- ping -6 2021:5:6:2000::47
配置临时的IPV6地址,配置的地址在系统重启或者网卡重启后失效:
ifconfig eth0 inet6 add 2001:250:250:250:250:250:250:222/64
为网卡ethX添加IPV6网关,配置的网关在系统重启或者网卡重启后失效:
route -A inet6 add default gw 2001:250:250:250::1 dev ethX
ping 一个可连通的IPV6地址:
ping6 2001:250:250:250:250:250:250:222
查看ipv6地址
cat /proc/net/if_inet6
1、ping命令
- ping6/ping -6 ipv6地址%网络的网段名
- ping6/ping -6 ipv6地址 -I 网络网段名

2、 ssh命令
- ssh 用户名@Ipv6地址%网段名
- ssh fe80::20c:29ff:feb1:bc32%ens192

3、scp命令
- scp 文件 [ipv6地址]:需要拷贝的路径
- scp -r mysql-libs.zip [fe80::20c:29ff:fe47:8073%ens32]:/root


4、rsync命令
- rsync –itv 文件 [ipv6地址%网段名]:拷贝路径
- rsync -rtv kafka_2.11 [fe80::20c:29ff:fe47:8073%ens32]:/root/test

5、获取网卡名
cat /proc/net/dev| awk '{i++;if(i>2){print $1}}'|awk -F ':' '{print $1}'|grep -v -E 'docker|flannel|lo|veth'
