Linux 网络的 IPv6 应用

类别:软件工程 点击:0 评论:0 推荐:
作者:曹江华

IPv6(Internet Protocol Version 6)协议是取代 IPv4 的下一代网络协议,它具有许多新的特性与功能。由 IP 地址危机产生和发展起来的 IPv6 作为下一代互联网协议已经得到了各方的公认,未来互联网的发展离不开IPv6的支持和应用。Ipv6 协议和 Ipv4 协议不论在结构上还是系统工具的使用上都不大相同。 Linux 是所有操作系统中最先支持 IPv6 的,这里介绍一下 Linux 下的 IPv6 的地址、路由设定、防火墙配置、安全工具,使大家可以在 Linux 网络环境下从 IPv4 快速过渡到 IPv6。

配置 Ipv6 协议

下面笔者以 Mandrake 9.1 Linux 为例部署 Linux 下的 IPv6。

1、加载 IPv6 模块

和 Windows 系统相比 Linux 对 Ipv6 的支持更好,一般基于 2.4 内核的 Linux 发行版本都可以直接使用 Ipv6,使用前要看系统 IPv6 模块是否被加载,如果没有的话可以使用命令手工加载,这需要超级用户的权限。然后使用命令检测,图 1 中第五行处显示 IPv6 地址 ( inet6 addr:fe80::200:e8ff:fea0:2586/64 )证明 IPv6 已经加载。

# modprobe IPv6

#ifconfig -a

显示如下内容:




图 1 显示 IPv6 地址已经加载

2、使用 Ping 命令检测网卡的 IPv6 地址是否有效

和 IPv4 不一样使用 Ping6 命令时必须指定一个网卡界面,否则系统将不知道将数据包发送到那个网络设备,I表示 Interface、eth0 是第一个网卡、c 表示回路,3 表示 Ping6 操作三次。结果见图 2:



#ping6 -I eth0 -c 1 fe80::200:e8ff:fea0:2586

3、使用 IP 命令

IP 命令是 iproute2 软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。如:ifconfig、route 等。

(1)使用 "ip" 命令查看 IPv6 的路由表:

#/sbin/ip -6 route show dev eth0

(2)使用 "IP" 命令添加一个路由表:

#/sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1

(3)用 IP 命令设定 IPv6 的多点传播 Neighbor Solicitation

IPv6 的 Neighbor Discovery 继承了 IPv4 的 ARP(Address Resolution Protocol 地址解析协议),可以重新得到网络邻居的信息,并且可以编辑/删除它.使用IP命令可以知道网络邻居的设定(其中,00:01:24:45:67:89 是网络设备的数据链路层的 MAC 地址):

#ip -6 neigh show fe80::201:23ff:fe45:6789 dev eth0 ll addr 00:01:24:45:67:89

router nud reachable

Linux Ipv6 版本网络环境的防火墙

安装:

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

(1)下载 Ipv6 版本的 iptables,下载链接:ftp://ftp.uni-bayreuth.de/pub/ Linux /ark Linux /1.0-0.alpha8.2/i586/iptables-ipv6-1.2.7a-1ark.i586.rpm

(2) 安装防火墙:

#rpm -ivh iptables-ipv6-1.2.7a-1ark.i586.rpm

配置 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 :丢弃数据包。

(3) 范例:

1、允许 ICMPv6 数据包进入主机(即允许 Ping 主机 Ipv6 地址):

#/sbin/ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT

2、允许 ICMPv6 数据包从主机输出:

# ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT

3、允许使用 IP 地址是 3ffe:ffff:100::1/128 数据使用 SSH

# ip6tables -A INPUT -i sit+ -p tcp -s 3ffe:ffff:100::1/128 --sport 512:65535

? --dport 22 -j ACCEPT

SSH 的英文全称是 Secure SHell。通过使用 SSH,你可以把所有传输的数据进行加密,这样“中间服务器”这种攻击方式就不可能实现了,而且也能够防止 DNS 和 IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 telnet,又可以为 ftp、pop、甚至 ppp 提供一个安全的“通道”。SSH 绑定在端口 22 上,其连接采用协商方式使用 RSA 加密。身份鉴别完成之后,后面的所有流量都使用 IDEA 进行加密。SSH(Secure Shell)程序可以通过网络登录到远程主机并执行命令。SSH 的加密隧道保护的只是中间传输的安全性,使得任何通常的嗅探工具软件无法获取发送的内容。

IPv6 网络的安全工具

Nmap 是在免费软件基金会的 GNU General Public License (GPL) 下发布的,由 Fyodor 进行开发和维护,可从 www.insecure.org/nmap 站点上免费下载。nmap 是一款运行在单一主机和大型网络情况下的优秀端口扫描工具,具有高速、秘密、可以绕过防火墙等特点。它支持多种协议,如 TCP、UDP、ICMP 等。nmap 也具有很多高性能和可靠性的特点,如动态延时计算、包超时重发、并行端口扫描、通过并行 ping6 探测主机是否当掉。它从 3.10 版本开始支持 IPv6。下载链接:http://gd.tuwien.ac.at/infosys/security/nmap/nmap-3.48.tgz

nmap 安装编译过程如下:

#tar zxvf nmap-3.48.tgz

#cd nmap-3.48

# ./configure;# make;#make install

nmap 扫描类型

nmap 的语法相当简单:nmap 的不同选项和-s标志组成了不同的扫描类型,Ipv6 版本的 nmap 支持两种扫描方式:

-sT 即 Port Scanning,通常称为端口扫描。

-sS 即 TCP SYN,通常称为半开发扫描。

nmap 扫描端口实例:

# nmap -6 -sT ::1

Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-12-23 11:55 UTC

All 1657 scanned ports on ::1 are: closed

Nmap run completed -- 1 IP address (1 host up) scanned in 20.521 seconds

输出的扫描报告显示 Nmap 扫描了 1657 个端口,一个是打开的其他是关闭的。

注意事项:如果你打算在 IPv6 网络下使用 Nmap,下面几点经验可能对你有帮助:

● 避免误解。不要随意选择测试 Nmap 的扫描目标。许多单位把端口扫描视为恶意行为,所以测试 Nmap 最好在内部网络进行。如有必要,应该告诉同事你正在试验端口扫描,因为扫描可能引发IDS警报以及其他网络问题。

● 建立安全基准。在Nmap的帮助下加固网络、搞清楚哪些系统和服务可能受到攻击之后,下一步是从这些已知的系统和服务出发建立一个安全基准,以后如果要启用新的服务或者服务器,就可以方便地根据这个安全基准执行。

如果你想查看在 Ipv6 协议网络工作的 Linux 程序可以访问:http://www.netcore.fi/pekkas/ Linux /ipv6/ 这里能找到很多有 IPv6 支持的 RPM 包。

表1 Linux 网络 IPv4 和 IPv6 功能对照

IPv4

IPv4 的回路地址为 127.0.0.1

来源位址和目的位址长度都为 32 位 (4 字节)。IPv4 可提供 4294967296 个地址。

IPv4 使用 Internet 群组管理通信协议 (IGMP) 管理本机子网络群组成员身份。

IPSec 支持是选择性的。

在 IPv4 包头中,路由器不识别用于 QoS 处理的 payload。

路由器和传送主机均支持数据片段。

包头包括检查值。

包头包括选项。

地址解析通讯协议 (ARP) 使用广播 ARP Request 讯框,将 IPv4 地址解析为连结层地址。

使用 Internet 群组管理通讯协议 (IGMP) 管理本机子网络群组成员身份。

使用 ICMP Router Discovery 确定具有最佳预设网关的 IPv4 地址 (选择性)。

使用广播地址将传输传送到子网络上的所有节点。

必须手动配置或使用 DHCP 配置。

使用网络域名称系统 (DNS) 中的主机地址 (A) 资源记录,将主机名称对应到 IPv4 地址。

使用 IN-ADDR.ARPA DNS 网域中的指标 (PTR) 资源记录,将 IPv4 地址对应到主机名称。

IPv6

IPv6 的回路地址为 0000:0000:0000:0000:0000:0000:0000:0001 可以简写为 ::1。

来源位址和目的位址长度都为 128 位 (16 字节)。IPv6 将原来的 32 位地址空间增大到 128 位,数目是 2 的 128 次方,能够对地球上每平方米提供 6×1023 个网络地址。

IPv6 使用 Multicast Listener Discovery (MLD) 消息取代 IGMP。

IPSec 支持是必需的。

在 IPv6 包头中,路由器使用 Flow Label 字段识别用于 QoS 处理的 payload。

路由器不支持数据片段。仅传送主机支持数据片段。

包头不包括检查值。

所有选项数据均移到 IPv6 扩充包头中。

用多点传播 Neighbor Solicitation 消息取代 ARP Request。

用 Multicast Listener Discovery (MLD) 消息取代 IGMP。

用 ICMPv6 Router Solicitation 和 Router Advertisement 消息取代 ICMPv4 Router Discovery,这是必需的。

没有 IPv6 广播地址。而是使用连结-本机领域所有节点多点传播地址。

不需要手动配置或 DHCP。

使用网络域名称系统 (DNS) 中的主机地址 (AAAA) 资源记录,将主机名称对应到 IPv6 地址。

使用 IPv6.INT DNS 网域中的指标 (PTR) 资源记录,将 IPv6 地址对应到主机名称。

全文出自 : 赛迪网 - 网管员世界

本文地址:http://com.8s8s.com/it/it34444.htm