Linux下的IPv6地址、路由以及隧道配置

  • Post author:
  • Post category:linux


如今,几乎所有的主流操作系统、嵌入式操作提供系统都提供了对

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