1. IPv6地址概述
1.1 IPV6地址模型
IPV6地址是爲接口或一組接口分配的一個128比特的標識符。IPV6地址有下面三類:單播地址,泛播地址,組播地址。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
單播地址(Unicast Address) : 分配給單個接口的標識符,目標地址是一個單播地址的數據包將被到該地址所標識的接口。
泛播地址(Anycast Address): 分配給一組接口的地址,該組接口可以屬於不同的節點,目標地址是泛播地址的數據包將被髮送到所有由該地址標識的接口中的一個,該接口是按路由協議中的距離標準確定的路由距離最短的一個。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
組播地址(Multicast Address):分配給一組接口的地址,該組接口可以屬於不同的接點,目標地址是組播地址的包將被髮送到所有由該地址標識的接口。IPv6中沒有廣播地址,而是由組播地址代替。
所有類型的IPV6地址都是分配給接口,所有的接口都需要至少一個鏈路本地單播地址。單個接口可能被同時分配任何類型或範圍的多個IPV6地址。
IPV6地址具有使用範疇特點,分爲Link-Local Site-Local Global三種類型範疇。
IPV6地址具有生命週期的概念,
1.2 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
1.3 IPV6地址前綴
IPV6地址前綴
1.4 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]
2. 試驗環境簡述
本次試驗環境選用在Fedora core 1和windows 2003平臺上進行試驗,整個運行網絡圖如下:
3. 平臺配置
試驗平臺分爲兩種類型,一種是windows平臺,windows平臺又分爲windows 2003和windows 2000+ipv6補丁。另一種是linux平臺,主要是針對Fedora core 1,這裏分別講述如下:
3.1 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 <ipv6address>/<prefixlength> dev <interface>
# /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
10) 刪除IPV6地址
# /sbin/ip -6 addr <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />del <ipv6address>/<prefixlength> dev <interface>
# /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>
11) 腳本設置
在/etc/sysconfig/network-scripts/ifcfg-<device>中加入
IPV6INIT=yes
IPV6ADDR=“<ipv6address>/<prefix>”
在/etc/sysconfig/network加入
IPV6INIT=yes
NETWORKING=yes
IPV6_DEFAULTGW=“<ipv6address>”
3.2 windows 2003上安裝IPV6
Windows 2003自身已完全支持IPV6,因此可直接通過點擊來配置,單擊網上鄰居,點右鍵打開“屬性”,點“本地連接”,右鍵打開屬性,點“安裝”,找到“協議”,單擊“添加”,找到“Microsoft IPV6協議”
如果安裝成功,即可在本地連接的屬性看到ipv6協議棧,如下所示:
3.3 windows 2000上安裝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協議。
3.4 windows XP 上安裝IPV6
A. 在命令行中運行ipv6 install
B. 查看是否安裝成功 ipv6 if
3.5 Solaris 8 上安裝IPV6
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
4. 應用軟件配置
4.1 JDK 安裝
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
4.2 Apache HTTP Server
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
4.3 Apache Tomcat Server
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歡迎界面
5. 常用配置測試工具
5.1 IPV6.exe
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
5.2 Netsh.exe
Netsh命令在windows 2000和XP中已存在,但沒有實現對IPV6的配置,在Windows 2003中開始統一到netsh中進行配置。具體配置方式可通過?進行查閱。
5.3 checkv4.exe
可以修改基於windows socket開發的c語言程序。
5.4 Ping.exe/ping6.exe
Ping 命令主要用來ICMP包,在Solaris上使用ping ,在linux/windows上使用ping6.一般如果針對鏈路地址,要使用發出ping指令的網卡標誌如
Ping6 –I eth0 fe80::210:5cff:fead:81b8
6. Java開發與IPV6
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地址中加[]號
7. SNMP 與IPV6開發
7.1 Westhawk
基於Java實現,免費提供商業支持,http://snmp.westhawk.co.uk/index.html ,支持SNMPV1 V2 V3,不支持IPV6,實現瞭如下一些基本功能:
7.2 Net-snmp
支持IPV6(從5.1.1版以後),有基於Java實現的netsnmpj
8. 數據庫與IPV6
Sybase 12.5.2開始全面支持IPV6,Oracle 10g Release 2開始全面支持IPV6,mysql 需要一個補丁包