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