服务器 频道

为主流服务器操作系统配置Ipv6(上)

    【IT168 专稿】IPv4技术在网络发展中起到了巨大的作用,不过随着时间的流逝它无论在网络地址的提供、服务质量、安全性方面都越来越力不从心,IPv6呼之欲出。由于IPv6和IPv4在许多地方有了本质的变化:不论在结构上还是系统工具的使用上。特别是在命令行下的操作也不大相同。另外一些IPv4的工具在IPv6中将不再可以使用,IPv6也有一些新的工具。所以这里我们详细介绍一下如何为主流网络操作系统配置Ipv6。使我们可以实现从IPv4到IPv6的快速过渡。

一、 IPv4和IPv6技术简单对比:

    (1) IPv4可提供4,294,967,296个地址,IPv6将原来的32位地址空间增大到128位,数目是2的128次方。能够对地球上每平方米提供6×1023个网络地址,在可预见的将来是不会耗尽的。

    (2) IPv4 使用地址解析通讯协议 (ARP) ,IPv6使用用多点传播 Neighbor Solicitation 消息取代地址解析通讯协议 (ARP) 。

    (3) IPv4 中路由器不能识别用于服务质量的QoS 处理的 payload。IPv6中路由器使用 Flow Label 字段可以识别用于服务质量的 QoS 处理的 payload。

    (4) IPv4的回路地址为: 127.0.0.1,IPv6的回路地址为 : 000:0000:0000:0000:0000:0000:0000:0001 可以简写为 ::1。

    (5) 在IPv4中,动态主机配置协议( Dynamic Host ConfigurationProtocol,DHCP)实现了主机IP地址及其相关配置的自动设置。一个DHCP服务器拥有一个IP地址池,主机从DHCP服务器租借IP地址并获得有关的配置信息(如缺省网关、DNS服务器等),由此达到自动设置主机IP地址的目的。IP v6继承了IPv4的这种自动配置服务,并将其称为全状态自动配置(stateful autoconfiguration)。

    (6) IPv4使用 Internet 群组管理通讯协议 (IGMP) 管理本机子网络群组成员身份,IPv6使用 Multicast Listener Discovery (MLD) 消息取代 IGMP。

    (7) 内置的安全性。IPSec由IETF开发是确保秘密、完整、真实的信息穿越公共IP网的一种工业标准。IPsec不再是IP协议的补充部分,在IPv6中IPsec是IPv6自身所具有的功能。IPv4选择性支持IPSec,IPv6自动支持IPSec。

    (8) 更好的QoS支持。QoS是网络的一种安全机制,通常情况下不需要QoS,但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。在IPv6 的包头中定义了如何处理与识别传输, IPv6 包头中使用 Flow Label 来识别传输,可使路由器标识和特殊处理属于一个流量的封包。流量是指来源和目的之间的一系列封包,因为是在 IPv6 包头中识别传输,所以即使透过 IPSec 加密的封包 payload,仍可实现对 QoS 的支持。

二、在 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命令来达到这个目的)。

    (5)配置Ipv6版本iptables防火墙

    1、安装:

    Iptables是基于Linux2.4内核的防火墙。在它取代了2.2内核的ipchains和2.0系列之前的ipfwadm。如果你想使用任何形式的防火墙都需要安装iptables。

    (a) 下载安装Ipv6版本的iptables,
    (b) : #wget
    #rpm –ivh  iptables-ipv6-1.2.7a-1ark.i586.rpm

    2、配置iptables

    iptables 是与主流的 2.4.x 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器,则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。我马上会详细讨论这些规则以及如何建立这些规则并将它们分组在链中。

    (1)清理旧规则:

    #ip6tables [-FXZ]
    参数说明:
    -F :清除所有的已订定的规则;
    -X :杀掉所有使用者建立的表(table)。
    -Z :将所有的链(chain) 的计数与流量统计都归零。

    (2)建立政策

    #ip6tables [-t tables] [-P] [INPUT,OUTPUT,FORWARD, PREROUTING,OUTPUT,POSTROUTING] [ACCEPT,DROP] [-p TCP,UDP] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j

    参数说明:
-t   :定义表( table)。
tables :table表的名称,
 -P   :定义政策( Policy )。
INPUT :数据包为输入主机的方向;
OUTPUT :数据包为输出主机的方向;
FORWARD:数据包为不进入主机而向外再传输出去的方向;
PREROUTING :在进入路由之前进行的工作;
OUTPUT   :数据包为输出主机的方向;
POSTROUTING:在进入路由之后进行的工作。
TCP :TCP协议的数据包。
UDP :UDP协议的数据包;
-s     :来源数据包的 IP 或者是 网络。
--sport:来源数据包的端口( port)号。
-d     :目标主机的 IP 或者是网络。
--dport:目标主机端口的 (port) 号。
ACCEPT :接受该数据包。
DROP  :丢弃数据包。

    Linux 支持使用 Netfilter 6 子系统和 ip6tables 命令的 IPv6 防火墙规则。使用 ip6tables 的第一步是启动 ip6tables 服务。它可以使用以下命令进行:

    service ip6tables start

     注意:你必须关闭 iptables 服务才能专门使用 ip6tables 服务:
service iptables stop
chkconfig iptables off要使 ip6tables 在系统引导时默认启动,使用 chkconfig 来改变服务的运行级别状态。
chkconfig --level 345 ip6tables on

    其语法在各方面都和 iptables 相同,只不过 ip6tables 支持128位的地址。例如:在识别 IPv6 的网络服务器器上的 SSH 连接可以使用以下规则来启用:

    ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
关于 IPv6 联网的详情,请参阅 IPv6 的信息页:http://www.ipv6.org/。其他支持ipv6应用的软件包括:nmap :www.insecure.org/nmap ,Tcpdump (http://www.tcpdump.org ) ,bind(DNS服务器)linux系统目前支持ipv6的服务器软件已经非常多,常用的软件如opensshd/sshd,apache,telnetd, iptables-ipv6,nmap等。如果你想查看在Ipv6协议网络工作的Linux程序可以访问:http://www.netcore.fi/pekkas/linux/ipv6/ 这里能找到很多有IPv6支持的RPM包。

    (6)配置 Linux FTP 服务器 vsftpd 以支持 IPv6

    vsftpd 服务器默认附带有 Red Hat Enterprise Linux (RHEL)。让我们配置服务器来监听和接受 IPv6 地址。

    首先,以 root 用户登录然后打开 vsftpd.conf,该文件通常位于 /etc/vsftpd 目录中。注释掉 vsftpd.conf 文件中的下面这一行:
listen=yes
将这一行添加到 vsftpd.conf 中以支持 IPv6:
listen_ipv6=yes
要重新启动 vsftpd 服务器,使用 service vsftpd restart 命令。

三、FreeBSD系统IPv6配置

    FreeBSD在版本4.0-RELEASE后,已集成KAME IPv6 Stack,缺省支持IPv6
    在/etc/rc.conf文件中加入下列配置文本:

    ipv6_enable="YES"
    ipv6_network_interfaces="auto"
    ipv6地址也可以在该文件中完成,如新增加一行:
    ipv6_ifconfig_fxp0="2001:250:3000:1::1:1 prefixlen 64"

    重新启动计算机使用命令查看:
    #ifconfig xl0
    xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.0.2.123 netmask 0xffffff00 broadcast 192.0.2.255
    inet6 fe80::201:2ff:fe29:2640%xl0 prefixlen 64 scopeid 0x1
    ether 00:01:02:29:26:40
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active

    配置ipv6的缺省路由
    route add -inet6 default -iface gif0

    可阅读FreeBSD Handbook 中ipv6部分获得更详细信息。

四、 Solaris系统IPv6配置

    Solaris在版本8.0后开始支持ipv6,Solaris 8 Ipv6部分重要的特征如下:IPv6 添加了已增加的地址空间并通过使用简化的报头格式、对认证和保密性的支持、自动配置地址分配来改进 Internet 的功能并启用了新的服务质量能力。Solaris 9配置过程:

    1.#touch /etc/hostname6.? “? 问号代表网卡名称,例如hme0、ce0等”

    2.#vi /etc/inet/ipnodes
    加入如下一行:
    2001:218:466:1000:a00:20ff:fe88:a683 velocity.v6.optix.org velocity-v6
地址即为分配该机器的地址,根据实际分配的地址填写。

    3.#vi /etc/nsswitch.conf
    修改hosts和ipnodes项如下:
    hosts: files dns
    ipnodes: files dns

    4.重新起动计算机:
    测试命令#ping –A inet6 2001:250:1800:18::1

    上面介绍了类Unix系统配置ipv6的过程。下面将介绍windows 2000/2003服务器的ipv6配置方法。(未完待续,敬请关注)

0
相关文章