Linode VPS 上启用 IPv6 支持

准备了 ip6tables 防火墙之后终于可以放心的在我的 Linode VPS 上启用 IPv6 了。安装的是 CentOS 6,而 CentOS / Red Hat / Fedora RHEL 这些 Linux 发行版的配置方式一样,下面记录 CentOS 上配置 IPv6 静态网络地址的过程以供参考。今天开始,水景一页就正式支持 IPv6 访问了。

Red Hat / CentOS / Fedora RHEL 是默认支持 IPv6 协议的,所以要启用 IPv6 支持非常的简单,通常来讲只需要更新两个配置文件就可以了。下面的介绍主要是作为之前介绍的 Linode VPS 上安装配置 LAMP 服务器的补充,将会按照其中基本配置一节的静态网络地址配置的模式来介绍。

1. 获取 Linode 网络配置信息

Linode VPS 的网络参数

Linode VPS 的网络参数

在 Linode VPS 管理后台 Linode Manager 的 Remote Access 页面开头给出了该 Linode 的所有网络配置信息,地址、网络、DNS 服务器地址都有。如上图所示,自从 Linode 全面开启 IPv6 支持以后就在这里有了 IPv6 的相关地址了。下面举例用到的地址就是上图中水景一页的 VPS 配置地址。

Linode 最多可以为每个 VPS 免费提供 4096 个 IPv6 地址(IPv4 地址可是要 $1/月·个的)。不过貌似也用不上,就不去申请了,虽然在后台提交一个 ticket 就能搞定。

2. 增加 IPv6 静态地址配置

Linode 原先的 IPv4 静态网络设置上增加 IPv6 配置也不难,只是要改动的地方较多,不能漏了。对正在运行的网站服务器基本没有影响,顶多下线 10 秒钟。

2.1 修改 HOSTS 文件 /ETC/HOSTS

输入

vim /etc/hosts

打开编辑。

在最后添加

2600:3c01::f03c:91ff:fedf:9b24/64 cnzhx.net

保存退出。

2.2 修改 /etc/resolv.conf 增加 VPS 的 IPv6 地址解析服务器

vim /etc/resolv.conf

按照上面的 DNS Resolvers 对应录入

domain members.linode.com
search members.linode.com
nameserver 74.207.241.5
nameserver 74.207.242.5
nameserver 2600:3c01::2
nameserver 2600:3c01::3
options rotate

保存并退出。

2.3 编辑 /etc/sysconfig/network 启用系统 IPv6 支持

打开文件 /etc/sysconfig/network 进行编辑:

vim /etc/sysconfig/network

增加下面的一行语句:

NETWORKING_IPV6=yes

其中,

  • NETWORKING_IPV6=yes|no – 启用或禁用全局 IPv6 网络初始化。

2.4 配置静态 IPv6 地址

因为不想使用 DHCP 动态分配 IP 地址,免得多占资源。下面依然手动设置静态 IPv6 地址。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

对应录入(下面是我的 IPv4 和 IPv6 混排的静态地址配置文件(针对 eth0 网络接口)):

# Configuration for eth0
DEVICE=eth0
BOOTPROTO=static
# 声明启用 IPv6
IPV6INIT=yes

# 系统启动时启用配置
ONBOOT=yes

# eth0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary.
IPADDR=50.116.13.218
NETMASK=255.255.255.0
GATEWAY=50.116.13.1
# 对,就这下面一行添加 IPv6 地址即可
IPV6ADDR=2600:3c01::f03c:91ff:fedf:9b24/64
# IPV6_DEFAULTGW=fe80::1

保存并退出。

其中,

  • IPV6INIT=yes – 为网络接口启用或禁用 IPv6 配置。
  • IPV6ADDR=2600:3c01::f03c:91ff:fedf:9b24 – 指定一个主要的静态 IPv6 地址。之所以说是主要的,是因为如果有多个 IPv6 地址(比如你有 2600:3c01::02:6000/64 – 2600:3c01::02:6fff/64 共 4096 个地址)需要配置到该 VPS 主机的话,可以增加下面的语句来进行声明:
    IPV6ADDR_SECONDARIES="2600:3c03::3d:d000/64 2600:3c03::3d:d001/64 2600:3c03::3d:d002/64 2600:3c03::3d:d003/64"

    即,将 d001 d002 d003 三个地址配置到该接口。

  • IPV6_DEFAULTGW=fe80::1 – 默认的 IPv6 网关地址。这一行需要注释掉才能正确启用 IPv6。

关于 Linode VPS 的 IPv6 网关地址设置需要说明一下。在 Linode Manager 的 Remote Access 页面给出了网关地址,其中 IPv6 的网关地址为 fe80::1。如果启用这一行,重新启动网络服务

service network restart

的时候会出现错误:

ERROR    : [ipv6_set_default_route] Given IPv6 default gateway ‘fe80::1’ is link-local, but no scope or gateway device is specified

导致 IPv6 服务无法启用。

据说,Linode 确认 fe80::1 是有效的网关地址,但是实践证明在 CentOS 6 中这样设置之后会导致 IPv6 网络无法工作(via ref3)。既然 IPv6 协议可以自动寻找正确的网关配置,咱就把最后一行的 IPV6_DEFAULTGW=fe80::1 注释掉。

另外,如果配置了错误的 IPv6 网关地址,重新启用网络服务的时候会收到如下错误提示:

Destination unreachable: Address unreachable

2.5 重起网络服务使配置生效

使用下面的指令来重新启动网络服务,即可使系统的 IPv6 网络开始运行:

service network restart

2.6 忽略日志记录中的前缀长度提示

通过下面的指令将相应设置直接附加到 /etc/sysctl.conf 文件末尾:

cat >> /etc/sysctl.conf <<EOF
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.autoconf = 0
EOF

然后可以通过

sysctl -p

查看 sysctl.conf 的内容。(via ref4

2.7 测试

然后可以试试看是否能访问 IPv6 网络。例如,

ping6 ipv6.google.com

还可以尝试跟踪到某个网络主机的路由:

traceroute6 ipv6.google.com

或者打印出自己的 IPv6 路由表:

route -n -A inet6

一旦正确配置并启用 IPv6 网络,就应该立即使用 ip6tables 配置 IPv6 防火墙以保证服务器安全。

3. 配置域名解析

到域名解析服务器上添加 AAAA 记录,等待解析生效(通常大约10来分钟就可以了),就可以通过 IPv6 访问 VPS 上的网站了。

如果 VPS 上有多个域名,应分别设置 DNS 解析记录。

现在 cnzhx.net 和 test.cnzhx.net 共用一个 IPv6 地址。虽然有足够的 IPv6 地址可以让他们分别使用不同的地址,可是 IPv4 地址只有一个啊,就懒得麻烦再修改 Apache 配置文件 vhost.conf 来给不同的域名设置不同的 IPv6 地址了。

4. Apache 配置

如果你的 LAMP 环境与水景一页的类似(参考),或者确定使用的是 Apache 2 的话,不需要额外的网络服务器配置。如果是 Apache 1,建议还是升级一下下吧 :D

5. 测试网站的 IPv6 可访问性

一切设置停当之后就可以通过 IPv6 方式来访问自己的网站看看是否正常。

我的电脑现在还没有配置 IPv6 访问能力,所以找了个在线测试的网络服务来测试。在 http://ipv6-test.com/validate.php 页面输入要测试网站域名,单击 validate 按钮,稍等片刻即可知道结果了。

6. 参考资料

  1. 维基百科:IPv6 地址含义及格式
  2. Linode Library:Native IPv6 Networking
  3. GoLugTech:ipv6: default gateway (global or link-local?)
  4. 6sync:Configure an IPv6 address

如果上面的配置过程不使用你的情况,可以留言提问,我将尽力帮忙查找解决方法。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/enable-ipv6-on-linode-vps/>。转载请保留此信息及相应链接。

12 条关于 “Linode VPS 上启用 IPv6 支持” 的评论

  1. 引用通告: Linode VPS 上 CentOS 6 安装 LAMP + phpMyAdmin 记录 | 水景一页

    • 虽然这样可以使不同的域名有不同的 IPv6 地址,但是没有独立的 IPv4 地址的话,目前来看意义不大 —— 除非你把 IPv4 地址废了不用。
      给 VPS 设置了多个 IPv6 地址之后,改动 Apache 的配置文件 vhost.conf 来使得不同的域名对应不同的 IPv6 地址即可。

      • 是的,从 VPS 管理后台看,IPv6 的流量几乎可以忽略不计,估计其中还有很多是检测流量。我这也就是早作准备吧。

  2. 引用通告: 我的 VPS 学习之路 | 水景一页

  3. 引用通告: CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin | 水景一页

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>