购买VPS主机一般来说会免费送一个IPv4地址(部分NAT VPS为共享IP,购买后会给你一个URL地址,例如CloudIPLC和Uovz VPS),也有部分VPS主机商(例如Linode、DigitalOcean)会赠送一个IPv6,并且VPS创建成功后会自动启用IPv6地址。
但是大部分VPS主机商还是没有提供IPv6地址,主要还是因为IPv6现在普及度不高,且IPv6的用户也可以使用IPv4,如果没有特别需要(据说IPv6网络很“畅通”),IPv4用于建站访问都是没有问题的。前一段时间有其云否主机的客户想要使用IPv6。
对于VPS主机没有配备IPv6地址,我们可以利用Tunnel broker 给VPS主机免费开通IPv6地址访问,同时如果你想让你的Nginx或者Apache支持IPv6用户访问,只需要调整一下Nginx和Apache的配置文件即可。
展开索引
一、开启VPS对IPv6的支持
检查文件 /etc/modprobe.d/disable_ipv6.conf ,开启IPv6。
- alias net-pf-10 off
- options ipv6 disable=0
打开 /etc/sysconfig/network,添加如下:
- NETWORKING_IPV6=yes
编辑网卡配置:/etc/sysconfig/network-scripts/ifcfg-eth0(有也可能是ifcfg-eth1),开启IPv6支持。
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
打开:/etc/sysctl.conf ,开启IPv6支持(没有就添加,有的话要保证是0)。
- net.ipv6.conf.all.disable_ipv6 = 0
- net.ipv6.conf.default.disable_ipv6 = 0
- net.ipv6.conf.lo.disable_ipv6 = 0
执行命令:ifconfig | grep -i inet6,看到有输出就表示你的VPS主机支持IPv6了。
二、申请免费的IPv6地址
网站:
- https://www.tunnelbroker.net
Tunnel broker 为He.net旗下的产品,提供免费的IPv6地址和隧道,你可以利用它在自己的VPS主机上绑定一个新的IPv6地址。注册一个TunnelBroker账号,然后选择“Creat Regular Tunnel”。
根据需要选择访问速度最快的服务器,你只需要填写你自己的VPS的公网IP,点击最下方的“Creat Tunnel”就完成了。
在Tunnel的详情界面,可以看到申请到的IPv6的详细信息。
有几点要用到的信息说明如下:
Server IPv4 Address 服务端IPv4地址(用于通过IPv4连接隧道)
Server IPv6 Address 服务端IPv6地址(用于IPv6网关地址)
Client IPv4 Address 本地IPv4地址(用于让服务器允许连接)
Client IPv6 Address 本地IPv6地址(作为本地IPv6地址使用)
三、VPS手动绑定IPv6地址
3.1 绑定IPv6
在Tunnel页面有一个选项卡为Example Configuration,这里有Tunnel broker自动生成的配置命令,对于CentOS、Ubuntu和Debian可以选择linux-route2或Linux-net-tools。
然后直接复制命令在自己的VPS主机上运行。如下图:
执行ifconfig命令可以查看到IPv6地址已经添加成功了。
3.2 重启后仍有效
按照上面的命令绑定好了IPv6后,如果你重启服务器后就会丢失。一种方法是重启服务器再次运行该命令,当然我们可以利用Linux重启后自动执行脚本的功能,命令如下:
- vim /mycmd/getipv6.sh
- #添加以下内容(替换你自己的)
- ifconfig sit0 up
- ifconfig sit0 inet6 tunnel ::66.220.18.42
- ifconfig sit1 up
- ifconfig sit1 inet6 add 2001:470:c:98a::2/64
- route -A inet6 add ::/0 dev sit1
- #添加可执行权限
- chmod +x /mycmd/getipv6.sh
- #编辑rc.local
- vim /etc/rc.d/rc.local
- #在最后一行加入
- sh /mycmd/getipv6.sh
另一种方法就是手动将IPv6地址绑定到已有了网卡中,命令如下:
- #启用IPv6和设置默认设备为sit1
- vim /etc/sysconfig/network
- #添加以下内容
- NETWORKING_IPV6=yes
- IPV6_DEFAULTDEV=“sit1”
- #设定IPv6网关地址
- cd /etc/sysconfig/network-scripts
- ls
- #编辑现有的网卡配置文件(如网卡为eth0,则编辑ifcfg-eth0),加入(或修改为)以下内容
- IPV6ADDR=服务端IPv6地址
- #在/etc/sysconfig/network-scripts文件夹内,新建文件ifcfg-sit1并编辑,写入以下内容:
- DEVICE=sit1
- ONBOOT=yes
- BOOTPROTO=none
- IPV6INIT=yes
- IPv6TUNNELIPV4=服务端IPv4地址
- IPV6TUNNELIPV4LOCAL=本地IPv4地址
- IPV6ADDR=本地IPV6地址
最后一步要特别注意,若本地IPv4地址为内网地址(如腾讯云),请在此处配置文件里面应填写内网地址,不要直接写公网地址。配置文件写完后,执行service network restart重启网络服务,此时Tunnel应能够正常工作,且重启后不会丢配置。
四、Nginx和Apache支持IPv6
4.1 Nginx IPv6
找到你的Nginx网站配置文件,添加IPv6监听,然后重启Nginx就可以了。代码如下:
- {
- listen 80;
- listen [::]:80; #或者 listen [::]:80 ipv6only=on;
- # listen [::]:80 default ipv6only=on; 只监听IPV6
- # listen [3608:f0f0:3002:31::1]:80;监听指定IPV6地址
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name wzfou.com www.wzfou.com;
- ……
4.2 Apache IPv6
找到httpd.conf配置,修改成这样:
- Listen 123.256.48.99:80
- Listen [2400:6180:0:d0::1f33:d001]:80
- #或者
- Listen 0.0.0.0:80
- Listen [::]:80
4.3 设置好AAAA记录解析
配置好了,现在你只需要到你的DNS处添加一个新的AAAA记录,记录值就是你的IPv6地址,这样IPv6用户就可以访问到你的Web服务器了。
AAAA记录可以和A记录并存,实现双栈访问,但不能与CNAME并存,各大DNS解析服务基本上都支持AAAA记录。
五、总结
如果本地还没有开通原生的IPv6,我们可以通过以下方法开通IPv6,以Windows 10为演示,Win+X 打开CMD 或 Windows PowerShell(管理员),输入命令:
- // 设置 Teredo 服务器,默认为:win10.ipv6.microsoft.com
- netsh interface teredo set state enterpriseclient server=default
- // 测试 IPv6 连接
- ping –6 ipv6.test-ipv6.com
- ping –6 [2001:470:1:18::125]
- // 重置 IPv6 配置
- netsh interface ipv6 reset
重启系统通过命令ipconfig /all
查看当前网络信息,看到 Teredo Tunneling Pseudo-Interface
有以 2001 开头的IPv6地址即可。 启动IE浏览器,访问 http://test-ipv6.com 或 http://ipv6.test-ipv6.com,如果选项卡 “测试项目” 下面的 “不使用域名的 IPv6 测试” 显示成功,则隧道建立成功。Chrome浏览器的测试结果可能和IE不一样,请注意。
VPS绑定好了IPv6后,可以Ping测试一下IPv6网络是否通畅。Linux常用的命令是:ping6 ipv6.google.com。
(END)
文章出自:挖站否 https://wzfou.com/vps-ipv6/,部分内容参考:imfan 版权所有。