最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

网站开启 IPv6 的三种方式

运维笔记admin7浏览0评论

从传统二进制部署的 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 大势所趋,广大站长赶紧行动吧

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>