买 VPS 前先查 IPv6 支持:这套方案包不包含 IPv6;要 /64,不要只有一个地址;反向解析能不能自己设;上线前先实测

本文译自 kikomono.com 英文原文《Check VPS IPv6 support before you buy》,作者 Rita。原文链接:https://kikomono.com/guides/check-vps-ipv6-before-buying/

一句话结论

IPv6 很容易想当然,事后补却很别扭。有的套餐包含它,有的只在某些规格或某些地区提供,有的根本不提供——而销售页面常常对此只字不提。买之前做四项检查,就能知道这套方案的 IPv6 是否适合你打算跑的网站;开通后再花五分钟实测,就能在依赖它之前证明它真的能用。

先说清楚:这台服务器需不需要 IPv6

不是每台服务器第一天就需要 IPv6,为 IPv6 本身而买也不是目的。IPv6 在三种常见情况下才重要:

  • 你跑的是公开网站。越来越多的访客走 IPv6 到来,有些网络和移动运营商默认就用它。只有 IPv4 的网站对他们来说照样能打开——他们的网络会做转换——但双栈网站能把路径上这一层转换去掉。
  • 你从这台服务器发邮件。收件方对发件地址的检查比浏览器严格得多,反向解析就是其中一环。如果 IPv6 地址不能带一条指向你主机名的 PTR 记录,走 IPv6 发出的邮件就可能被怀疑。
  • 你希望这台服务器跑很久。IPv4 地址稀缺,而且这种稀缺不会消失。今天就配好 IPv6 的套餐,等于以后少一次迁移——到那时,某个新服务或某个新访客网络可能已经默认 IPv6 可用。

如果这三条都不适用——私人工具、短期测试服务器、内部服务——IPv6 只是锦上添花,剩下的检查也只要几分钟。

1. 先查具体套餐包不包含 IPv6

套餐系列页不是答案;具体规格、在具体地区才是答案。服务商常见的差异有三种:

  • 按规格区分。最小的套餐可能不含 IPv6,而大一点的规格包含;或者 IPv6 是结账时必须勾选的附加项。
  • 按地区区分。同一套餐在一个数据中心含 IPv6,在另一个数据中心可能不含,因为地址供应因地而异。
  • 按措辞区分。一个对 IPv6 只字不提的页面,并没有承诺它。沉默不是“没有”,但也不是“有”——而这正是值得花一分钟书面问客服的情况。

问一个精确的问题,并把答案留下来:“这套方案、在这个地区,是否免费包含一个全球 IPv6 地址?如果不包含,要多少钱?”含糊的回答——“我们支持 IPv6”——回答的不是你问的问题。

2. 再查地址块的大小:要 /64,不要只有一个地址

IPv6 地址是按块给的,块的大小决定你以后能做什么。VPS 上常见的有两种:

地址块 你得到的是 够用在哪
/64 一大块地址,服务器的常规分配 一个网站、几个服务各用不同地址、网站旁边再跑一台邮件服务器
/128 只有一个地址 一个网站或一个服务,除此之外再没有需要自己地址的东西

只跑一个网站的话,一个地址就够了,/128 不是缺陷。只有当你以后想给第二个服务一个自己的地址——邮件服务器、 staging 副本、另一个应用——却发现没有第二个地址可给时,它才变成限制。如果套餐页面没写地址块大小,就去问;不肯说的服务商,本身就在告诉你一些事。

3. 发邮件之前先查反向解析

反向解析,也就是 PTR 记录,是把 IP 地址映射回主机名。网站访客永远看不到它,但收件方看得到:一台 IPv6 地址没有 PTR 记录、或者 PTR 记录指向不相关主机名的邮件服务器,在收件方眼里可信度更低。三个问题就能定下来:

  • 你能不能自己在主机面板里设 PTR 记录,还是每次改动都要开工单找客服?
  • PTR 记录覆盖的是 IPv6 地址,还是只覆盖 IPv4?有些面板只给 IPv4 提供反向解析,悄悄把 IPv6 漏掉了。
  • 以后能不能改,如果主机名变了?一次由客服设定、之后再也改不了的 PTR 记录,对一台会被改名的服务器来说是个小陷阱。

如果你根本不打算从这台服务器发邮件,这项检查可以省——但反正已经在跟客服沟通了,顺便问一句不花什么;等第一封群发邮件被退回才发现,代价就大了。

4. 开通后花五分钟实测

面板里的地址只是承诺,流量才是证明。服务器有了之后,在把域名指向它之前先跑这几项检查:

  1. 有没有全球地址?运行 ip -6 addr。全球地址以 2xxx: 或 3xxx: 开头。以 fe80: 开头的地址只是链路本地地址——只跟本地网络通,不跟互联网通,意味着 IPv6 实际上没有配好。
  2. 有没有出站路由?运行 ip -6 route,看有没有默认路由。没有默认路由,服务器拿着地址也谁都连不上。
  3. 出站流量通不通?运行 curl -6 https://example.com,或者对一个支持 IPv6 的主机做 ping -6。如果 IPv4 通、IPv6 不通,问题就在 IPv6 路径本身,不在整台服务器。
  4. 网站本身走 IPv6 通不通?给域名发布一条 AAAA 记录,然后从一个有 IPv6 的连接上测试网站——并且把 IPv4 和 IPv6 分开测,用 curl -4 和 curl -6 各测一次。能正常工作的 IPv4 路径会很乐意地掩盖一条坏掉的 IPv6 路径,而第一个发现的人不会是你。
  5. 防火墙是不是也是双栈的?只配了 IPv4 的防火墙过滤不了 IPv6 流量。网站上线之前先确认 IPv6 防火墙规则存在、并且跟 IPv4 规则一致,不要等第一次扫描发现开放端口才去补。

如果哪一步失败,修复通常在服务商面板或服务器的网络配置里——网关、前缀长度,或者缺一条路由——而且上线前修,远比访客来了之后修便宜。

5. 答案是“没有”的时候怎么办

两种结果值得马上行动。第一,如果套餐没有 IPv6,而你又需要它——一座打算跑多年的公开网站,或者任何发邮件的需求——现在就换套餐或换服务商;给一台已经上线的服务器事后加 IPv6,意味着重新编号、改 DNS、再测一轮。第二,如果套餐有 IPv6,但地址块只有一个地址、或者没有反向解析,那就对照你的实际用途权衡:只跑一个网站的话,这两项限制可能永远碰不上,这套方案仍然可能是对的买法。买有限制的套餐本身不是错;不知道限制就买,才是错。

常见问题

是不是每个 VPS 套餐都包含 IPv6?
不是。有的套餐默认包含 IPv6,有的只在某些规格或某些地区提供,有的根本不提供。唯一可靠的答案,是你要买的那个具体规格、在那个具体地区的套餐页面;如果页面没提 IPv6,付钱前先问客服。

/64 和 /128 的 IPv6 地址块有什么区别?
/64 是一大块地址,是服务器的常规分配,留有余地让几个服务各用不同地址。/128 只有一个地址。只跑一个网站的话,一个地址就够了;但如果你以后想给第二个服务或邮件服务器单独的地址,/64 更灵活。

为什么 VPS 上的 IPv6 反向解析重要?
反向解析是把 IP 地址映射回主机名,收件方尤其会查它。如果你打算从服务器发邮件,就需要能给 IPv6 地址设 PTR 记录,这通常意味着服务商必须在面板里提供这个控制,或者能按要求帮你设。

服务器开通后怎么测 IPv6?
运行 ip -6 addr 确认有全球地址,运行 ip -6 route 确认有默认路由,再用 curl -6 对一个支持 IPv6 的网站确认出站流量。然后发布一条 AAAA 记录,从一个有 IPv6 的连接上测试网站本身,并且把 IPv4 和 IPv6 分开检查,这样能正常工作的 IPv4 路径就不会掩盖坏掉的 IPv6 路径。