iPv6支持
iPv6同iPv4一样是一套作用于网络层的通讯协议,基础前提就是通信双方都应当有iPv6地址以及网络本身支持iPv6。对于个人来讲,本身需要检测下面几点:
- 机器本身是否有iPv6地址,即inet6地址。
- Mac下使用ifconfig,Windows下使用ipconfig,CentOS下使用ip addr
- 网络本身是否支持iPv6
- 可通过 https://test-ipv6.com/index.html.zh_CN 页面查询.一般来说wifi环境下都不支持iPv6,因为默认都是关闭的,相反4G/5G下默认是开启的。
- 个人网络可以通过登录自身路由器及光猫查看是否已支持iPv6。自身网络支持iPv6一个需要拥有独立外网IP(电信多为30网段,没有需电询并要求开通),另一个是光猫IP协议层需开启ipv4/ipv6(登录超级管理员账户),从而支持ipv6通信。
- 路由器本身是否支持iPv6
- 一般登录路由后管,查询网络配置即可。如TP-Link的会有独立iPv6设置项,如果没有就是本身不支持。
- 服务器本身是否支持iPv6
- 可通过”dig AAAA 目标域名”查询对方是否拥有映射好的4A地址
- 通过ping6命令检测对方4A地址是否能正常通信,或者使用ipv6地址的形式直接访问对方服务,看服务是否正常。如http服务地址,https://[xxxx.xxxx.xxx]:port/path 。
- 也可通过访问http://ipv6-test.com/validate.php?url=目标域名 来一键查询目标服务器运营商DNS支持,以及web服务支持情况(实质是访问默认的80/443接口)。
CentOS iPv6地址开启(可选)
如前所述,若查询到没有独立的inet6地址,说明机器本身并没有开启iPv6,需单独开启。 这一节以CentOS7(root权限)为例演示iPv6地址开通步骤,其它系统类似。
- vim /etc/modprobe.d/disable_ipv6.conf,将ipv6 disable项设置为0(默认1)。 options ipv6 disable = 0
- vim /etc/sysconfig/network,将NETWORKING_IPV6设置为yes(默认no) NETWORKING_IPV6 = yes
- 执行service network restart,更新网络配置
- vim /etc/sysctl.conf,将几个disable项改为0(默认1)
1
2net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0 - 执行sysctl -p,开启iPv6
Nginx iPv6支持
我们一般都通过nginx/apache等网络服务器来进行服务管理和转发,因此一般也需要检测网络服务器本身是否支持iPv6。 这一节示例的是nginx,apache同理。 nginx需执行nginx -V来检测,若输出项带有with-ipv6则说明本身已经支持iPv6,反之亦然。nginx高版本默认都是开启了ipv6支持的,若出现不支持的情况,建议直接升级nginx.另外也不建议只开启对iPv6地址的监听,除非是局域网或vpn内等特殊服务。
ipv6隧道建立
如前所述,若运营商本身只支持了iPv4,若想建立iPv6服务,则需要建立隧道来进行转发,及ipv4-6 tunnel。隧道的基本原理则是通过第三方服务(隧道server端)来接收iPv6报文,并通过iPv4包裹iPv6报文的形式来与隧道另一方(client端,目标服务方)进行ipv4通信和ipv6解包,从而实现伪iPv6服务的形式。本节示例的是使用https://tunnelbroker.net 注册免费ipv6隧道的方式。这种方式存在数据泄漏的情况,对于有隐私数据需要保护的请直接上iPv6。
- 进入tunnelbroker填写一些基本资料并注册。建议手机号不要填真实手机号,避免资料外泄,出现境外电话诈骗情形。
- 邮箱激活后登录,在页面注册点击Create Regular Tunnel,并填写如下项
- IPv4 Endpoint:client端,也就是你自身服务器所在的公网ipv4地址。
- Available Tunnel Servers:可用的server端 ,选择就近如香港日本的即可。
- 查看创建好的隧道信息,切换IPv6 Tunnel项,拷贝分配好的iPv6地址。
- Client IPv6 Address:该地址要用来映射自身域名的4A地址
- Server IPv6 Address:该地址要用来后台执行ping6命令,否则隧道会随时断开。
- 切换到Example Configurations,下拉选择自身系统合适的命令并拷贝到如武器下执行。如centOS下选择linux-route-2,命令如下:
1
2
3
4
5
6modprobe ipv6
ip tunnel add he-ipv6 mode sit remote xxxx.xxxx local yyyy.yyyy ttl 255
ip link set he-ipv6 up
ip addr add 2001:470:18:105a::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr其中xxxx.xxxx为已分配好的server端iPv4地址,是访问你iPv6服务时真正经过的iPv4服务器地址。yyyy.yyyy则为自身服务器的内网ip,需手动修改。
- 登录域名服务提供商,添加域名解析的4A地址(第3点提及的、tunnelbroker提供的)。由此实现DNS运营商的支持,一般几秒钟便可生效。
- 在自身服务器后台执行ping server端的iPv6地址,维持隧道通信。
这点是tunnelbroker本身资源不足的限制,自身云服务ipv6支持则没这些问题。