如今,幾乎所有的主流作業系統、嵌入式操作提供系統都提供了對IPv6協議棧的支援,在windows XP下面,使用ipv6 install命令便可以啟動IPv6協議棧,在預設安裝的linux下,利用modprobe ipv6便可以以模組的方式載入IPv6協議棧。本篇僅介紹linux下面的IPv6協議棧的配置命令,以後會陸續推出更為詳盡的linux及windows下的各種過渡機制,比如6to4,nat-pt,teredo等的配置執行個體。
1 開啟或關閉介面
1.1 使用“ip”
用法:
# ip link set dev up
# ip link set dev down
例子:
# ip link set dev eth0 up
# ip link set dev eth0 down
1.2 使用“ifconfig”
用法:
# /sbin/ifconfig up
# /sbin/ifconfig down
例子:
# /sbin/ifconfig eth0 up
# /sbin/ifconfig eth0 down
2 配置IPv6地址
2.1 顯示現有IPv6地址
(1)使用“ip”
用法:
# /sbin/ip -6 addr show dev
(2)使用“ifconfig”
用法:
#/sbin/ifconfig
2.2 添加或刪除一個IPv6地址
(1)使用“ip”
用法:
# /sbin/ip -6 addr /
dev
例子:
# /sbin/ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
(2)使用“ifconfig”
用法:
# /sbin/ifconfig inet6 [add/del] /
例子:
# /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64
3 配置IPv6路由
3.1 顯示現有路由
(1)使用“ip”
用法:
# /sbin/ip -6 route show [dev ]
例子:
# /sbin/ip -6 route show dev eth0
3ffe:ffff:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440
fe80::/10 proto kernel metric 256 mtu 1500 advmss 1440
ff00::/8 proto kernel metric 256 mtu 1500 advmss 1440
default proto kernel metric 256 mtu 1500 advmss 1440
(2)使用“route”
用法:
# /sbin/route -A inet6
例子:
# /sbin/route -A inet6 |grep -w "eth0"
3ffe:ffff:0:f101 ::/64 :: UA 256 0 0 eth0 <- Interface route for global address
fe80::/10 :: UA 256 0 0 eth0 <- Interface route for link-local address
ff00::/8 :: UA 256 0 0 eth0 <- Interface route for all multicast addresses
::/0 :: UDA 256 0 0 eth0 <- Automatic default route
3.2 增加或刪除到一個網關的路由
(1)使用“ip”
用法:
# /sbin/ip -6 route /
via [dev ]
例子:
# /sbin/ip -6 route 2000::/3 via 3ffe:ffff:0:f101::1
(2)使用“route”
用法:
# /sbin/route -A inet6 add /
gw [dev ]
如果網關的IPv6地址是一個鏈路地址,則需要加上dev 參數。
4 配置IPv6-in-IPv4隧道
4.1 隧道類型
(1)靜態點到點隧道:6bone
點到點的隧道是一個終端(endpoint)的專用隧道。配置這樣的隧道需要知道:
你的本地隧道終端的IPv4地址必須是靜態、全球唯一,並且外部隧道終端可以到達的地址。
分配給你的全球IPv6首碼
外部隧道終端能夠將你的IPv6首碼路由到你的本地隧道終端
(2)自動隧道
自動產生的隧道,這發生在本節點和另外一個具有IPv4地址的節點有直接的連結時。
(3)6to4隧道
4.2 顯示現有隧道
(1)使用“ip”
用法:
# /sbin/ip -6 tunnel show []
例子:
# /sbin/ip -6 tunnel show
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
(2)使用“route”
用法:
# /sbin/route -A inet6
例子:
# /sbin/route -A inet6 | grep "/Wsit0/W*$"
::/96 :: U 256 2 0 sit0
2002::/16 :: UA 256 0 0 sit0
2000::/3 ::193.113.58.75 UG 1 0 0 sit0
fe80::/10 :: UA 256 0 0 sit0
ff00::/8 :: UA 256 0 0 sit0
4.3 建立點到點隧道
共有3種可能的方法增加或刪除點到點隧道的方法。
增加點到點隧道
(1)使用“ip”和“route”
建立少量隧道的通用方法。
建立一個隧道裝置的用法(此後要讓配置立刻生效,同時由於TTL的預設值為0,我們還要指定TTL的值):
# /sbin/ip tunnel add mode sit ttl remote local
三個通用的例子:
# /sbin/ip tunnel add sit1 mode sit ttl remote local
# /sbin/ifconfig sit1 up
# /sbin/route -A inet6 add
dev sit1
# /sbin/ip tunnel add sit2 mode sit ttl local
# /sbin/ifconfig sit2 up
# /sbin/route -A inet6 add
dev sit2
# /sbin/ip tunnel add sit3 mode sit ttl local
# /sbin/ifconfig sit3 up
# /sbin/route -A inet6 add
dev sit3
(2)使用“ifconfig”和“route”(不推薦使用)
在只增加一個隧道時,沒有任何問題,但當你建立多個隧道時,問題便出現了。這時,你不能夠輕鬆的關閉前一個隧道,而同時讓其它的隧道運行。
用法:(三個隧道的通用例子)
# /sbin/ifconfig sit0 up
# /sbin/ifconfig sit0 tunnel
# /sbin/ifconfig sit1 up
# /sbin/route -A inet6 add
dev sit1
# /sbin/ifconfig sit0 tunnel
# /sbin/ifconfig sit2 up
# /sbin/route -A inet6 add
dev sit2
# /sbin/ifconfig sit0 tunnel
# /sbin/ifconfig sit3 up
# /sbin/route -A inet6 add
dev sit3
(3)只使用“route”
用法:(3個通用的例子)
# /sbin/ifconfig sit0 up
# /sbin/route -A inet6 add
gw :: dev sit0
# /sbin/route -A inet6 add
gw :: dev sit0
# /sbin/route -A inet6 add
gw :: dev sit0
刪除點到點的隧道
(1)使用“ip”和“route”
用法:
# /sbin/ip tunnel del
舉三個通用的用法:
# /sbin/route -A inet6 del
dev sit1
# /sbin/ifconfig sit1 down
# /sbin/ip tunnel del sit1
# /sbin/route -A inet6 del
dev sit2
# /sbin/ifconfig sit2 down
# /sbin/ip tunnel del sit2
# /sbin/route -A inet6 del
dev sit3
# /sbin/ifconfig sit3 down
# /sbin/ip tunnel del sit3
(2)使用“ifconfig”和“route”(現在不推薦使用)
和建立隧道的命令一樣,刪除隧道的方式也令人很費解。最後建立的隧道必須最先刪除。
用法:(3個常用例子)
# /sbin/route -A inet6 del
dev sit3
# /sbin/ifconfig sit3 down
# /sbin/route -A inet6 del
dev sit2
# /sbin/ifconfig sit2 down
# /sbin/route -A inet6 add
dev sit1
# /sbin/ifconfig sit1 down
# /sbin/ifconfig sit0 down
(3)使用“route”
這有點像刪除通常的IPv6路由。
用法:(3個常用例子)
# /sbin/route -A inet6 del
gw :: dev sit0
# /sbin/route -A inet6 del
gw :: dev sit0
# /sbin/route -A inet6 del
gw :: dev sit0
# /sbin/ifconfig sit0 down
5.4.4 建立6to4隧道
增加6to4隧道
(1)使用“ip”和一個專用的隧道裝置(推薦採用方式)
建立一個新的隧道裝置:
# /sbin/ip tunnel add tun6to4 mode sit remote any local
啟用此隧道介面:
# /sbin/ip link set dev tun6to4 up
給隧道介面增加本地6to4地址
# /sbin/ip -6 addr add /16 dev tun6to4
使用全6to4路由器IPv4任播地址向全球IPv6網路增加一個(預設的)路由器:
# /sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
(2)使用“ifconfig”和“route”以及通常的(generic)隧道裝置“sit0”(不推薦使用)
缺點:使用“sit0”不允許每個裝置的特定的過濾。
啟用通常隧道介面“sit0”:
# /sbin/ifconfig sit0 up
給介面增加本地6to4地址:
# /sbin/ifconfig sit0 add /16
使用全6to4路由器IPv4任播地址向全球IPv6網路增加一個(預設的)路由器:
# /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0
刪除6to4隧道
(1)使用“ip”和一個專用隧道裝置
刪除到專用隧道裝置的所有路由:
# /sbin/ip -6 route flush dev tun6to4
關閉介面:
# /sbin/ip link set dev tun6to4 down
刪除建立的隧道裝置:
# /sbin/ip tunnel del tun6to4
(2)使用“ifconfig”和“route”和通常隧道裝置“sit0”(不推薦使用)
刪除預設到6to4隧道介面的路由:
# /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 dev sit0
刪除到介面的本地6to4地址:
# /sbin/ifconfig sit0 del /16
關閉“sit0”:(此步驟要注意,因為sit0有可能還在使用)
# /sbin/ifconfig sit0 down