二、在 Linux操作系统下IPv6配置:
(1)加载ipv6模块
Linux在内核版本2.2.0以后就支持IPv6了,可查看命令test -f /proc/net/if_inet6&&‘running ipv6’文件是否存在以确定你的系统是否支持IPv6
如果没有,可尝试如下命令加载IPv6模组:
# modprobe ipv6
使用命令,见图1:
Lsmod | grep -i ‘ipv6’
图1 查看内核是否加载ipv6模块 |
如果出现图1界面表示内核加载ipv6模块。成功加载后就可以使用IPv6环境了。Lsmod指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。
(2)常用IPv6相关的命令:
- 添加固定IPv6地址:
# /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::2/64 /* */ - 显示现有路由表:
#/sbin/ip -6 route show dev eth0 - 添加路由:
# route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1 /* */ - ICMP探测:
ping6 用来测试简单传输发送 ICMPv6 响应请求并等待ICMPv6 响应包, ping6必需有适当的root权限才能使用。使用Ping命令检测网卡的IPv6地址是否有效,和IPv4不一样使用Ping6命令时必须指定一个网卡界面,否则系统经不知道将数据包发送到那个网络设备,I表示Interface、eth0 是第一个网卡、c表示回路,7表示Ping6操作七次。
# ping6 -I eth0 -c 7 fe80::2e0:18ff:fe90:9205 - traceroute6通过向目标发送不同IP生存时间(TTL)值的会应的数据报,确定目标所采用的路由。
#traceroute6 fe80::2e0:18ff:fe90:9205 - racepath6用来追踪最大传输单元(MTU)的路径:
#tracepath6 fe80::2e0:18ff:fe90:9205
(3)让系统自动加载ipv6模块(redhat linux)
修改 /etc/sysconfig/network文件,加入下列配置文本
NETWORKING_IPV6=yes
然后,运行命令 service network restart
用命令ifconfig –eth0查看ipv6地址信息:
图2查看ipv6地址 |
注意图中第四行处显示IPv6地址(inet6 addr:fe80::20c:29ff:feb3:9726/64)证明IPv6已经加载。也可以在配置文件:
/etc/modules.conf中加入一行:
alias net?pf?10 ipv6 # automatically load IPv6 module on demand
可以在图形界面下运行命令:“redhat-config-network”在“为此界面启用ipv6配置”打勾。
图3 图形界面下让系统自动加载ipv6模块 |
其他Linux发行版本:首先确认linux内核已编译进了ipv6选项,如果ipv6协议作为模块方式编译,可运行modprobe ipv6装入协议栈,并根据需要安装iproute软件包。可阅读Linux IPv6 HOWTO和相关产品文档获得更详细的信息。
(4)使用ipv6地址访问Apache web服务器
Apache服务器2.0系列在所有能够由Apache Portable Runtime库提供IPv6支持的系统上, Apache默认获得IPv6侦听套接字。访问Apache服务器时应当使用如下格式:http://[ipv6 -address]:port/ 结果见图4(只要浏览器也要支持ipv6)。
图4 使用ipv6地址访问web服务器 |
另外再配置虚拟主机时IPv6的地址必须放入方括号中指定,否则作为可选项的端口号将无法确定。一个IPv6的示例如下:
<VirtualHost [fe80::a00:20ff:fea7:ccea]>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
</VirtualHost>
每个虚拟主机必须对应不同的IP地址、端口号或是不同的主机名。在第一种情况下,服务器所在物理机器必须配置为可以为多个地址接受IP包。(在机器没有多个网络硬件界面的情况下,如果您的操作系统支持,您可以使用ifconfig alias命令来达到这个目的)。