准备了 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 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. 参考资料¶
- 维基百科:IPv6 地址含义及格式
- Linode Library:Native IPv6 Networking
- GoLugTech:ipv6: default gateway (global or link-local?)
- 6sync:Configure an IPv6 address
如果上面的配置过程不使用你的情况,可以留言提问,我将尽力帮忙查找解决方法。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/enable-ipv6-on-linode-vps/>。转载请保留此信息及相应链接。
引用通告: Linode VPS 上 CentOS 6 安装 LAMP + phpMyAdmin 记录 | 水景一页
我的站是DHCP分配…
不用设置的路过
就是目前貌似只有教育网有ipv6线路…
一般的也可以弄出 ipv6 访问通道来,可是太麻烦了,我懒得折腾。
访问通道延迟有点高…
linode vps有三个独立域名,可以分别设置IPV6,达到独立IP的效果吗
虽然这样可以使不同的域名有不同的 IPv6 地址,但是没有独立的 IPv4 地址的话,目前来看意义不大 —— 除非你把 IPv4 地址废了不用。
给 VPS 设置了多个 IPv6 地址之后,改动 Apache 的配置文件 vhost.conf 来使得不同的域名对应不同的 IPv6 地址即可。
貌似目前ipv6的用的少啊…
ipv4无法访问ipv6…
所以目前无大用…
是的,从 VPS 管理后台看,IPv6 的流量几乎可以忽略不计,估计其中还有很多是检测流量。我这也就是早作准备吧。
暂时看ipv6意义不大
是啊,国内 ISP 迟迟不支持。
引用通告: 我的 VPS 学习之路 | 水景一页
引用通告: CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin | 水景一页