> Linux教程 > 系统运维 >

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

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



(责任编辑:IT)