阿里云下,在不动生成环境的情况下搭建IPv6站点

血红的双手。 提交于 2020-01-29 12:25:20

目前阿里云所有产品都不支持IPv6 网络,最近苹果审核的更新导致大部分app都无法通过审核。通过收集各位大神的解决方案以及结合公司自身的情况做了一个IPv6的nginx 并反向代理到IPv4的网站,最终成功,简单纪录下操作步骤

 

1、生成环境不做任何改动;

  我们的生成环境使用nginx 作为反向代理,后端挂了大量的应用,如果要动这个牵扯有点大,所以不做任何改动。

2、新增一台服务器(阿里云申请一台1h1g低配主机,并加上公网IP),将这台主机按网上的方案配置成IPv6 ,并安装好nginx ,也要打上IPv6支持 安装配置过程我就不详细描述了。网上教程一大堆,以下是摘自其他大神的操作,在此感谢

  开启IPV6:

  vim /etc/sysctl.conf

  

  vim /etc/modprobe.d/disable_ipv6.conf

   

  vim /etc/sysconfig/network

  

  至此ipv6的服务器端支持已经完成,重启服务器测试是否支持ipv6,重启后, ifconfig查看ipv6的信息,有看到有关IPV6的输出就可以

  

  nginx编译安装 参考 http://www.cnblogs.com/markzm/articles/6780776.html

3、添加ipv6隧道:

  a. 注册Tunnel broker

  https://www.tunnelbroker.net/
  注册很容易,就不讲了,注册需要邮箱验证,,gmail、163能收得到认证邮件,qq还是一样收不到

  b.创建通道“Create Regular Tunnel”

  填写云服务器ip以及选择默认的隧道节点,点击Create Tunnel创建。填写ip都,如果出现“IP is a potential tunnel endpoint.”则证明可以添加ipv6隧道,一般隧道节点系统已经默认分配,可以手动选择,大家可以在自己的云服务器上分别ping一下这些ip,选时延低的。

  

  

  c.创建ipv6隧道及路由

    到下一页面切换到Example configurations选项卡,如果你的VPS是centOS/Debian这些常见Linux的话,下拉菜单选择Linux-net-tools,出现了设置的命令,复制到自己的云服务器上运行。

ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::88.88.88.88
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:47:8:45::2/64
route -A inet6 add ::/0 dev sit1

服务端通过ifconfig看到sit0 和sit1 都起来,说明配置成功

sit0      Link encap:IPv6-in-IPv4
          inet6 addr: ::8.8.8.8/96 Scope:Compat
          inet6 addr: ::10.28.196.233/96 Scope:Compat
          inet6 addr: ::127.0.0.1/96 Scope:Unknown
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

sit1      Link encap:IPv6-in-IPv4
          inet6 addr: fe80::2f5a:4ed5/64 Scope:Link
          inet6 addr: 2001:47:8:45::2/64 Scope:Global
          inet6 addr: fe80::a1c:c4e9/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1480  Metric:1
          RX packets:893582 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1052872 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:228511120 (217.9 MiB)  TX bytes:455369624 (434.2 MiB)

测试IPv6

ping6 -c 5 ipv6.google.com
PING ipv6.google.com(hkg12s13-in-x0e.1e100.net) 56 data bytes
64 bytes from hkg12s13-in-x0e.1e100.net: icmp_seq=1 ttl=58 time=3.16 ms
64 bytes from hkg12s13-in-x0e.1e100.net: icmp_seq=2 ttl=58 time=3.35 ms
64 bytes from hkg12s13-in-x0e.1e100.net: icmp_seq=3 ttl=58 time=3.12 ms
64 bytes from hkg12s13-in-x0e.1e100.net: icmp_seq=4 ttl=58 time=3.29 ms
64 bytes from hkg12s13-in-x0e.1e100.net: icmp_seq=5 ttl=58 time=3.32 ms

--- ipv6.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 3.124/3.252/3.356/0.097 ms

curl -v -6 ipv6.google.com
* About to connect() to ipv6.google.com port 80 (#0)
* Trying 2404:6800:4005:808::200e... connected
* Connected to ipv6.google.com (2404:6800:4005:808::200e) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: ipv6.google.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 28 Apr 2017 03:33:58 GMT
< Expires: -1
< Cache-Control: private, max-age=0

4、设置域名AAAA

  通过域名服务商添加一条AAAA纪录,指向  2001:47:8:45::2 这个IP就是隧道生成的,sit1网卡的IP

5、Nginx服务配置

server {
        listen       [::]:443 ssl;
        server_name  _;
        ssl                  on;
        ssl_certificate      conf.d/*****.com.cn/1.pem;
        ssl_certificate_key  conf.d/*****.com.cn/server.key;
        ssl_session_timeout  5m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
        ssl_prefer_server_ciphers   on;
        location / {
                proxy_pass https://www.*****.com.cn;
                proxy_set_header  Host     $host;
                #proxy_set_header Host $http_host;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}

 

至此,所有配置完成。测试  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!