본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 ASA 버전 7.0(1) 이상에서 IPv6(Internet Protocol Version 6) 트래픽을 전달하도록 Cisco ASA(Adaptive Security Appliance)를 구성하는 방법에 대해 설명합니다.
이 문서에 대한 특정 요건이 없습니다.
이 문서의 정보는 Cisco ASA 버전 7.0(1) 이상을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
현재 IPv6는 시장 침투 측면에서 아직 상대적으로 새로운 개념입니다. 그러나 IPv6 컨피그레이션 지원 및 트러블슈팅 요청이 꾸준히 증가했습니다. 이 문서의 목적은 이러한 요구 사항을 해결하고 다음을 제공하는 것입니다.
참고: IPv6가 아직 전 세계적으로 IPv4 교체 초기 단계에 있는 것을 감안할 때, 이 문서는 정확성과 관련성을 유지하기 위해 정기적으로 업데이트되어야 합니다.
다음은 IPv6 기능에 대한 몇 가지 중요한 정보입니다.
IPv6 프로토콜은 1990년대 중후반에 개발되었으며, 이는 퍼블릭 IPv4 주소 공간이 빠르게 고갈되어 갔기 때문입니다. NAT(Network Address Translation)가 IPv4에 큰 도움이 되어 이 문제가 지연되었지만 결국 대체 프로토콜이 필요하다는 것은 부인할 수 없는 사실입니다. IPv6 프로토콜은 1998년 12월에 RFC 2460에 공식적으로 자세히 설명되었습니다. 프로토콜에 대한 자세한 내용은 IETF(Internet Engineering Task Force) 웹 사이트에 있는 공식 RFC 2460 문서에서 확인할 수 있습니다.
이 섹션에서는 이전 IPv4 프로토콜과 비교하여 IPv6 프로토콜에 포함된 개선 사항에 대해 설명합니다.
IPv6 프로토콜은 더 많은 레벨의 주소 지정 계층, 훨씬 더 많은 수의 주소 지정 가능 노드, 더 간단한 주소 자동 구성을 지원하기 위해 IP 주소 크기를 32비트에서 128비트로 늘립니다. 멀티캐스트 주소에 범위 필드를 추가하여 멀티캐스트 라우팅의 확장성이 향상됩니다. 또한 애니캐스트 주소라고 하는 새로운 유형의 주소가 정의됩니다. 이는 그룹에 있는 임의의 노드로 패킷을 전송하기 위해 사용됩니다.
패킷 처리의 일반적인 처리 비용을 줄이고 IPv6 헤더의 대역폭 비용을 제한하기 위해 일부 IPv4 헤더 필드가 삭제되었거나 선택 사항으로 설정되었습니다.
IP 헤더 옵션을 부호화하는 방식의 변경으로 보다 효율적인 포워딩이 가능하고, 옵션 길이의 제한이 줄어들며, 향후 새로운 옵션 도입에 대한 유연성이 더욱 향상됩니다.
발신자가 기본이 아닌 QoS(Quality of Service) 또는 실시간 서비스 등의 특별한 처리를 요청하는 특정 트래픽 흐름에 속하는 패킷의 레이블을 지정할 수 있도록 새로운 기능이 추가됩니다.
인증, 데이터 무결성 및 (선택 사항) 데이터 기밀성을 지원하기 위해 사용되는 확장은 IPv6에 대해 지정됩니다.
이 섹션에서는 IPv6를 사용하도록 Cisco ASA를 구성하는 방법에 대해 설명합니다.
참고: 이 섹션에 사용된 명령에 대한 자세한 내용을 가져오려면 명령 조회 툴(등록 고객 전용)을 사용하십시오.
이 문서 전체에서 사용되는 예제의 IPv6 토폴로지입니다.

ASA를 통해 IPv6 트래픽을 전달하려면 먼저 최소 2개의 인터페이스에서 IPv6를 활성화해야 합니다. 다음 예에서는 Gi0/0의 내부 인터페이스에서 Gi0/1의 외부 인터페이스로 트래픽을 전달하기 위해 IPv6을 활성화하는 방법을 설명합니다.
ASAv(config)# interface GigabitEthernet0/0
ASAv(config-if)# ipv6 enable
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 enable
이제 두 인터페이스에서 IPv6 주소를 구성할 수 있습니다.
참고: 이 예에서는 fc00::/7의 ULA(Unique Local Addresses) 공간에 있는 주소가 사용되므로 모든 주소가 FD(예: fdxx:xxxx:xxxx...)로 시작합니다..). 또한 IPv6 주소를 쓸 때 이중 콜론(::)을 사용하여 FD01::1/64가 FD01:0000:0000:0000:0000:0000:00000:0000:000001과 같도록 0의 행을 나타낼 수 있습니다.
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
이제 주소 fd02::1에서 외부 VLAN의 업스트림 라우터에 기본 레이어 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, outside ASAv(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)#
참고: IPv6에 대한 라우팅을 처리하기 위해 동적 라우팅 프로토콜이 필요한 경우 이를 구성할 수도 있습니다. 이 내용은 다음 섹션에서 설명합니다.
먼저, 업스트림 Cisco 881 Series ISR(Integrated Services Router)에서 OSPFv3(Open Shortest Path First Version 3) 컨피그레이션을 검토해야 합니다.
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#
외부 인터페이스의 ISR에서 OSPF Hello 패킷이 표시되는지 확인하려면 ASA 패킷 캡처를 사용할 수 있습니다.
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) 패킷이 ISR의 올바른 인터페이스에 해당하는 IPv6 링크-로컬 주소에서 도착하는 것을 볼 수 있습니다.
C881#show ipv6 interface brief
......
Vlan302 [up/up]
FE80::C671:FEFF:FE93:B516
FD02::1
C881#
이제 ISR과의 인접성을 설정하기 위해 ASA에 OSPFv3 프로세스를 생성할 수 있습니다.
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
ASA 외부 인터페이스에 OSPF 컨피그레이션을 적용합니다.
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
기본적으로 ID에 대해 가장 높게 구성된 IPv4 주소를 사용하므로 ISR에서 인접 디바이스 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의 가장 중요한 차이점 중 하나는 ARP(Address Resolution Protocol)가 더 이상 IPv6에 없다는 것입니다. 로컬 LAN 세그먼트에서 IP 주소를 확인하기 위해 ARP를 사용하는 대신 IPv6는 ND(Neighbor Discovery)라는 프로토콜을 사용합니다.
또한 ND는 MAC(Media Access Control) 주소 확인을 위해 ICMPv6(Internet Control Message Protocol Version 6)를 활용합니다. IPv6 ND에 대한 자세한 내용은 CLI Book 1의 IPv6 Neighbor Discovery(IPv6 인접 디바이스 검색) 섹션의 ASA IPv6 Configuration(ASA IPv6 컨피그레이션) 가이드를 참조하십시오. Cisco ASA Series General Operations CLI Configuration Guide, 9.4 또는 RFC 4861.
현재 대부분의 IPv6 관련 트러블슈팅에는 ND, 라우팅 또는 서브넷 컨피그레이션 문제가 포함됩니다. 이는 IPv4와 IPv6 간의 주요 차이점이기도 하기 때문일 수 있습니다. ND는 ARP와 다르게 작동하고 내부 네트워크 주소 지정도 상당히 다르며, IPv6에서는 NAT를 사용하지 않을 가능성이 높기 때문에 프라이빗 주소 지정은 더 이상 IPv4에서와 같은 방식으로 활용되지 않습니다(RFC 1918 이후). 이러한 차이점을 파악하고 L2/L3 문제를 해결하면, TCP/UDP 및 상위 레이어 프로토콜이 기본적으로 동일하게 작동하기 때문에(사용되는 IP 버전에 상관없이) 레이어 4(L4) 이상에서 트러블슈팅 프로세스는 IPv4에 사용되는 프로세스와 기본적으로 동일합니다.
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)#
이 출력에서는 MAC 주소가 c471.fe93.b516인 디바이스에 속하는 fd02::1의 IPv6 주소에 대한 성공적인 해상도를 볼 수 있습니다.
참고: 라우터에는 이 인터페이스에 대해 자체 할당된 링크-로컬 주소도 있기 때문에 이전 출력에서 동일한 라우터 인터페이스 MAC 주소가 두 번 나타나는 것을 알 수 있습니다. 링크-로컬 주소는 직접 연결된 네트워크에서의 통신에만 사용할 수 있는 장치별 주소입니다. 라우터는 링크-로컬 주소를 통해 패킷을 전달하지 않으며, 직접 연결된 네트워크 세그먼트에서의 통신용으로만 패킷을 전달합니다. OSPFv3와 같은 많은 IPv6 라우팅 프로토콜에서는 링크-로컬 주소를 사용하여 L2 세그먼트에서 라우팅 프로토콜 정보를 공유합니다.
ND 캐시를 지우려면 clear ipv6 neighbors 명령을 입력합니다. 특정 호스트에 대해 ND가 실패하면 debug ipv6 nd 명령을 입력하고 패킷 캡처를 수행하고 syslogs를 확인하여 L2 레벨에서 무엇이 발생하는지 확인할 수 있습니다. IPv6 ND는 IPv6 주소에 대한 MAC 주소를 확인하기 위해 ICMPv6 메시지를 사용합니다.
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의 네이버 광고가 수신되지 않는 것으로 나타납니다. 패킷 캡처를 확인하여 실제로 그런 것인지 확인할 수 있습니다.
참고: ASA Release 9.4(1)부터 IPv6 패킷 캡처에는 여전히 액세스 목록이 필요합니다. Cisco 버그 ID CSCtn09836으로 이를 추적하기 위해 개선 요청이 접수되었습니다.
ACL(Access Control List) 및 패킷 캡처를 구성합니다.
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에서 네이버 광고가 수신됩니다. 그러나 디버그 출력에 표시된 것처럼 어떤 이유로든 광고가 처리되지 않습니다. 추가 검토를 위해 syslog를 볼 수 있습니다.
다음은 몇 가지 ND syslog 예입니다.
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
이러한 syslog 내에서 fd02::1의 ISR에서 ND 네이버 광고 패킷이 EUI(Modified Extended Unique Identifier) 64(Modified EUI-64) 형식 확인 실패로 인해 삭제되는 것을 볼 수 있습니다.
팁: 이 특정 문제에 대한 자세한 내용은 이 문서의 Modified EUI-64 Address Encoding 섹션을 참조하십시오. 이 트러블슈팅 논리는 모든 종류의 삭제 이유에도 적용할 수 있습니다. 예를 들어 ACL이 특정 인터페이스에서 ICMPv6를 허용하지 않는 경우 또는 uRPF(Unicast Reverse Path Forwarding) 검사 오류가 발생하는 경우 모두 IPv6에 L2 연결 문제를 일으킬 수 있습니다.
IPv6를 사용할 때의 라우팅 프로토콜 트러블슈팅 절차는 IPv4를 사용할 때와 기본적으로 동일합니다. 패킷 캡처와 debug 및 show 명령을 함께 사용하면 라우팅 프로토콜이 예상대로 작동하지 않는 이유를 확인하는 데 유용합니다.
이 절에서는 IPv6에 유용한 debug 명령을 제공합니다.
전역 IPv6 라우팅 디버그
모든 IPv6 라우팅 테이블 변경 사항을 트러블슈팅하려면 debug ipv6 routing debug를 사용할 수 있습니다.
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(Enhanced Interior Gateway Routing Protocol)
ASA의 EIGRP는 IPv6 사용을 지원하지 않습니다. CLI Book 1의 EIGRP 지침 섹션을 참조하십시오. Cisco ASA Series General Operations CLI 컨피그레이션 가이드, 9.4를 참조하십시오.
BGP(Border Gateway Protocol)
이 debug 명령은 IPv6 사용 시 BGP 문제를 해결하기 위해 사용할 수 있습니다.
ASAv# debug ip bgp ipv6 unicast ?
X:X:X:X::X IPv6 BGP neighbor address
keepalives BGP keepalives
updates BGP updates
<cr>
IPv6 문제를 트러블슈팅하기 위해 다음 show 명령을 사용할 수 있습니다.
ASA에서 IPv4와 동일한 방식으로 IPv6에 내장된 패킷 추적기 기능을 사용할 수 있습니다. 다음은 OSPF를 통해 881 인터페이스에서 학습된 기본 경로를 사용하여 인터넷에 위치한 5555::1의 웹 서버에 연결을 시도하는 fd03::2의 내부 호스트를 시뮬레이션하기 위해 패킷 추적기 기능을 사용하는 예입니다.
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 기능에 대한 일반적인 지식이 부족하거나 관리자가 IPv4 관련 프로세스를 사용하여 IPv6를 구현하려고 시도했기 때문에 많은 IPv6 TAC 케이스가 생성됩니다.
예를 들어 TAC에서는 ISP(Internet Service Provider)에 의해 관리자에게 IPv6 주소 블록 \56을 할당한 경우를 보았습니다. 그러면 관리자가 ASA 외부 인터페이스에 주소와 전체 \56 서브넷을 할당하고 내부 서버에 사용할 내부 범위를 선택합니다. 그러나 IPv6에서는 모든 내부 호스트가 라우팅 가능한 IPv6 주소도 사용해야 하며, 필요에 따라 IPv6 주소 블록을 더 작은 서브넷으로 분류해야 합니다. 이 시나리오에서는 할당된 \56 블록의 일부로 \64 서브넷을 많이 생성할 수 있습니다.
팁: 자세한 내용은 RFC 4291을 참조하십시오.
수정된 EUI-64 인코딩 IPv6 주소가 필요하도록 ASA를 구성할 수 있습니다. RFC 4291에 따라 EUI를 사용하면 호스트가 고유한 64비트 IPv6 인터페이스 식별자(EUI-64)를 자신에게 할당할 수 있습니다. 이 기능은 IPv6 주소 할당을 위해 DHCP를 활용해야 하는 요구 사항을 제거하므로 IPv4보다 유리합니다.
ipv6 enforce-eui64 nameif 명령을 통해 이러한 개선 사항을 요구하도록 ASA가 구성된 경우, 로컬 서브넷에 있는 다른 호스트에서 여러 네이버 검색 요청 및 광고를 삭제할 수 있습니다.
팁: 자세한 내용은 IPv6 EUI-64 비트 주소 Cisco 지원 커뮤니티 이해 문서를 참조하십시오.
기본적으로 Microsoft Windows 버전 7 및 8, Macintosh OS-X 및 Linux 기반 시스템과 같은 많은 클라이언트 OS(Operating System)는 IPv6 SLAAC(Stateless Address Autoconfiguration)를 통해 개인 정보 보호를 위해 자체 할당된 임시 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
sudo sysctl -w net.inet6.ip6.use_tempaddr=0
sudo sh -c 'echo net.inet6.ip6.use_tempaddr=0 >> /etc/sysctl.conf'
sysctl -w net.ipv6.conf.all.use_tempaddr=0
ASAv(config)# interface gigabitEthernet 1/1
ASAv(config-if)# ipv6 nd prefix 2001::db8/32 300 300 no-autoconfig
팁: 자세한 내용은 RFC 4941을 참조하십시오.
이 섹션에서는 IPv6 사용과 관련된 몇 가지 FAQ에 대해 설명합니다.
예. 인터페이스에서 IPv6를 활성화하고 IPv4 및 IPv6 주소를 모두 인터페이스에 할당해야 하며, 두 가지 유형의 트래픽을 동시에 처리합니다.
버전 9.0(1) 이전의 ASA 버전에서 이 작업을 수행할 수 있습니다. ASA Version 9.0(1)부터 ASA의 모든 ACL은 통합됩니다. 즉, ACL은 동일한 ACL에서 IPv4 항목과 IPv6 항목의 혼합을 지원합니다.
ASA 버전 9.0(1) 이상에서는 ACL이 함께 병합되며 access-group 명령을 통해 단일 통합 ACL이 인터페이스에 적용됩니다.
예. ASA는 IPv4와 동일한 방식으로 IPv6에 대한 폴리싱 및 우선순위 큐잉을 지원합니다.
ASA Version 9.0(1)부터 ASA의 모든 ACL은 통합됩니다. 즉, ACL은 동일한 ACL에서 IPv4 항목과 IPv6 항목의 혼합을 지원합니다. 그 결과, ACL과 일치하는 클래스 맵에서 실행되는 모든 QoS 명령은 IPv4 및 IPv6 트래픽에 대해 조치를 취합니다.
ASA에서 IPv6에 대해 NAT를 구성할 수 있지만, 사용 가능한 전역 라우팅 가능한 IPv6 주소의 수가 거의 무한대에 가깝기 때문에 IPv6에서 NAT를 사용하는 것은 권장되지 않으며 불필요합니다.
IPv6 시나리오에서 NAT가 필요한 경우 CLI Book 2의 IPv6 NAT Guidelines 섹션에서 NAT를 구성하는 방법에 대한 자세한 정보를 확인할 수 있습니다. Cisco ASA Series 방화벽 CLI 컨피그레이션 가이드, 9.4.
참고: NAT with IPv6를 구현할 때 고려할 수 있는 몇 가지 지침과 제한이 있습니다.
이는 소프트웨어 버전에 따라 다릅니다.
CSCup89922 수정 기능이 없는 모든 버전에서 ASA의 인터페이스에 IPv6 주소가 구성되어 있고 작동 중인 경우 ASA는 DNS 서버를 쿼리할 때 IPv6 주소를 요청합니다. IPv6 주소가 반환되지 않거나 ASA의 라우팅 테이블에 따라 주소에 연결할 수 없는 경우 IPv4 주소가 요청됩니다(CSCuu02761에서 연결 가능성 확인이 추가됨).
새 버전에서는 쿼리 유형을 FQDN별로 명시적으로 구성할 수 있습니다. 예를 들면 다음과 같습니다.
object network <fqdn> fqdn v4 <fqdn>
<fqdn>은 정규화된 도메인 이름입니다. 이 값은 객체 이름뿐 아니라 fqdn 자체에서도 정확히 일치해야 합니다. fqdn 주소 유형에 대해 'v6'이 지정되었거나 해당 객체가 없는 경우 원래 동작이 유지됩니다. 'v4'를 지정하면 ASA는 DNS 서버에서 IPv4 주소를 요청하고 IPv6 주소가 DNS 캐시에 이미 있는 경우에도 IPv4 주소만 사용합니다(예: ASA에서 DNS 요청을 수행하고 DNS 서버에서 반환된 캐시된 IPv6 주소와 같은 네트워크 개체가 없는 경우).
고객 ASA에서 IPv6를 통해 "updates.ironport.com", "update-manifests.ironport.com" 및 "tools.cisco.com" 사이트에 연결할 수 없기 때문에 이는 ASA에서 봇넷 트래픽 필터링 또는 Smart CallHome을 사용하는 사용자에게 중요한 개선 사항입니다. 컨피그레이션 예시:
object network update-manifests.ironport.com
fqdn v4 update-manifests.ironport.com
object network updates.ironport.com
fqdn v4 updates.ironport.com
IPv6에서 ND는 L2 주소 확인을 수행하기 위해 링크-로컬 주소를 사용합니다. 따라서 show failover 명령 출력에서 모니터링된 인터페이스의 IPv6 주소는 인터페이스에 구성된 전역 IPv6 주소가 아니라 링크-로컬 주소를 표시합니다. 이는 정상적인 동작입니다.
다음은 IPv6 사용과 관련된 몇 가지 주의 사항입니다.
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
1.0 |
29-Jun-2015
|
최초 릴리스 |
피드백