如今很多产品,比如 Apple AppStore,需要 IPv6 地址才能继续开展业务,但是像国内很多如阿里云、华为云等主机商都不支持 IPv6,那么要如何才能支持 IPv6 呢?
在 IPv6 推行时,为兼容现有的 IPv4 网络,过渡技术 - IPv6 协议隧道方法 应运而生,接下来介绍的由 HE.NET (Hurricane Electric) 推出的免费 IPv6 Tunnel Broker 便是利用这个技术,使仅有 IPv4 的主机支持 IPv6。
经实际测试目前支持的主机包括不限于 阿里云、华为云、微软 Azure、亚马逊 AWS EC2(目前 AWS 已可分配自己的 IPv6,参见《Amazon AWS EC2 如何安装 CentOS7、修改主机名(hostname)、开启 IPv6》)、拥有固定 IP 的家用电脑等。
其注册地址:Register,全站英文,注册界面可参考下面截图:
登录后,点击控制面板左边的 Create Regular Tunnel 开始申请一个 IPv6 地址,界面大致如下:
申请前先确保自己的主机可以 ping 得通,否则无法创建,在 IPv4 Endpoint (Your side) 输入主机 IP:
然后选择离主机近的节点,HE.NET 四大洲都有接入点,但是不能看地址选择,正确的选择应是通过 ping 或 traceroute 来确定,比如 亚洲有新加坡、香港、日本三个接入点,地域上离大陆很近,然而延迟非常高,并不适合。
创建后点击控制面板左侧的 Main Page,即可看到刚创建的隧道,至此,IPv6
申请完成。
点击刚创建的隧道的 Name 进入编辑模式,可以看到申请的 IPv6 地址,若要删除隧道则可以在此点击 Delete Tunnel,在 Client IPv4 Address 可以修改 IP:
点击 Example Configurations,下拉框选择主机的操作系统获取相应的配置代码:
如 Debian/Ubuntu,登录主机命令行,编辑 /etc/network/interfaces
(PS:CentOS 是 /etc/sysconfig/network-scripts/ifcfg-eth0
),将刚才的配置代码复制进来:
$ sudo vim /etc/network/interfaces
.....
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address [client ipv6 addr]
netmask 64
endpoint [server ipv4 addr]
local [client ipv4 addr]
ttl 255
gateway [server ipv6 addr]
注意,如果主机有私网地址,那么配置里的 [client ipv4 addr] 应该填私网地址。
使 IPv6 生效:
$ sudo ifup he-ipv6
失效则是(不想用了记得删掉刚才的配置,否则重启后还是会自动启用):
$ sudo ifdown he-ipv6
测试一下:
$ ping6 google.com
PING google.com(nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e)) 56 data bytes
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=1 ttl=48 time=30.8 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=2 ttl=48 time=30.7 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=3 ttl=48 time=30.9 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=4 ttl=48 time=30.8 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 30.775/30.839/30.904/0.132 ms
$ curl ipv6.icanhazip.com
2001:470:***
按步骤操作还是用不了:
1、配置里的 local x.x.x.x 配置对了吗?
有内网地址必须填内网地址。
2、系统禁用 IPv6 了吗?
主要出现在阿里云 ECS,修改 /etc/sysctl.conf ,将 disable_ipv6
相关字段参数都设为 0,大致是这样的(不同操作系统不同版本可能不同):
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
3、到 server ipv4 addr 通吗?
通过 ping 或 路由跟踪 取最佳节点(PS:国内不选香港、日本、新加坡接入点,延迟比美国还高。)
4、如何设置 IPv6 优先?
默认都是 ipv6 优先,Windows 可以执行以下命令查看:
C:\Windows\System32>netsh int ipv6 show prefix
查询活动状态...
优先顺序 标签 前缀
---------- ----- --------------------------------
50 0 ::1/128
40 1 ::/0
30 1 2002::/16
20 3 ::/96
10 4 ::ffff:0:0/96
5 1 2001::/32
5.添加ipv6的dns服务器,在最后添加nameserver 2001:4860:4860::8888,nameserver 2001:4860:4860::8844谷歌的ipv6 dns服务器
# vim /etc/resolv.conf options timeout:1 attempts:1 rotate nameserver x.x.x.x nameserver x.x.x.x nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844
这时再ping6就正常了
# ping6 -c 5 ipv6.google.com PING ipv6.google.com(tsa03s01-in-x0e.1e100.net) 56 data bytes 64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=1 ttl=55 time=25.5 ms 64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=2 ttl=55 time=25.5 ms 64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=3 ttl=55 time=33.1 ms 64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=4 ttl=55 time=25.5 ms 64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=5 ttl=55 time=25.4 ms --- ipv6.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4031ms rtt min/avg/max/mdev = 25.473/27.040/33.180/3.073 ms
6.添加路由
route -A inet6 add ::/0 dev he-ipv6
附录:iptables -t filter -I INPUT -p 41 -j ACCEPT iptables -t filter -I OUTPUT -p 41 -j ACCEPT
原文地址,图片可以显示 https://www.uulucky.com/show-224057.html