이 문서에서는 Cisco IOS® 플랫폼에서 사용할 수 있는 debug ip packet 명령을 포함하여 디버그 명령 사용에 대한 일반적인 지침을 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
콘솔, aux 및 vty 포트를 사용하여 라우터에 연결
일반적인 Cisco IOS 컨피그레이션 문제
Cisco IOS 디버그 출력 해석
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 문서에서는 Cisco IOS® 플랫폼에서 debug 명령을 사용하는 일반적인 지침을 제공합니다. 또한 조건부 디버깅의 예 및 개요도 포함되어 있습니다.
debug privileged EXEC 명령은 네트워킹 이벤트, 프로토콜 상태, 패킷 처리 및 일반적인 네트워크 활동에 대한 진단 정보를 제공합니다. 이러한 명령은 문제 해결 중에 특정 문제의 원인을 파악하는 데 도움이 됩니다.
그러나 debug 명령은 대량의 출력 정보를 생성할 수 있으며, 특히 이미 높은 트래픽 또는 높은 CPU 사용률을 처리하고 있는 라우터의 경우 디바이스 성능에 영향을 미칠 수 있습니다. 따라서 트러블슈팅에 필요한 경우에만 debug 명령을 신중하게 실행합니다.
참고: 이 문서에서는 특정 debug 명령 및 해당 출력을 사용하거나 해석하는 방법에 대해 설명하지 않습니다. 개별 debug 명령에 대한 자세한 내용은 해당 Cisco Debug 명령 참조 설명서를 참조하십시오.
debug 명령은 신중하게 실행합니다. 일반적으로 특정 문제를 해결할 때는 기술 지원 담당자의 지시를 통해서만 이 명령을 사용합니다.
디버깅을 활성화하면 특히 네트워크가 과부하 상태일 때 라우터 작업이 중단될 수 있습니다. 로깅이 활성화된 경우 콘솔 포트가 로그 메시지로 오버로드될 때 액세스 서버가 간헐적으로 중지될 수 있습니다.
debug 명령을 실행하기 전에 명령이 생성할 수 있는 출력의 양과 디버깅 세션을 실행할 수 있는 시간을 고려하십시오.
예를 들어, 기본 속도 인터페이스가 하나인 라우터에서 디버그 isdn q931은 시스템에 영향을 미치지 않습니다. 그러나 전체 E1 컨피그레이션으로 AS5800에서 동일한 debug 명령을 실행하면 디바이스가 중단 또는 응답을 중지하기에 충분한 출력을 생성할 수 있습니다.
디버깅하기 전에 show processes cpu 명령을 실행하여 CPU 로드를 확인합니다. 디버깅을 활성화하기 전에 충분한 CPU 용량을 사용할 수 있는지 확인합니다. 이렇게 하면 됩니다.
예를 들어, ATM 인터페이스가 있는 Cisco 7200 라우터에서 브리징을 실행 중인 경우 라우터를 다시 시작하면 구성된 하위 인터페이스의 수에 따라 상당한 CPU 리소스가 소모될 수 있습니다. 각 가상 회로(VC)에 대해 BPDU(Bridge Protocol Data Unit) 패킷을 생성해야 합니다. 이 중요한 기간에 디버깅을 활성화하면 CPU 사용률이 크게 증가하여 디바이스가 중단되거나 네트워크 연결이 끊어질 수 있습니다.
참고: 디버그가 실행 중인 경우, 특히 디버그가 많은 경우 일반적으로 라우터 프롬프트가 표시되지 않습니다. 그러나 대부분의 경우 no debug all 또는 undebug all 명령을 실행하여 디버그를 중지할 수 있습니다.
위에서 언급한 점 외에도, 디버깅이 플랫폼의 안정성에 미치는 영향을 이해해야 합니다. 디버그 명령을 활성화하기 전에 라우터에서 어떤 인터페이스에 연결해야 하는지도 고려해야 합니다.
라우터는 콘솔, aux 및 vty 포트를 비롯한 다양한 인터페이스에 디버그 출력을 표시할 수 있습니다. 라우터는 내부 버퍼에 외부 unix syslog 서버에 메시지를 로깅할 수도 있습니다.
일반 컨피그레이션에서 콘솔에 연결된 경우 추가 작업을 수행할 필요가 없습니다. 디버그 출력이 자동으로 표시되어야 합니다. 그러나 로깅 콘솔 레벨이 원하는 대로 설정되어 있고 no logging console 명령으로 로깅이 비활성화되지 않았는지 확인합니다.
경고: 라우터의 콘솔 포트에 대한 과도한 디버깅으로 인해 라우터가 중단될 수 있습니다. 이는 라우터가 다른 라우터 기능보다 콘솔 출력의 우선 순위를 자동으로 지정하기 때문입니다. 라우터가 콘솔 포트에 대한 대규모 디버그 출력을 처리하는 경우 중단될 수 있습니다. 디버그 출력이 과도한 경우 vty(telnet) 포트 또는 로그 버퍼를 사용하여 디버그를 가져옵니다.
참고: 기본적으로 로깅은 콘솔 포트에서 활성화됩니다. 콘솔 포트는 출력을 캡처하기 위해 다른 포트나 메서드(예: aux, vty 또는 버퍼)를 사용하는 경우에도 항상 디버그 출력을 처리합니다. Cisco에서는 정상 작동 조건에서 no logging console 명령을 실행하고 항상 활성화되며 디버그를 캡처하는 데 다른 방법을 사용할 것을 권장합니다. 콘솔을 사용해야 하는 경우 일시적으로 로깅 콘솔을 다시 켭니다.
보조 포트를 통해 연결된 경우 terminal monitorcommand를 실행합니다. 또한 라우터에서 no logging on 명령이 활성화되지 않았는지 확인합니다.
참고: aux 포트를 사용하여 라우터를 모니터링할 경우 라우터가 재부팅될 때 보조 포트에 부팅 시퀀스 출력이 표시되지 않습니다. 부팅 시퀀스를 보려면 콘솔 포트에 연결합니다.
보조 포트 또는 텔넷을 통해 연결된 경우 terminal monitor 명령을 입력합니다. 또한 no logging on 명령이 사용되고 있지 않은지 확인합니다.
기본 로깅 장치는 콘솔입니다. 달리 명시되지 않는 한 모든 메시지가 콘솔에 표시됩니다.
내부 버퍼에 메시지를 기록하려면 logging buffered 라우터 컨피그레이션 명령을 실행합니다. 다음은 이 명령의 전체 구문입니다.
logging buffered no logging buffered
logging buffered 명령은 로그 메시지를 콘솔에 쓰지 않고 내부 버퍼에 복사합니다. 버퍼는 원래 순환형이므로 새 메시지가 이전 메시지를 덮어씁니다.
버퍼에 로깅된 메시지를 표시하려면 특권 EXEC 명령 show logging을 사용합니다. 표시되는 첫 번째 메시지는 버퍼에서 가장 오래된 메시지입니다. 버퍼의 크기 및 로깅할 메시지의 심각도 수준을 지정할 수 있습니다.
참고: 버퍼 크기를 입력하기 전에 상자에 충분한 메모리를 사용할 수 있는지 확인합니다. 사용 가능한 메모리를 보려면 show proc mem 명령을 사용합니다.
no logging buffered 명령은 버퍼 사용을 취소하고 콘솔(기본값)에 메시지를 씁니다.
syslog 서버 호스트에 메시지를 로깅하려면 logging router configuration 명령을 실행합니다. 이 명령의 전체 구문을 봅니다.
loggingno logging
logging 명령은 로깅 메시지를 수신할 syslog 서버 호스트를 식별합니다. <ip-address> 인수는 호스트의 IP 주소입니다. 이 명령을 두 번 이상 실행하면 로깅 메시지를 수신하는 syslog 서버 목록을 작성합니다.
no logging 명령은 지정된 주소의 syslog 서버를 syslogs 목록에서 삭제합니다.
디버그 출력을 파일에 캡처하도록 터미널 에뮬레이터 소프트웨어를 설정합니다. 소프트웨어 터미널 에뮬레이터 설명서를 참조하십시오.
service timestamps 명령을 실행하는 밀리초(msec) 타임스탬프를 활성화합니다.
router(config)#service timestamps debug datetime msec router(config)#service timestamps log datetime msec
이러한 명령은 MMM DD HH:MM:SS 형식으로 디버깅에 타임스탬프를 추가하며, 이는 시스템 시계에 따라 날짜와 시간을 나타냅니다. 시스템 시계가 설정되지 않은 경우 날짜와 시간 앞에 별표(*)가 표시되어 날짜와 시간이 잘못되었을 수 있습니다.
일반적으로 밀리초의 타임스탬프를 구성하는 것이 좋습니다. 디버그 출력을 검토할 때 이 타임스탬프는 높은 수준의 명확성을 제공합니다. 밀리초 타임스탬프는 서로 관련된 다양한 디버그 이벤트의 타이밍을 더 잘 나타냅니다. 그러나 콘솔 포트에서 많은 메시지를 출력하면 이벤트의 실제 타이밍과 상관관계를 분석할 수 없습니다.
예를 들어 200개의 VC가 있는 상자에서 debug x25all을 활성화하고 출력이 버퍼에 로깅된 경우(no logging console 및 logging buffered 명령 실행) 디버그 출력에 표시되는 타임스탬프는 패킷이 인터페이스를 통과하는 정확한 시간이 될 수 없습니다. 따라서 msec 타임스탬프를 사용하여 성능 문제를 증명하지 말고 이벤트가 발생하는 시기에 대한 상대 정보를 얻으십시오.
디버그를 중지하려면 no debug all 또는 undebug all 명령을 사용합니다. show debug 명령을 사용하여 디버그가 꺼져 있는지 확인합니다.
no logging console 및 terminal no monitor 명령을 각각 aux 또는 vty로 출력을 차단합니다. 디버깅을 중지하지 않으며 라우터 리소스를 모두 사용합니다.
기존 Cisco IOS® 라우터에서 디버그 ip 패킷에는 주로 프로세스 전환 트래픽이 표시됩니다. Fast Switching 또는 CEF를 통해 전달된 트래픽은 포워딩이 프로세스 스위칭 경로로 강제되지 않는 한 표시되지 않습니다. 그러나 모든 패킷에 대해 출력을 생성하므로 출력이 광범위할 수 있으며 라우터가 정지할 수 있습니다. 따라서 이 섹션에 설명된 대로 디버그 ip 패킷만 가장 엄격한 제어에서 실행합니다.
디버그 ip 패킷의 출력을 제한하는 가장 좋은 방법은 디버깅에 연결된 액세스 목록을 만드는 것입니다. 액세스 목록 기준과 일치하는 패킷만 디버그 ip 패킷의 대상이 될 수 있습니다. 이 액세스 목록은 인터페이스에 적용할 필요가 없으며 디버그 작업에 적용됩니다.
디버깅 ip 패킷을 실행하기 전에 라우터가 기본적으로 고속 스위칭을 사용하고 있거나, 고속 스위칭을 사용하도록 구성된 경우 CEF 스위칭을 사용할 수 있습니다. 즉, 이러한 기술이 적용되면 패킷이 프로세서에 제공되지 않으며 디버깅에 아무 것도 표시되지 않습니다. 이 기능이 작동하려면 ip route-cache가 없는 라우터에서 빠른 전환을 비활성화해야 합니다(유니캐스트 패킷의 경우) 또는 ip mroute-cache가 없는 라우터에서는 멀티캐스트 패킷의 경우). 이는 트래픽이 흐르도록 해야 하는 인터페이스에 적용되어야 합니다. show ip route 명령을 사용하여 이를 확인합니다.
참고: 최신 플랫폼에서는 일반적으로 CEF 또는 하드웨어 기반 스위칭을 통해 포워딩이 처리되므로 더 이상 고속 스위칭을 비활성화할 필요가 없으며 권장되지 않습니다. 따라서 디버그 ip 패킷이 전송 트래픽을 안정적으로 표시하지 못할 수 있으며, 최신 트러블슈팅에서는 대개 플랫폼별 캡처 또는 하드웨어 툴을 대신 사용합니다.
조건부로 트리거된 디버깅 기능이 활성화된 경우, 라우터는 지정된 인터페이스에서 라우터로 들어오거나 나가는 패킷에 대한 디버깅 메시지를 생성합니다. 라우터는 다른 인터페이스를 통해 들어오거나 나가는 패킷에 대한 디버깅 출력을 생성하지 않습니다.
조건부 디버그의 간단한 구현을 살펴보십시오. 이 시나리오를 고려해 보십시오. 다음(trabol)에 표시된 라우터에는 HDLC 캡슐화를 실행하는 두 개의 인터페이스(serial 0 및 serial 3)가 있습니다.
모든 인터페이스에서 수신한 HDLC keepalive를 관찰하려면 normadebug serial interface 명령을 실행할 수 있습니다. 두 인터페이스에서 keepalive를 관찰할 수 있습니다.
traxbol#debug serial interface Serial network interface debugging is on traxbol# *Mar 8 09:42:34.851: Serial0: HDLC myseq 28, mineseen 28*, yourseen 41, line up ! -- HDLC keeplaive on interface Serial 0 *Mar 8 09:42:34.855: Serial3: HDLC myseq 26, mineseen 26*, yourseen 27, line up ! -- HDLC keeplaive on interface Serial 3 *Mar 8 09:42:44.851: Serial0: HDLC myseq 29, mineseen 29*, yourseen 42, line up *Mar 8 09:42:44.855: Serial3: HDLC myseq 27, mineseen 27*, yourseen 28, line up
인터페이스 일련 3에 대한 조건부 디버그를 활성화합니다. 즉, 인터페이스 일련 3에 대한 디버깅만 표시됩니다. debug interface <interface_type interface_number > 명령을 실행합니다.
traxbol#debug interface serial 3 Condition 1 set
show debug condition 명령을 실행하여 조건부 디버그가 활성 상태인지 확인합니다(인터페이스 serial 3의 조건은 활성).
traxbol#show debug condition Condition 1: interface Se3 (1 flags triggered) Flags: Se3 traxbol#
이제 인터페이스 일련 번호 3에 대한 디버깅만 표시됩니다.
*Mar 8 09:43:04.855: Serial3: HDLC myseq 29, mineseen 29*, yourseen 30, line up *Mar 8 09:43:14.855: Serial3: HDLC myseq 30, mineseen 30*, yourseen 31, line up
undebug interface <interface_type interface_number> 명령을 실행하여 조건부 디버그를 제거합니다. 조건부 트리거를 제거하기 전에 디버그를 끄는 것이 좋습니다(예: 모두 디버그 해제 사용). 이는 조건이 제거될 때 디버그 출력이 폭주하는 것을 방지하기 위한 것이다.
traxbol#undebug interface serial 3 This condition is the last interface condition set. Removing all conditions can cause a flood of debugging messages to result, unless specific debugging flags are first removed. Proceed with removal? [yes/no]: y Condition 1 has been removed traxbol
직렬 3 디스플레이와 직렬 0 인터페이스 모두에 대한 디버그를 관찰할 수 있습니다.
*Mar 8 09:43:34.927: Serial3: HDLC myseq 32, mineseen 32*, yourseen 33, line up *Mar 8 09:43:44.923: Serial0: HDLC myseq 35, mineseen 35*, yourseen 48, line up
경고: 일부 디버깅 작업은 그 자체로 조건부입니다. 예를 들어 atm 디버깅과 ATM 디버깅의 경우 모든 atm 인터페이스에서 디버그를 활성화하고 조건을 지정하기보다는 디버그를 활성화해야 할 인터페이스를 명시적으로 지정해야 합니다.
이 섹션에서는 ATM 패킷 디버깅을 하나의 하위 인터페이스로 제한하는 올바른 방법을 보여줍니다.
arielle-nrp2#debug atm packet interface atm 0/0/0.1 !--- Note that you explicitly specify the sub-interface to be used for debugging ATM packets debugging is on Displaying packets on interface ATM0/0/0.1 only arielle-nrp2# *Dec 21 10:16:51.891: ATM0/0/0.1(O): VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:0007 Length:0x278 *Dec 21 10:16:51.891: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500 025C 01FE 0000 FF11 61C8 0A30 *Dec 21 10:16:51.891: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600 0015 23B7 0000 8000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.891: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.895: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:16:51.895: arielle-nrp2#
모든 인터페이스에서 atm 디버깅을 활성화하려고 하면(조건이 적용됨) ATM 하위 인터페이스의 수가 많을 경우 라우터가 정지될 수 있습니다. atm 디버깅에 대한 잘못된 메서드의 예가 표시됩니다.
이 경우 조건이 적용되지만 효과가 없음을 알 수 있습니다. 다른 인터페이스의 패킷은 계속 볼 수 있습니다.
이 Lab 시나리오에서는 2개의 인터페이스만 있고 트래픽은 매우 적습니다. 인터페이스 수가 많을 경우 모든 인터페이스의 디버그 출력도 매우 높으므로 라우터가 정지될 수 있습니다.
arielle-nrp2#show debugging condition Condition 1: interface AT0/0/0.1 (1 flags triggered) Flags: AT0/0/0.1 ! -- A condition for a specific interface. arielle-nrp2#debug atm packet ATM packets debugging is on Displaying all ATM packets arielle-nrp2# *Dec 21 10:22:06.727: ATM0/0/0.2(O): ! -- You see debugs from interface ATM0/0/0/.2, even though the condition ! -- specified ONLY AT0/0/0.1 VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:06.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:06.727: 0002 000F 0000 *Dec 21 10:22:06.727: un a *Dec 21 10:22:08.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:08.727: 0000 0000 0180 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:08.727: 0002 000F 0000 *Dec 21 10:22:08.727: ll *Dec 21 10:22:10.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:10.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:10.727: 0002 000F 0000 *Dec 21 10:22:10.727: *Dec 21 10:22:12.727: ATM0/0/0.2(O): VCD:0x2 VPI:0x5 VCI:0x37 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:000E Length:0x2F *Dec 21 10:22:12.727: 0000 0000 0080 0000 107B B9BD C400 0000 0080 0000 107B B9BD C480 0800 0014 *Dec 21 10:22:12.727: 0002 000F 0000 *Dec 21 10:22:12.727: *Dec 21 10:22:13.931: ATM0/0/0.1(O): !--- You also see debugs for interface ATM0/0/0.1 as you wanted. VCD:0x1 VPI:0x1 VCI:0x21 DM:0x100 SAP:AAAA CTL:03 OUI:0080C2 TYPE:0007 Length:0x278 *Dec 21 10:22:13.931: 0000 FFFF FFFF FFFF 0010 7BB9 BDC4 0800 4500 025C 027F 0000 FF11 6147 0A30 *Dec 21 10:22:13.931: 4B9B FFFF FFFF 0044 0043 0248 0000 0101 0600 001A 4481 0000 8000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0010 7BB9 BDC3 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.931: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 *Dec 21 10:22:13.935: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
5.0 |
22-Jun-2026
|
업데이트된 소개 간격, 기사 내 기타 간격, 문법, 맞춤법, 들여쓰기 |
4.0 |
19-Aug-2024
|
재인증 |
2.0 |
29-Apr-2022
|
끊어진 링크를 업데이트하고 제거했습니다. |
1.0 |
02-Dec-2013
|
최초 릴리스 |