现在的位置: 首页 > 综合 > 正文

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

2013年08月18日 ⁄ 综合 ⁄ 共 4905字 ⁄ 字号 评论关闭
    如今,几乎所有的主流操作系统、嵌入式操作提供系统都提供了对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
 

抱歉!评论已关闭.