从传统二进制部署的 Nginx,到云原生部署的 K8S、Istio,分别介绍网站开启 IPv6 的三种方式。
# 1.Nginx 如何开启 IPv6
# 前置条件
- 服务器已开启 IPv6
# 1.1 启动监听 IPv6 地址的 Nginx
默认 Nginx 的配置文件(/etc/nginx/nginx.conf)已经开启 IPv6 访问,启动 Nginx。
server {
listen 80;
listen [::]:80; ## 监听 IPv6 的 80 端口
...
}
可以看到 Ngnix 同时监听在 IPv4 和 IPv6 地址上。
# netstat -ntlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 138362/nginx: maste
tcp6 0 0 :::80 :::* LISTEN 138362/nginx: maste
# 1.2 服务器验证 IPv6 访问
在服务器上通过 curl 命令可以验证 IPv6 访问情况
# curl -g http://[2402:4e00:1013:e500:0:9671:f018:4947] -I
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Sat, 04 Dec 2021 13:58:37 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Connection: keep-alive
ETag: "53762af0-12e1"
Accept-Ranges: bytes
# 1.3 安全组对 IPv6 来源地址授权访问
接下来在 安全组
中对 监听在 IPv6 地址上的 80 端口授权访问。
# 1.4 本地电脑验证 IPv6 访问
如果 本地网络已开启 IPv6访问
,接下来参照 浏览器访问 IPv6 地址
,在本地电脑通过浏览器可以验证 IPv6 访问。
# 1.5 域名添加 IPv6 地址解析
给域名添加 IPv6 解析记录(AAAA)
添加完后可以通过 IPv6 在线域名解析工具
对其解析验证。
同一个主机名可以同时解析 IPv4(A 记录) 和 IPv6(AAAA 记录),本地浏览器一般 IPv6 优先访问。
# 1.6 IPv6 网站开启验证
通过 网站IPv6开启验证工具
来验证 IPv6 是否开启成功。
# 2. K8S 如何开启 IPv6
在 K8S 中对 Web 服务来说,一般通过 Ingress 对用户提供流量访问,所以 K8S 中开启 IPv6,就是 Ingress 支持 IPv6。
此处以 腾讯云容器服务为例,介绍如何开启 IPv6。
参照文章 腾讯云 cvm 开启 IPv6
,提交 IPv6 内测申请。
# 2.1 创建 IPv6 NAT64
版本的 Ingress
创建 IPv6 NAT64
版本的 Ingress。
IPv6 NAT64:用户与
IPv6 NAT64
的 LB 之间是 IPv6 访问,IPv6 NAT64
的 LB 与后端 Service、Pod 通信是 IPv4。 优点:业务程序无需改造网络,可支持 IPv6 网络访问。 缺点: 无法获取客户端真实 IPv6 地址。
接下来参照上文,对该 Ingress 背后的负载均衡器添加对来源 IPv6 地址访问的安全组策略即可。
# 2.2 验证 IPv6 网站是否开启
验证方法同上,此处不再赘述。
# 3. Istio 服务网格如何开启 IPv6
服务网格 istio,比 K8S 原生的 Ingress 管理流量更方便,如果你使用了服务网格,就不需要对 K8S 的 ingress 开启 IPv6 访问,直接在服务网格中开启 IPv6 访问。
# 3.1 创建 IPv6 边缘代理网关
创建边缘代理网关时,选择提前创建好 IPv6 LB。
# 3.2 创建 IPv6 Gateway
创建 IPv6 Gateway 时,关联刚创建的 IPv6 边缘代理网关。
如果开启 HTTPS 访问,则添加好证书即可。
# 3.3 创建 IPv6 Virtual Service
创建 IPv6 Virtual Service,挂载上面创建的 IPv6 Gateway。
# 3.4 验证 IPv6 网站是否开启
验证方法同上,此处不再赘述。
IPv6 大势所趋,广大站长赶紧行动吧
从传统二进制部署的 Nginx,到云原生部署的 K8S、Istio,分别介绍网站开启 IPv6 的三种方式。
# 1.Nginx 如何开启 IPv6
# 前置条件
- 服务器已开启 IPv6
# 1.1 启动监听 IPv6 地址的 Nginx
默认 Nginx 的配置文件(/etc/nginx/nginx.conf)已经开启 IPv6 访问,启动 Nginx。
server {
listen 80;
listen [::]:80; ## 监听 IPv6 的 80 端口
...
}
可以看到 Ngnix 同时监听在 IPv4 和 IPv6 地址上。
# netstat -ntlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 138362/nginx: maste
tcp6 0 0 :::80 :::* LISTEN 138362/nginx: maste
# 1.2 服务器验证 IPv6 访问
在服务器上通过 curl 命令可以验证 IPv6 访问情况
# curl -g http://[2402:4e00:1013:e500:0:9671:f018:4947] -I
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Sat, 04 Dec 2021 13:58:37 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Connection: keep-alive
ETag: "53762af0-12e1"
Accept-Ranges: bytes
# 1.3 安全组对 IPv6 来源地址授权访问
接下来在 安全组
中对 监听在 IPv6 地址上的 80 端口授权访问。
# 1.4 本地电脑验证 IPv6 访问
如果 本地网络已开启 IPv6访问
,接下来参照 浏览器访问 IPv6 地址
,在本地电脑通过浏览器可以验证 IPv6 访问。
# 1.5 域名添加 IPv6 地址解析
给域名添加 IPv6 解析记录(AAAA)
添加完后可以通过 IPv6 在线域名解析工具
对其解析验证。
同一个主机名可以同时解析 IPv4(A 记录) 和 IPv6(AAAA 记录),本地浏览器一般 IPv6 优先访问。
# 1.6 IPv6 网站开启验证
通过 网站IPv6开启验证工具
来验证 IPv6 是否开启成功。
# 2. K8S 如何开启 IPv6
在 K8S 中对 Web 服务来说,一般通过 Ingress 对用户提供流量访问,所以 K8S 中开启 IPv6,就是 Ingress 支持 IPv6。
此处以 腾讯云容器服务为例,介绍如何开启 IPv6。
参照文章 腾讯云 cvm 开启 IPv6
,提交 IPv6 内测申请。
# 2.1 创建 IPv6 NAT64
版本的 Ingress
创建 IPv6 NAT64
版本的 Ingress。
IPv6 NAT64:用户与
IPv6 NAT64
的 LB 之间是 IPv6 访问,IPv6 NAT64
的 LB 与后端 Service、Pod 通信是 IPv4。 优点:业务程序无需改造网络,可支持 IPv6 网络访问。 缺点: 无法获取客户端真实 IPv6 地址。
接下来参照上文,对该 Ingress 背后的负载均衡器添加对来源 IPv6 地址访问的安全组策略即可。
# 2.2 验证 IPv6 网站是否开启
验证方法同上,此处不再赘述。
# 3. Istio 服务网格如何开启 IPv6
服务网格 istio,比 K8S 原生的 Ingress 管理流量更方便,如果你使用了服务网格,就不需要对 K8S 的 ingress 开启 IPv6 访问,直接在服务网格中开启 IPv6 访问。
# 3.1 创建 IPv6 边缘代理网关
创建边缘代理网关时,选择提前创建好 IPv6 LB。
# 3.2 创建 IPv6 Gateway
创建 IPv6 Gateway 时,关联刚创建的 IPv6 边缘代理网关。
如果开启 HTTPS 访问,则添加好证书即可。
# 3.3 创建 IPv6 Virtual Service
创建 IPv6 Virtual Service,挂载上面创建的 IPv6 Gateway。
# 3.4 验证 IPv6 网站是否开启
验证方法同上,此处不再赘述。
IPv6 大势所趋,广大站长赶紧行动吧