IPv6 路由:跟 IPv4 幾乎一樣,但有三個坑
考綱明列「設定與驗證 IPv4 與 IPv6 靜態路由」。好消息是邏輯完全相同。
約 12 分鐘
IPv6 的路由查找邏輯跟 IPv4 一模一樣:最長前綴匹配 → 管理距離 → 度量值。指令也只是把 ip 換成 ipv6。真正要注意的是幾個 IPv6 特有的行為。
! ---- IPv4 ---- ! ---- IPv6 ----
ip route 192.168.2.0 255.255.255.0 10.0.0.2
ipv6 route 2001:db8:2::/64 2001:db8:12::2
! 預設路由
ip route 0.0.0.0 0.0.0.0 10.0.0.2
ipv6 route ::/0 2001:db8:12::2
! 浮動靜態路由(備援,AD 設高一點)
ipv6 route ::/0 2001:db8:99::1 200
! 主機路由(IPv6 用 /128,相當於 IPv4 的 /32)
ipv6 route 2001:db8:2::100/128 2001:db8:12::2坑二:下一跳可以用 link-local 位址,但必須同時指定介面
IPv6 的鄰居關係大量使用 link-local 位址(FE80::/10)。但 link-local 只在單一鏈路內有效 —— 同一個 FE80:: 位址可能出現在多個介面上,所以路由器無法只憑它判斷該從哪裡送出去。
! ✗ 錯誤:只給 link-local,路由器不知道要從哪個介面送
R1(config)# ipv6 route 2001:db8:2::/64 FE80::2
% Interface has to be specified for a link-local nexthop
! ✓ 正確:介面 + link-local 下一跳
R1(config)# ipv6 route 2001:db8:2::/64 gi0/0 FE80::2
! ✓ 也可以:用全域位址當下一跳,就不必指定介面
R1(config)# ipv6 route 2001:db8:2::/64 2001:db8:12::2讀懂 IPv6 路由表
R1# show ipv6 route
IPv6 Routing Table - default - 5 entries
Codes: C - Connected, L - Local, S - Static, O - OSPF
S ::/0 [1/0]
via 2001:DB8:12::2
C 2001:DB8:1::/64 [0/0]
via GigabitEthernet0/1, directly connected
L 2001:DB8:1::1/128 [0/0]
via GigabitEthernet0/1, receive
C 2001:DB8:12::/64 [0/0]
via GigabitEthernet0/0, directly connected
L FF00::/8 [0/0]
via Null0, receive- C 與 L 的意義跟 IPv4 相同:C 是整個直連網段,L 是路由器自己的位址(IPv6 用 /128,IPv4 用 /32)。
- FF00::/8 指向 Null0:這是多播位址範圍,正常現象,不是錯誤。
- link-local 位址不會出現在路由表裡:它們不可路由,只存在於鄰居表(
show ipv6 neighbors)。
實驗 5-2:雙堆疊靜態路由
目標:在同一個拓樸上同時跑 IPv4 與 IPv6,親眼看到兩套路由表獨立運作。
- 沿用實驗 5-1 的三台路由器拓樸(PC1 — R1 — R2 — R3 — PC2)。
- 在每台路由器全域下
ipv6 unicast-routing。 - 每個介面在原有的 IPv4 位址之外,再加上對應的 IPv6 位址(例如 R1-R2 之間用
2001:db8:12::1/64與::2/64)。 - 兩端的 PC 也設定 IPv6 位址與閘道。
- 在每台路由器加上 IPv6 靜態路由,指向兩側的末端網段。
show ip route與show ipv6 route各看一次,比較兩張表。- 從 PC1 分別 ping PC2 的 IPv4 與 IPv6 位址。
怎麼確認做對了:
兩個位址族都應該通。如果 IPv6 不通而 IPv4 通,依序檢查:
兩個位址族都應該通。如果 IPv6 不通而 IPv4 通,依序檢查:
ipv6 unicast-routing 下了嗎?介面 IPv6 位址設了嗎?路由的下一跳寫對了嗎?特別注意兩張路由表是完全獨立的 —— IPv4 設好不代表 IPv6 也會通。立即測驗這一節(1 題)