LinuxVPS/云主机Web建站系统运维

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

购买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地址:绑定IPv6/使Nginx与Apache支持IPv6

一、开启VPS对IPv6的支持

检查文件 /etc/modprobe.d/disable_ipv6.conf ,开启IPv6。

  1. alias net-pf-10 off
  2. options ipv6 disable=0

打开  /etc/sysconfig/network,添加如下:

  1. NETWORKING_IPV6=yes

编辑网卡配置:/etc/sysconfig/network-scripts/ifcfg-eth0(有也可能是ifcfg-eth1),开启IPv6支持。

  1. IPV6INIT=yes
  2. IPV6_AUTOCONF=yes

打开:/etc/sysctl.conf ,开启IPv6支持(没有就添加,有的话要保证是0)。

  1. net.ipv6.conf.all.disable_ipv6 = 0
  2. net.ipv6.conf.default.disable_ipv6 = 0
  3. net.ipv6.conf.lo.disable_ipv6 = 0

执行命令:ifconfig | grep -i inet6,看到有输出就表示你的VPS主机支持IPv6了。

二、申请免费的IPv6地址

网站:

  1. https://www.tunnelbroker.net

Tunnel broker 为He.net旗下的产品,提供免费的IPv6地址和隧道,你可以利用它在自己的VPS主机上绑定一个新的IPv6地址。注册一个TunnelBroker账号,然后选择“Creat Regular Tunnel”。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

根据需要选择访问速度最快的服务器,你只需要填写你自己的VPS的公网IP,点击最下方的“Creat Tunnel”就完成了。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

在Tunnel的详情界面,可以看到申请到的IPv6的详细信息。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持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-route2Linux-net-tools。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

然后直接复制命令在自己的VPS主机上运行。如下图:

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

执行ifconfig命令可以查看到IPv6地址已经添加成功了。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

3.2  重启后仍有效

按照上面的命令绑定好了IPv6后,如果你重启服务器后就会丢失。一种方法是重启服务器再次运行该命令,当然我们可以利用Linux重启后自动执行脚本的功能,命令如下:

  1. vim /mycmd/getipv6.sh
  2. #添加以下内容(替换你自己的)
  3. ifconfig sit0 up
  4. ifconfig sit0 inet6 tunnel ::66.220.18.42
  5. ifconfig sit1 up
  6. ifconfig sit1 inet6 add 2001:470:c:98a::2/64
  7. route -A inet6 add ::/0 dev sit1
  8. #添加可执行权限
  9. chmod +x /mycmd/getipv6.sh
  10. #编辑rc.local
  11. vim /etc/rc.d/rc.local
  12. #在最后一行加入
  13. sh /mycmd/getipv6.sh

另一种方法就是手动将IPv6地址绑定到已有了网卡中,命令如下:

  1. #启用IPv6和设置默认设备为sit1
  2. vim /etc/sysconfig/network
  3. #添加以下内容
  4. NETWORKING_IPV6=yes
  5. IPV6_DEFAULTDEV=“sit1”
  6. #设定IPv6网关地址
  7. cd /etc/sysconfig/network-scripts
  8. ls
  9. #编辑现有的网卡配置文件(如网卡为eth0,则编辑ifcfg-eth0),加入(或修改为)以下内容
  10. IPV6ADDR=服务端IPv6地址
  11. #在/etc/sysconfig/network-scripts文件夹内,新建文件ifcfg-sit1并编辑,写入以下内容:
  12. DEVICE=sit1
  13. ONBOOT=yes
  14. BOOTPROTO=none
  15. IPV6INIT=yes
  16. IPv6TUNNELIPV4=服务端IPv4地址
  17. IPV6TUNNELIPV4LOCAL=本地IPv4地址
  18. IPV6ADDR=本地IPV6地址

最后一步要特别注意,若本地IPv4地址为内网地址(如腾讯云),请在此处配置文件里面应填写内网地址,不要直接写公网地址。配置文件写完后,执行service network restart重启网络服务,此时Tunnel应能够正常工作,且重启后不会丢配置。

四、Nginx和Apache支持IPv6

4.1  Nginx IPv6

找到你的Nginx网站配置文件,添加IPv6监听,然后重启Nginx就可以了。代码如下:

  1. {
  2. listen 80;
  3. listen [::]:80; #或者 listen [::]:80 ipv6only=on;
  4. # listen [::]:80 default ipv6only=on; 只监听IPV6
  5. # listen [3608:f0f0:3002:31::1]:80;监听指定IPV6地址
  6. listen 443 ssl http2;
  7. listen [::]:443 ssl http2;
  8. server_name wzfou.com www.wzfou.com;
  9. ……

4.2  Apache IPv6

找到httpd.conf配置,修改成这样:

  1. Listen 123.256.48.99:80
  2. Listen [2400:6180:0:d0::1f33:d001]:80
  3. #或者
  4. Listen 0.0.0.0:80
  5. Listen [::]:80

4.3  设置好AAAA记录解析

配置好了,现在你只需要到你的DNS处添加一个新的AAAA记录,记录值就是你的IPv6地址,这样IPv6用户就可以访问到你的Web服务器了。

VPS/云主机免费开启IPv6地址:绑定IPv6/使Nginx与Apache支持IPv6

AAAA记录可以和A记录并存,实现双栈访问,但不能与CNAME并存,各大DNS解析服务基本上都支持AAAA记录。

五、总结

如果本地还没有开通原生的IPv6,我们可以通过以下方法开通IPv6,以Windows 10为演示,Win+X 打开CMD 或 Windows PowerShell(管理员),输入命令:

  1. // 设置 Teredo 服务器,默认为:win10.ipv6.microsoft.com
  2. netsh interface teredo set state enterpriseclient server=default
  3. // 测试 IPv6 连接
  4. ping –6 ipv6.test-ipv6.com
  5. ping –6 [2001:470:1:18::125]
  6. // 重置 IPv6 配置
  7. 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地址:绑定IPv6/使Nginx与Apache支持IPv6

VPS绑定好了IPv6后,可以Ping测试一下IPv6网络是否通畅。Linux常用的命令是:ping6 ipv6.google.com。

(END)

文章出自:挖站否 https://wzfou.com/vps-ipv6/,部分内容参考:imfan 版权所有。