Linode VPS 上启用 IPv6 支持
时间:2015-06-20 13:25 来源:linux.it.net.cn 作者:IT
准备了 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
如果上面的配置过程不使用你的情况,可以留言提问,我将尽力帮忙查找解决方法。
(责任编辑:IT)
准备了 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 其中,
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 保存并退出。 其中,
关于 Linode VPS 的 IPv6 网关地址设置需要说明一下。在 Linode Manager 的 Remote Access 页面给出了网关地址,其中 IPv6 的网关地址为 fe80::1。如果启用这一行,重新启动网络服务 service network restart 的时候会出现错误:
导致 IPv6 服务无法启用。
据说,Linode 确认 fe80::1 是有效的网关地址,但是实践证明在 CentOS 6 中这样设置之后会导致 IPv6 网络无法工作(via ref3)。既然 IPv6 协议可以自动寻找正确的网关配置,咱就把最后一行的 另外,如果配置了错误的 IPv6 网关地址,重新启用网络服务的时候会收到如下错误提示:
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. 参考资料¶
如果上面的配置过程不使用你的情况,可以留言提问,我将尽力帮忙查找解决方法。 (责任编辑:IT) |