Next Previous Contents

7. 设定IPv6路由

7.1 列印现有的路由

使用"ip"

使用方法:


# /sbin/ip -6 route show [dev <device>]

例子:


# /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

使用 "route"

使用方法:


# /sbin/route -A inet6 

例子:在同一个界面上不同的IPv6路由.


# /sbin/ip -6 route show dev eth0
# /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

7.2 设定IPv6路由通过闸道

使用"ip"

使用方法:


# /sbin/ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>
? [dev <device>]

例子:


# /sbin/ip -6 route add 2000::/3 via 3ffe:ffff:0:f101::1

使用 "route"

使用方法:


# /sbin/route -A inet6 add <ipv6network>/<prefixlength> gw
? <ipv6address> [dev <device>] 

例子:为当前所有的(全局地址global addresses 2000::/3)址通过闸道3ffe:ffff:0:f101::1


# /sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1

7.3 移除 IPv6路由通过闸道

使用"ip"

使用方法:


# /sbin/ip -6 route del <ipv6network>/<prefixlength> via <ipv6address>
? [dev <device>]

例子:


# /sbin/ip -6 route del 2000::/3 via 3ffe:ffff:0:f101::1

使用 "route"

使用方法:


# /sbin/route -A inet6 del <network>/<prefixlength> [dev <device>]

例子:移除前所有的(全局地址global addresses 2000::/3)址通过闸道3ffe:ffff:0:f101::1


# /sbin/route -A inet6 del 2000::/3 gw 3ffe:ffff:0:f101::1

7.4 增加IPv6路由至interface(界面)

使用 "ip"

使用方法:


# /sbin/ip -6 route add <ipv6network>/<prefixlength> dev <device>
? metric 1

例子:


# /sbin/ip -6 route add 2000::/3 dev eth0 metric 1

使用 "route"

使用方法:


# /sbin/route -A inet6 add <network>/<prefixlength> dev <device>

例子:


# /sbin/route -A inet6 add 2000::/3 dev eth0

7.5 从interface(界面)移除IPv6路由

使用 "ip"

使用方法:


# /sbin/ip -6 route del <ipv6network>/<prefixlength> dev <device>
? metric 1

例子:


# /sbin/ip -6 route del 2000::/3 dev eth0 

使用 "route"

使用方法:


# /sbin/route -A inet6 del <network>/<prefixlength> dev <device>

例子:


# /sbin/route -A inet6 del 2000::/3 dev eth0

7.6 FAQ for IPv6 routes(IPv6 路由的经常问答)

Support of an IPv6 default route

IPv6的一个方法是hierachical routing(分级路由).因此,分级当中最少需要一个路由.

在目前的核心中有一些问题:

Clients (not routing any packet!)没有任何数据包被路由.

Clinets 可以设定一个缺省的prefix "::/0"(前缀为 ::/0 的路由).


# ip -6 route show | grep ^default
default via fe80::212:34ff:fe12:3450 dev eth0 proto kernel metric 1024 expires
? 29sec mtu 1500 advmss 1440

Routers on packet forwarding (路由包转寄)

目前主流的Linux核心(最少是 <=2.4.17) 不支持缺省路由. 您可以设定它们,但在发送数据包时环绕会失败. 所以,目前的缺省路由可以被设定成 前缀为"2000::/3"的 global (全局地址). USAGI 对这个有著良好的支持.

注意: 注意没有地址筛选的边缘路由器的缺省路由, 不然会有多余的multicast 或 site-local 传输从边缘溢出.


Next Previous Contents