IPV6地址是为接口或一组接口分配的一个128比特的标识符。IPV6地址有下面三类:单播地址,泛播地址,组播地址。
单播地址(Unicast Address) : 分配给单个接口的标识符,目标地址是一个单播地址的数据包将被到该地址所标识的接口。
泛播地址(Anycast Address): 分配给一组接口的地址,该组接口可以属于不同的节点,目标地址是泛播地址的数据包将被发送到所有由该地址标识的接口中的一个,该接口是按路由协议中的距离标准确定的路由距离最短的一个。
组播地址(Multicast Address):分配给一组接口的地址,该组接口可以属于不同的接点,目标地址是组播地址的包将被发送到所有由该地址标识的接口。IPv6中没有广播地址,而是由组播地址代替。
所有类型的IPV6地址都是分配给接口,所有的接口都需要至少一个链路本地单播地址。单个接口可能被同时分配任何类型或范围的多个IPV6地址。
IPV6地址具有使用范畴特点,分为Link-Local Site-Local Global三种类型范畴。
IPV6地址具有生命周期的概念,
IPV6地址以16进位,每16位为一单元并以:隔开来表示,如:3FFE:3600:4368:1234:0008:AB12:98CE:1000。同时为保持书写简洁,规定,数字前面的0可以省除,连续单元都是0可以用::表示,但一个地址内只允许使用一次。如3FFE:3600:4368:1234:8:AB12:98CE:1000。又比喻3FFE:3600::1是 3FFE:3600:0000:0000:0000:0000:0000:0001的简写,同样3FFE:3600::3:0000:1是3FFE:3600:0000:0000:0000:0003:0000:0001的简写,但不能简写为3FFE:3600::3::1
IPV6地址前缀
Ø 未指定地址
[0000:0000:0000:0000:0000:0000:0000:0000]或[::]
Ø LoopBack 地址
[0:0:0:0:0:0:0:1]或[::1]
Ø IPV6-compatible 地址
[0:0:0:0:0:0:w.c.x.z]或[::w.c.x.z]
Ø IPV4-mapped 地址
[0:0:0:0:0:FFFF:w.c.x.z]或[::FFFF:w.c.x.z]
Ø NSAP(Network service Access Point)地址
前缀[0000001]
Ø IPX(Internetwork Packet Exchange)地址
前缀[0000010]
本次试验环境选用在Fedora core 1和windows 2003平台上进行试验,整个运行网络图如下:
试验平台分为两种类型,一种是windows平台,windows平台又分为windows 2003和windows 2000+ipv6补丁。另一种是linux平台,主要是针对Fedora core 1,这里分别讲述如下:
1) 检测linux 内核是否支持IPV6
test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
2) 检测IPV6模块是否已安装进来,一般都已安装
insmod ipv6
3) 检测IPV6模块是否已经挂进系统
# modprobe –c|grep net-pf-10
Alias net-pf-10 off 如果此处返回为off可用vi打开/etc/sysconfig/network文件并加入下句: NETWORKING_IPV6=yes
4) 重新启动网络服务 service network restart
5) 重新检查IPV6模块是否已加入:
Modprobe –c|grep ipv6
Alias net-pf-10 ipv6
6) 确认IPV6安装成功
lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded"
7) 通过命令确认安装IPV6成功
Ping6 traceroute6 telnet6 ifconfig route
ping6 -I eth0 fe80::250:baff:fe69:2d08
8) 显示当前ipv6地址
# ifconfig –a
# ip -6 addr show dev eth0
9) 增加IPV6地址
# /sbin/ip -6 addr add
# /sbin/ifconfig
10) 删除IPV6地址
# /sbin/ip -6 addr del
# /sbin/ifconfig
11) 脚本设置
在/etc/sysconfig/network-scripts/ifcfg-
IPV6INIT=yes
IPV6ADDR=“
在/etc/sysconfig/network加入
IPV6INIT=yes
NETWORKING=yes
IPV6_DEFAULTGW=“
Windows 2003自身已完全支持IPV6,因此可直接通过点击来配置,单击网上邻居,点右键打开“属性”,点“本地连接”,右键打开属性,点“安装”,找到“协议”,单击“添加”,找到“Microsoft IPV6协议”
如果安装成功,即可在本地连接的属性看到ipv6协议栈,如下所示:
a) 检查windows 2000SP版本
Windows 2000上运行IPV6一般需要SP版本才可以。可安如下方法查看windows版本:在命令行中敲入winver,弹出对话框中表明当前Windows安装版本,可点击桌面“我的电脑”属性,并打开常规,可看到如下:
b) 安装补丁包
从ftp://10.8.164.230 上下载补丁包tpipv6-001205-SP3-IE6.zip解压并执行setup目录下的hotfix.exe,重新启动后,将setup目录下除hotfix.exe之外的所有可执行文件复制到操作系统目录下的system32下;同时按windows 2003一样配置windows IPV6协议。
A. 在命令行中运行ipv6 install
B. 查看是否安装成功 ipv6 if
1) 查看当前IPV4配置
# ifconfig –a 得到当前的网卡号
2) 建立hostname6文件
# touch hostname6.? ?为网卡号
3) reboot 重新启动机器
4) vi /etc/inet/ipnodes 加入一行
2001:218:466:1000:a00:20ff:fe88:a683 itnetv6
5) 利用ifconfig 配置静态地址
Ifconfig bge0 inet6 addif 2001:250:f004:400::d230:89ea/64 up
Route add –inet6 default 2001:250:f004:400::1 –ifp bge0
1) 下载JDK1.5.0 for linux版本
从ftp://10.8.164.230/software里下载,或从java.sun.com上下载,选择32位linux RPM版本。如果是自解压版本参见后面自解压安装说明。
2) 解开压缩文档
增加执行权限,并执行bin文件.
# Chmod a+x jdk-1_5_0-linux-i586-rpm.bin
#./ jdk-1_5_0-linux-i586-rpm.bin
在当前目录得到jdk-1_5_0-linux-i586-rpm文件
3) 安装rpm包
利用su 命令转到root 用户,并执行
Rpm –iv jdk-1_5_0-linux-i586-rpm
4) 退出root 账户,并删除bin和rpm文件
5) 安装自解压版本的JDK可直接执行,缺省安装在usr/java/下
6) 配置JAVA_HOME
打开文件etc/.profile 或 /root/.bash.rc 加入下段
export JAVA_HOME=/usr/java/jdk1.5.0
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
7) 执行测试命令
# java –version
# javac
#echo $JAVA_HOME
Apache HTTP Server一般用于静态网页的解析,速度比Tomcat要快很多,因此很多网站都是通过Apache HTTP Server与Tomcat配合搭建,Apache HTTP Server 从2.0 以后利用Apache Portable Running libray库开始支持IPV6,在Fedora core 1上缺省安装了一个Apache 2.0.47,但它缺省是enable-v4-mapped的也就是对基于IPV4的地址访问统一使用映射IPV6地址进行listen.这里简要将Apache HTTP Server缺省安装的管理方法作一个简要描述:
1) 开启、停止、重起Apache
# /etc/rc.d/init.d/httpd start
# apachectl
#/etc/rc.d/init.d/httpd stop
#/etc/rc.d/init.d/httpd restart
2) 配置Apache
Vi /etc/httpd/conf/httpd.conf 修改其中的一些参数进行配置
Apache 重新安装过程如下,
从apache 网站下载apache 发行包或从ftp://10.8.164.230/softerware 来下载软件,httpd-2.0.50-i686-pc-linux-gnu.tar.gz
1) 解压到指定目录如/opt/
Tar –zxvf httpd-2.0.50-i686-pc-linux-gnu.tar.gz
2) 进入到当前目录下生成的目录httpd-2.0.50
3) 执行安装过程
./configure –-enable-v4-mapped=no -–prefix=/usr/local/apache -–enable-module=so
Make
Make install
4) 启动apache 服务
#/usr/local/apache/bin/apachectl start
5) 配置apache
# vi /usr/local/apache/conf/httpd.conf
加入如下 :
Listen 10.8.164.226:80
Listen [2001:250:f004:400::d219:89ea]:80
这样就是单独listen
Tomcat 通常作servlet容器,实现了基于Java Servlet/JSP技术开发的服务器应用技术。到目前为止开发版本如下:
Servlet规范 |
JSP规范 |
JDK版本 |
Tomcat版本 |
2.4 |
2.0 |
1.5.0 |
5.0.25 |
2.3 |
1.2 |
1.4 |
4.1.30 |
2.2 |
1.1 |
1.3 |
3.3.2 |
1) 下载Tomcat软件
从ftp://10.8.164.230/soft或从http:// http://jakarta.apache.org/site/binindex.cgi.下载,考虑到JDK支持,下载jakarta-tomcat-5.0.29.tar.gz包
2) 安装Tomcat
拷贝软件包到指定安装目录
# cp jakarta-tomcat-5.0.29.tar.gz /opt 拷贝到指定目录
# tar -zxvf jakarta-tomcat-5.0.29.tar.gz 解压到当前目录
# ln –s jakarta-tomcat-5.0.29 tomcat 创建一个连接目录
3) 配置Tomcat 环境变量
在etc/.profile或/root/.bashrc中增加一行
export CATALINA_HOME=/opt/tomcat 并重启机器
4) 测试服务可以启动
到目录/opt/tomcat/bin下执行 ./startup.sh start 或./shutdown.sh stop如果不能执行,可增加执行权限给下列文件:
#chmod +x startup.sh
#chmod +x shutdown.sh
# chmod +x tomcat.sh
打开网页浏览器敲入http://localhost:8080/出现Tomcat欢迎界面
Windows XP/2000下使用ipv6.exe进行配置,打开命令行窗口,执行ipv6,可看到如下帮助信息,这里简要介绍其中的一些常用命令:
usage: ipv6 if [ifindex]
ipv6 ifc ifindex [forwards] [-forwards] [advertises] [-advertises] [mtu #
bytes] [site site-identifer]
ipv6 ifd ifindex
ipv6 adu ifindex/address [lifetime validlifetime[/preflifetime]] [anycast
] [unicast]
ipv6 nc [ifindex [address]]
ipv6 ncf [ifindex [address]]
ipv6 rc [ifindex address]
ipv6 rcf [ifindex [address]]
ipv6 bc
ipv6 rt
ipv6 rtu prefix ifindex[/address] [lifetime L] [preference P] [publish] [
age] [spl SitePrefixLength]
ipv6 spt
ipv6 spu prefix ifindex [lifetime L]
1) 安装IPV6协议栈
在windows XP平台使用ipv6 install/uninstall命令,用于安装和卸载IPV6协议栈。在Windows 2000上安装补丁。
2) 显示接口配置信息
列出所有接口信息使用命令ipv6 if 或ipconfig /all,如果想看到具体的某个接口信息,可用命令ipv6 if +接口标识
3) 添加IPV6地址
Ipv6 adu ifindex/address 如ipv6 adu 6/2001:250:f004:400::d155:89ea
4) 添加路由
ipv6 rtu 2001:250:f004:400::/64 6
5) 删除IPV6地址
Ipv6 adu ifindex/address life 0 如ipv6 adu 6/2001:250:f004:400::d155:89ea life 0
6) 查看路由表
Ipv6 rt
Netsh命令在windows 2000和XP中已存在,但没有实现对IPV6的配置,在Windows 2003中开始统一到netsh中进行配置。具体配置方式可通过?进行查阅。
可以修改基于windows socket开发的c语言程序。
Ping 命令主要用来ICMP包,在Solaris上使用ping ,在linux/windows上使用ping6.一般如果针对链路地址,要使用发出ping指令的网卡标志如
Ping6 –I eth0 fe80::210:5cff:fead:81b8
Java 基于面向对象进行设计,因此,针对IPV6的开发以前的应用修改比较小,这里主要涉及到以下一些类:
n InetAddress 代表IP地址,下面有两个子类Inet4Address 和Inet6Address,一般来说除非要求知道协议或地址信息,是不会使用子类的,在InetAddress中新增了如下一些方法:isAnyLocalAddress isLoopbackAddress isLinkLocalAddress isSiteLocalAddress isMCglobal isMCNodeLocal isMCLinkLocal isMCOrgLocal getCanonicalHostName getByAddr
n Socket ServerSocket DatagramSocket 无改动,实际过程中取决于操作系统实现
n MulticastSocket 变动较大
n URL URI 解析参照基于RFC 2732.,也就是在IPV6地址中加[]号
基于Java实现,免费提供商业支持,http://snmp.westhawk.co.uk/index.html ,支持SNMPV1 V2 V3,不支持IPV6,实现了如下一些基本功能:
支持IPV6(从5.1.1版以后),有基于Java实现的netsnmpj
Sybase 12.5.2开始全面支持IPV6,Oracle 10g Release 2开始全面支持IPV6,mysql 需要一个补丁包