目前阿里云所有产品都不支持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; } }
至此,所有配置完成。测试
来源:https://www.cnblogs.com/markzm/p/6780871.html