本文檔介紹如何配置思科自適應安全裝置(ASA)以便在ASA 7.0(1)及更高版本中傳遞網際網路協定第6版(IPv6)流量。
本文件沒有特定需求。
本文檔中的資訊基於Cisco ASA 7.0(1)及更高版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
目前,IPv6在市場滲透方面仍相對較新。但是,IPv6配置幫助和故障排除請求穩步增加。本文旨在解決這些需求並提供:
以下是有關IPv6功能的一些重要資訊:
IPv6協定是在1990年代中期到後期開發的,主要是因為公共IPv4地址空間迅速耗盡。雖然網路位址轉譯(NAT)在很大程度上協助了IPv4並延遲了此問題,但不可否認的是,最終還是需要替代通訊協定。IPv6協定在1998年12月的RFC 2460中正式詳述。您可以在Internet工程任務組(IETF)網站上的官方RFC 2460文檔中閱讀有關該協定的詳細資訊。
本節介紹IPv6協定與舊版IPv4協定相比有哪些改進。
IPv6協定將IP地址大小從32位增加到128位,以支援更高級別的定址層級、更多數量的可定址節點和更簡單的地址自動配置。通過在組播地址中增加scope欄位,提高了組播路由的可擴充性,並定義了一種稱為任播地址的新型地址。這是用來將封包傳送到群組中的任何一個節點。
某些IPv4標頭欄位已丟棄或設為可選,以便減少資料包處理的常見處理成本並限制IPv6標頭的頻寬成本。
IP報頭選項的編碼方式發生改變,可實現更高效的轉發,對選項長度的限制更少,並且在將來引入新選項時具有更大的靈活性。
新增了一項新功能,可啟用屬於傳送者要求特殊處理的特定流量(例如非預設服務品質(QoS)或即時服務)的封包的標記。
為IPv6指定了用於支援身份驗證、資料完整性和(可選)資料機密性的擴展。
本節介紹如何配置Cisco ASA以使用IPv6。
本文檔中使用的示例為IPv6拓撲:
為了通過ASA傳遞IPv6流量,必須首先在至少兩個介面上啟用IPv6。以下示例說明如何啟用IPv6,以便將流量從Gi0/0上的內部介面傳遞到Gi0/1上的外部介面:
ASAv(config)# interface GigabitEthernet0/0
ASAv(config-if)# ipv6 enable
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 enable
現在,您可以在兩個介面上配置IPv6地址。
ASAv(config)# interface GigabitEthernet0/0
ASAv(config-if)# ipv6 address fd03::1/64
ASAv(config-if)# nameif inside
ASAv(config-if)# security-level 100
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 address fd02::2/64
ASAv(config-if)# nameif outside
ASAv(config-if)# security-level 0
現在,您應該具有到外部VLAN上地址為fd02::1的上游路由器的基本第2層(L2)/第3層(L3)連線。
ASAv(config-if)# ping fd02::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to fd02::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/10 ms
與IPv4一樣,即使與直連子網中的主機存在IPv6連線,您仍然必須擁有通往外部網路的路由,以便知道如何到達它們。第一個示例展示如何配置靜態預設路由,以便通過下一跳地址為fd02::1的外部介面到達所有IPv6網路。
使用以下資訊配置IPv6的靜態路由:
ASAv(config)# ipv6 route outside 0::0/0 fd02::1
ASAv(config)# show ipv6 route
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, B - BGP
L fd02::2/128 [0/0]
via ::, outside
C fd02::/64 [0/0]
via ::, outside
L fd03::1/128 [0/0]
via ::, inside
C fd03::/64 [0/0]
via ::, inside
L fe80::/10 [0/0]
via ::, inside
via ::, outside
L ff00::/8 [0/0]
via ::, inside
via ::, outside
S ::/0 [1/0]
via fd02::1, outsideASAv(config)#
如圖所示,現在已連線到外部子網上的主機:
ASAv(config)# ping fd99::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to fd99::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
ASAv(config)#
首先,您應該檢查上游Cisco 881系列整合多業務路由器(ISR)上的開放最短路徑優先版本3(OSPFv3)配置:
C881#show run | sec ipv6
ipv6 unicast-routing
!--- This enables IPv6 routing in the Cisco IOS®.
.....
ipv6 ospf 1 area 0
address-family ipv6 unicast
passive-interface default
no passive-interface Vlan302
!--- This is the interface to send OSPF Hellos to the ASA.
default-information originate always
!--- Always distribute the default route.
redistribute static
ipv6 route ::/0 FD99::2
!--- Creates a static default route for IPv6 to the internet.
以下是相關的介面組態:
C881#show run int Vlan302
interface Vlan302
....
ipv6 address FD02::1/64
ipv6 ospf 1 area 0
C881#
您可以使用ASA資料包捕獲驗證是否從外部介面上的ISR看到OSPF Hello資料包:
ASAv(config)# show run access-list test_ipv6
access-list test_ipv6 extended permit ip any6 any6
ASAv(config)# show cap
capture capout type raw-data access-list test_ipv6 interface outside
[Capturing - 37976 bytes]
ASAv(config)# show cap capout
367 packets captured
1: 11:12:04.949474 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
2: 11:12:06.949444 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
3: 11:12:07.854768 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
4: 11:12:07.946545 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
5: 11:12:08.949459 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
6: 11:12:09.542772 fe80::217:fff:fe17:af80 > ff02::5: ip-proto-89 40
[hlim 1]
....
13: 11:12:16.983011 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
14: 11:12:18.947170 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
15: 11:12:19.394831 fe80::217:fff:fe17:af80 > ff02::5: ip-proto-89 40
[hlim 1]
16: 11:12:19.949444 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
21: 11:12:26.107477 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
ASAv(config)#
在上一次資料包捕獲中,您可以看到OSPF(ip-proto-89)資料包從IPv6本地鏈路地址到達,該地址對應於ISR上的正確介面:
C881#show ipv6 interface brief
......
Vlan302 [up/up]
FE80::C671:FEFF:FE93:B516
FD02::1
C881#
現在,您可以在ASA上建立OSPFv3進程,以便與ISR建立鄰接關係:
ASAv(config)# ipv6 router ospf 1
ASAv(config-rtr)# passive-interface default
ASAv(config-rtr)# no passive-interface outside
ASAv(config-rtr)# log-adjacency-changes
ASAv(config-rtr)# redistribute connected
ASAv(config-rtr)# exit
將OSPF配置應用於ASA外部介面:
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 ospf 1 area 0
ASAv(config-if)# end
這應該會導致ASA在IPv6子網中傳送廣播OSPF Hello資料包。輸入show ipv6 ospf neighbor命令以驗證與路由器的鄰接關係:
ASAv# show ipv6 ospf neighbor
Neighbor ID Pri State Dead Time Interface ID Interface
14.38.104.1 1 FULL/BDR 0:00:33 14 outside
您還可以確認ISR上的鄰居ID,因為預設情況下,ISR使用配置最高的IPv4地址作為ID:
C881#show ipv6 ospf 1
Routing Process "ospfv3 1" with ID 14.38.104.1
Supports NSSA (compatible with RFC 3101)
Event-log enabled, Maximum number of events: 1000, Mode: cyclic
It is an autonomous system boundary router
Redistributing External Routes from,
static
Originate Default Route with always
!--- Notice the other OSPF settings that were configured.
Router is not originating router-LSAs with maximum metric
....
C881#
ASA現在應該已經從ISR獲取預設IPv6路由。若要確認這一點,請輸入show ipv6 route命令:
ASAv# show ipv6 route
IPv6 Routing Table - 8 entries
Codes: C - Connected, L - Local, S - Static
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, B - BGP
O 2001:aaaa:aaaa:aaaa::/64 [110/10]
via ::, outside
L fd02::2/128 [0/0]
via ::, outside
C fd02::/64 [0/0]
via ::, outside
L fd03::1/128 [0/0]
via ::, inside
C fd03::/64 [0/0]
via ::, inside
L fe80::/10 [0/0]
via ::, inside
via ::, outside
L ff00::/8 [0/0]
via ::, inside
via ::, outside
OE2 ::/0 [110/1], tag 1
!--- Here is the learned default route.
via fe80::c671:feff:fe93:b516, outside
ASAv#
ASA上IPv6介面設定和路由功能的基本配置現已完成。
目前沒有適用於此組態的驗證程序。
IPv6連線的故障排除過程遵循大多數用於排除IPv4連線故障的方法,但略有差異。從故障排除的角度來看,IPv4和IPv6之間最重要的區別之一是IPv6中不再存在地址解析協定(ARP)。IPv6不是使用ARP來解析本地LAN網段上的IP地址,而是使用稱為鄰居發現(ND)的協定。
同樣重要的是要瞭解,ND利用網際網路控制訊息通訊協定第6版(ICMPv6)進行媒體存取控制(MAC)位址解析。有關IPv6 ND的詳細資訊,請參閱CLI手冊1的IPv6鄰居發現部分中的ASA IPv6配置指南:Cisco ASA系列常規操作CLI配置指南9.4或RFC 4861中。
目前,大多數與IPv6相關的故障排除都涉及ND、路由或子網配置問題。這可能是因為這也是IPv4和IPv6之間的主要區別。ND的工作方式與ARP不同,而內部網路定址也截然不同,因為IPv6極力不鼓勵使用NAT,而私有定址不再像IPv4那樣使用(在RFC 1918之後)。 一旦瞭解這些差異和/或解決了第2/L3層問題,第4層(L4)及更高層的故障排除過程與IPv4的故障排除過程基本相同,因為TCP/UDP和更高層的協定功能基本相同(無論使用的IP版本如何)。
用於IPv6的L2連線故障排除的最基本命令是show ipv6 neighbor [nameif]命令,該命令等效於IPv4的show arp。
以下是輸出範例:
ASAv(config)# show ipv6 neighbor outside
IPv6 Address Age Link-layer Addr State Interface
fd02::1 0 c471.fe93.b516 REACH outside
fe80::c671:feff:fe93:b516 32 c471.fe93.b516 DELAY outside
fe80::e25f:b9ff:fe3f:1bbf 101 e05f.b93f.1bbf STALE outside
fe80::b2aa:77ff:fe7c:8412 101 b0aa.777c.8412 STALE outside
fe80::213:c4ff:fe80:5f53 101 0013.c480.5f53 STALE outside
fe80::a64c:11ff:fe2a:60f4 101 a44c.112a.60f4 STALE outside
fe80::217:fff:fe17:af80 99 0017.0f17.af80 STALE outside
ASAv(config)#
在此輸出中,可以看到IPv6地址的成功解析fd02::1,它屬於MAC地址為c471.fe93.b516的裝置。
若要清除ND快取,請輸入clear ipv6 neighbors命令。如果特定主機的ND失敗,可以輸入debug ipv6 nd命令,還可以執行資料包捕獲並驗證系統日誌,以確定在L2級別發生哪些情況。請記住,IPv6 ND使用ICMPv6消息來解析IPv6地址的MAC地址。
請考慮以下用於IPv4的ARP和用於IPv6的ND的比較表:
IPv4 ARP | IPv6 ND |
---|---|
ARP請求(誰有10.10.10.1?) | 鄰居請求 |
ARP應答(10.10.10.1位於dead.dead.dead) | 鄰居通告 |
在下一個場景中,ND無法解析位於外部介面上的fd02::1主機的MAC地址。
以下是debug ipv6 nd命令的輸出:
ICMPv6-ND: Sending NS for fd02::1 on outside
!--- "Who has fd02::1"
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: INCMP deleted: fd02::1
ICMPv6-ND: INCMP -> DELETE: fd02::1
ICMPv6-ND: DELETE -> INCMP: fd02::1
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NA for fd02::2 on outside
!--- "fd02::2 is at dead.dead.dead"
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: INCMP deleted: fd02::1
ICMPv6-ND: INCMP -> DELETE: fd02::1
ICMPv6-ND: DELETE -> INCMP: fd02::1
!--- Here is where the ND times out.
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
在此調試輸出中,似乎從未收到來自fd02::2的鄰居通告。您可以檢查封包擷取,以確認是否實際發生這種情況。
設定存取控制清單(ACL)和封包擷取:
ASAv(config)# access-list test_ipv6 extended permit ip any6 any6
ASAv(config)# cap capout interface outside access-list test_ipv6
從ASA:發起對fd02::1的ping命令
ASAv(config)# show cap capout
....
23: 10:55:10.275284 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
24: 10:55:10.277588 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
26: 10:55:11.287735 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
27: 10:55:11.289642 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
28: 10:55:12.293365 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
29: 10:55:12.298538 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
32: 10:55:14.283341 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
33: 10:55:14.285690 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
35: 10:55:15.287872 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
36: 10:55:15.289825 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
如封包擷取所示,系統會收到來自fd02::1的鄰居通告。但是,由於某種原因未處理播發,如調試輸出所示。為了進一步檢查,您可以檢視系統日誌。
以下是一些ND系統日誌示例:
May 13 2015 10:55:10: %ASA-7-609001: Built local-host identity:fd02::2
May 13 2015 10:55:10: %ASA-6-302020: Built outbound ICMP connection for faddr
ff02::1:ff00:1/0 gaddr fd02::2/0 laddr fd02::2/0(any)
May 13 2015 10:55:10: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:10: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:11: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:11: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:12: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:12: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:14: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:14: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:15: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:15: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
在這些系統日誌中,您可以看到fd02::1處來自ISR的ND鄰居通告資料包由於未通過修改的擴展唯一識別符號(EUI)64(修改的EUI-64)格式檢查而被丟棄。
使用IPv6時對路由協定的故障排除過程與使用IPv4時的故障排除過程基本相同。使用debug和show命令以及封包擷取可用於嘗試確定路由通訊協定沒有按預期運作的原因。
本節提供用於IPv6的有用調試命令。
全域性IPv6路由調試
您可以使用debug ipv6 routing 對所有IPv6路由表更改進行故障排除:
ASAv# clear ipv6 ospf 1 proc
Reset OSPF process? [no]: yes
ASAv# IPv6RT0: ospfv3 1, Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, Delete 2001:aaaa:aaaa:aaaa::/64 from table
IPv6RT0: ospfv3 1, Delete backup for fd02::/64
IPv6RT0: ospfv3 1, Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ospfv3 1, Delete ::/0 from table
IPv6RT0: ospfv3 1, ipv6_route_add_core for 2001:aaaa:aaaa:aaaa::/64 [110/10],
next-hop :: nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Add 2001:aaaa:aaaa:aaaa::/64 to table
IPv6RT0: ospfv3 1, Added next-hop :: over outside for 2001:aaaa:aaaa:aaaa::/64,
[110/10]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: input add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: output add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, ipv6_route_add_core for fd02::/64 [110/10], next-hop ::
nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, ipv6_route_add_core for ::/0 [110/1], next-hop
fe80::c671:feff:fe93:b516
nh_source fe80::c671:feff:fe93:b516 via interface outside route-type 16
IPv6RT0: ospfv3 1, Add ::/0 to table
IPv6RT0: ospfv3 1, Added next-hop fe80::c671:feff:fe93:b516 over outside for ::/0,
[110/1]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ipv6_route_add_core: input add ::/0
IPv6RT0: ipv6_route_add_core: output add ::/0
IPv6RT0: ospfv3 1, ipv6_route_add_core for 2001:aaaa:aaaa:aaaa::/64 [110/10],
next-hop :: nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Route add 2001:aaaa:aaaa:aaaa::/64 [owner]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: input add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: output add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, ipv6_route_add_core for fd02::/64 [110/10], next-hop ::
nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Reuse backup for fd02::/64, distance 110
IPv6RT0: ospfv3 1, ipv6_route_add_core for ::/0 [110/1], next-hop
fe80::c671:feff:fe93:b516 nh_source fe80::c671:feff:fe93:b516 via interface outside
route-type 16
IPv6RT0: ospfv3 1, Route add ::/0 [owner]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ipv6_route_add_core: input add ::/0
IPv6RT0: ipv6_route_add_core: output add ::/0
OSPFv3調試
您可以使用debug ipv6 ospf 命令來排除OSPFv3故障:
ASAv# debug ipv6 ospf ?
adj OSPF adjacency events
database-timer OSPF database timer
events OSPF events
flood OSPF flooding
graceful-restart OSPF Graceful Restart processing
hello OSPF hello events
ipsec OSPF ipsec events
lsa-generation OSPF lsa generation
lsdb OSPF database modifications
packet OSPF packets
retransmission OSPF retransmission events
spf OSPF spf
以下是重新啟動OSPFv3進程後啟用的所有調試的示例輸出:
ASAv# clear ipv6 ospf 1
OSPFv3: rcv. v:3 t:1 l:44 rid:192.168.128.115
aid:0.0.0.0 chk:a9ac inst:0 from outside
OSPFv3: Rcv hello from 192.168.128.115 area 0 from outside fe80::217:fff:fe17:af80
interface ID 142
OSPFv3: End of hello processingpr
OSPFv3: rcv. v:3 t:1 l:44 rid:14.38.104.1
aid:0.0.0.0 chk:bbf3 inst:0 from outside
OSPFv3: Rcv hello from 14.38.104.1 area 0 from outside fe80::c671:feff:fe93:b516
interface ID 14
OSPFv3: End of hello processingo
ASAv# clear ipv6 ospf 1 process
Reset OSPF process? [no]: yes
ASAv#
OSPFv3: Flushing External Links
Insert LSA 0 adv_rtr 172.16.118.1, type 0x4005 in maxage
OSPFv3: Add Type 0x4005 LSA ID 0.0.0.0 Adv rtr 172.16.118.1 Seq 80000029 to outside
14.38.104.1 retransmission list
....
!--- The neighbor goes down:
OSPFv3: Neighbor change Event on interface outside
OSPFv3: DR/BDR election on outside
OSPFv3: Elect BDR 14.38.104.1
OSPFv3: Elect DR 192.168.128.115
OSPFv3: Schedule Router LSA area: 0, flag: Change
OSPFv3: Schedule Router LSA area: 0, flag: Change
OSPFv3: Schedule Prefix DR LSA intf outside
OSPFv3: Schedule Prefix Stub LSA area 0
OSPFv3: 14.38.104.1 address fe80::c671:feff:fe93:b516 on outside is dead, state DOWN
....
!--- The neighbor resumes the exchange:
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0xd09 opt 0x0013 flag 0x7 len 28
mtu 1500 state EXSTART
OSPFv3: First DBD and we are not SLAVE
OSPFv3: rcv. v:3 t:2 l:168 rid:14.38.104.1
aid:0.0.0.0 chk:5aa3 inst:0 from outside
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0x914 opt 0x0013 flag 0x2 len 168
mtu 1500 state EXSTART
OSPFv3: NBR Negotiation Done. We are the MASTER
OSPFv3: outside Nbr 14.38.104.1: Summary list built, size 0
OSPFv3: Send DBD to 14.38.104.1 on outside seq 0x915 opt 0x0013 flag 0x1 len 28
OSPFv3: rcv. v:3 t:2 l:28 rid:192.168.128.115
aid:0.0.0.0 chk:295c inst:0 from outside
OSPFv3: Rcv DBD from 192.168.128.115 on outside seq 0xfeb opt 0x0013 flag 0x7 len 28
mtu 1500 state EXSTART
OSPFv3: NBR Negotiation Done. We are the SLAVE
OSPFv3: outside Nbr 192.168.128.115: Summary list built, size 0
OSPFv3: Send DBD to 192.168.128.115 on outside seq 0xfeb opt 0x0013 flag 0x0 len 28
OSPFv3: rcv. v:3 t:2 l:28 rid:14.38.104.1
aid:0.0.0.0 chk:8d74 inst:0 from outside
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0x915 opt 0x0013 flag 0x0 len 28
mtu 1500 state EXCHANGE
....
!--- The routing is re-added to the OSPFv3 neighbor list:
OSPFv3: Add Router 14.38.104.1 via fe80::c671:feff:fe93:b516, metric: 10
Router LSA 14.38.104.1/0, 1 links
Link 0, int 14, nbr 192.168.128.115, nbr int 142, type 2, cost 1
Ignore newdist 11 olddist 10
增強型內部閘道路由通訊協定(EIGRP)
ASA上的EIGRP不支援使用IPv6。請參閱CLI手冊1的EIGRP指導一節:Cisco ASA系列常規操作CLI配置指南9.4版,瞭解更多資訊。
邊界閘道通訊協定(BGP)
使用IPv6時,可以使用此debug命令來排除BGP故障:
ASAv# debug ip bgp ipv6 unicast ?
X:X:X:X::X IPv6 BGP neighbor address
keepalives BGP keepalives
updates BGP updates
<cr>
可以使用以下show命令來排除IPv6故障:
在ASA上的IPv6中可採用與IPv4相同的方式使用內建的Packet Tracer功能。以下示例使用Packet Tracer功能來模擬fd03::2處的內部主機,該主機嘗試使用通過OSPF從881介面獲取的預設路由連線到Internet上的555::1的Web伺服器:
ASAv# packet-tracer input inside tcp fd03::2 10000 5555::1 80 detailed
Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fffd59ca0f0, priority=1, domain=permit, deny=false
hits=2734, user_data=0x0, cs_id=0x0, l3_type=0xdd86
src mac=0000.0000.0000, mask=0000.0000.0000
dst mac=0000.0000.0000, mask=0100.0000.0000
input_ifc=inside, output_ifc=any
Phase: 2
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
found next-hop fe80::c671:feff:fe93:b516 using egress ifc outside
Phase: 3
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fffd589cc30, priority=1, domain=nat-per-session, deny=true
hits=1166, user_data=0x0, cs_id=0x0, reverse, use_real_addr, flags=0x0,
protocol=6
src ip/id=::/0, port=0, tag=any
dst ip/id=::/0, port=0, tag=any
input_ifc=any, output_ifc=any
<<truncated output>>
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
ASAv#
請注意,輸出MAC地址是881介面的本地鏈路地址。如前所述,對於許多動態路由協定,路由器使用本地鏈路IPv6地址來建立鄰接關係。
以下是可用於排除IPv6問題的調試:
ASAv# debug ipv6 ?
dhcp IPv6 generic dhcp protocol debugging
dhcprelay IPv6 dhcp relay debugging
icmp ICMPv6 debugging
interface IPv6 interface debugging
mld IPv6 Multicast Listener Discovery debugging
nd IPv6 Neighbor Discovery debugging
ospf OSPF information
packet IPv6 packet debugging
routing IPv6 routing table debugging
本節介紹如何解決最常見的IPv6相關問題。
許多IPv6 TAC案例的產生是因為對IPv6的運作方式普遍缺乏瞭解,或者是因為管理員嘗試使用IPv4特定的流程來實施IPv6。
例如,TAC已發現網際網路服務提供商(ISP)為管理員分配了\56塊IPv6地址的情況。 然後,管理員將地址和完整的\56子網分配給ASA外部介面,並選擇一些內部範圍用於內部伺服器。但是,對於IPv6,所有內部主機也應使用可路由IPv6地址,並且IPv6地址塊應根據需要細分為較小的子網。在此方案中,您可以建立許多\64子網,作為已分配的\56塊的一部分。
可以配置ASA以要求修改的EUI-64編碼IPv6地址。根據RFC 4291,EUI允許主機為自己分配唯一的64位IPv6介面識別符號(EUI-64)。 此功能相對於IPv4是一項優勢,因為它消除了使用DHCP進行IPv6地址分配的要求。
如果ASA配置為需要通過ipv6 enforce-eui64 nameif命令進行此增強,則它可能會從本地子網上的其他主機丟棄許多鄰居發現請求和通告。
預設情況下,許多客戶端作業系統(OS)(例如Microsoft Windows 7和8版、Macintosh OS-X以及基於Linux的系統)通過IPv6無狀態地址自動配置(SLAAC)使用自分配的臨時IPv6地址來擴展隱私。
Cisco TAC已遇到一些情況,由於主機從臨時地址而不是靜態分配的地址生成流量,因此這會導致環境中出現意外問題。因此,ACL和基於主機的路由可能導致流量被丟棄或路由不正確,從而導致主機通訊失敗。
有兩種方法可用於解決這種情況。可以在客戶端系統上單獨禁用此行為,也可以在ASA和Cisco IOS®路由器上禁用此行為。在ASA或路由器端,必須修改觸發此行為的路由器通告(RA)消息標誌。
請參閱以下各節,以在各個客戶端系統上禁用此行為。
Microsoft Windows
完成以下步驟,以便在Microsoft Windows系統上禁用此行為:
netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disabled
Macintosh OS-X
在終端機中,輸入以下命令可在下次重新啟動之前禁用主機上的IPv6 SLAAC:
sudo sysctl -w net.inet6.ip6.use_tempaddr=0
若要將組態設定為永久,請輸入以下命令:
sudo sh -c 'echo net.inet6.ip6.use_tempaddr=0 >> /etc/sysctl.conf'
Linux
在終端shell中,輸入以下命令:
sysctl -w net.ipv6.conf.all.use_tempaddr=0
從ASA全域性禁用SLAAC
用於解決此行為的第二種方法是修改從ASA傳送到客戶端的RA消息,這將觸發SLAAC的使用。若要修改RA訊息,請在介面組態模式下輸入以下命令:
ASAv(config)# interface gigabitEthernet 1/1
ASAv(config-if)# ipv6 nd prefix 2001::db8/32 300 300 no-autoconfig
此命令修改ASA傳送的RA消息,以便不設定A位標誌,並且客戶端不生成臨時IPv6地址。
本節介紹一些與IPv6的使用相關的常見問題。
會。您只需在介面上啟用IPv6,並為介面分配IPv4和IPv6地址,它同時處理兩種型別的流量。
您可以在早於版本9.0(1)的ASA版本中執行此操作。 自ASA 9.0(1)版起,ASA上的所有ACL都為unified,這意味著ACL支援相同ACL中混合使用IPv4和IPv6條目。
在ASA 9.0(1)及更高版本中,ACL僅合併在一起,而單個統一ACL通過access-group命令應用到介面。
會。ASA支援IPv6的策略和優先順序隊列,與支援IPv4的方式相同。
自ASA 9.0(1)版起,ASA上的所有ACL都為unified,這意味著ACL支援相同ACL中混合使用IPv4和IPv6條目。因此,在匹配ACL的類對映上實施的任何QoS命令都會對IPv4和IPv6流量執行操作。
雖然可以在ASA上為IPv6配置NAT,但是由於可用的、可全域性路由的IPv6地址數量幾乎是無限的,因此極不建議在IPv6中使用NAT,而且也不必要。
如果IPv6場景中需要NAT,您可以在CLI手冊2的IPv6 NAT指南部分找到有關如何配置NAT的更多資訊:Cisco ASA系列防火牆CLI配置指南9.4。
在IPv6中,ND使用本地鏈路地址來執行L2地址解析。因此,show failover命令輸出中受監控介面的IPv6地址會顯示本地鏈路地址,而不是介面上配置的全域性IPv6地址。這是預期行為。
以下是使用IPv6時的一些已知警告:
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
29-Jun-2015 |
初始版本 |