저자: 『Cisco IOS in a Nutshell』의 저자 제임스 보니
오라일리가 시스코 라우터에 대한 힌트와 팁을 담은 책을 써달라는 요청을 해왔을 때 필자는 시스코 IOS 디바이스의 다양한 특징들을 모두 다루는 리스트를 만드는 작업이 결코 쉽지는 않을 것이라는 예상은 이미 했었다.
이미 『Cisco IOS in a Nutshell』에서 그 전체 리스트를 볼 수 있지만 필자의 직접 경험으로 체득한 것과 다른 사람들이 질문했던 상황 중에서 몇 가지를 골라내어 10개의 팁으로 더 압축해 보았다. 여기에서 필자는 간단한 것에서부터 상당한 수준을 요구하는 것에 이르기까지 아주 다양한 팁들을 제시해 보았다. 초보자냐 숙련가냐에 상관없이 두 그룹 모두 여기 제시된 팁을 잘 활용하기를 바란다.
- 곧바로 실행되는 명령어
숙련된 시스코 라우터 사용자라면 아마도 그냥 한숨만 쉬고 있는 여러분의 모습이 상상이 간다. 어쨌든 간에 필자는 이 개념이 초보 사용자에게는 해당하지 않는 다는 사실을 발견했다.
설정 모드로 명령어를 써넣으면 명령어는 즉시 실행된다. 예를 들어 라우터의 이름을 바꾼다고 해보자. 아래 예제에서처럼 바로 옆 라인에 새로운 라우터 이름이 생긴 것을 볼 수 있다.
Router1#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#hostname MyRouter
MyRouter(config)#^Z
MyRouter#
보다시피 라우터의 이름이 즉각적으로 처리되어 MyRouter로 바뀌었다. 이 개념은 라우터 설정 모드에서는 언제든지 적용할 수 있다.
- 가능한 한 모든 설명들을 참고할 것
라우터 설정에는 설정의 다양한 부분을 문서화 할 수 있는 어떤 명령어들이 있다. 예를 들면 인터페이스 description 명령, 접근-리스트 remark 명령, 배너 메시지 등이 있다. 이와 같은 명령어들은 모두 라우터 설정 내에 이미 존재하고 있기 때문에 여러분이 라우터를 설정하거나 문제 해결을 할 때 큰 도움을 줄 수 있다. 인터페이스에 대한 설명을 한 예제가 아래에 있다.
! Here is an interface description.
! Document as much about the interface as possible
interface Serial0
description Connection To Irvine: Wan ID [23499]
이용할 수 있는 베너 메시지로는 오늘의 메시지(MOTD), 로그인, 곧 출시 등등이 있다. 각각의 설명은 문서화된 자료를 참고하거나 『Cisco IOS in a Nutshell』을 참고하기 바란다. 아래에 있는 예제는 MOTD 배너로서 디바이스에 접속하여 처음으로 보게 될 메시지이다.
MyRouter(config)#banner motd #
Enter TEXT message. End with the character "#".
Welcome to MyRouter.
Some legalese should go here about unauthorized access.
#
접근-리스트에 있는 remark 선언은 상대적으로 새로운 특징이다. 이것은 IOS 버전 12.0(2)T에 처음으로 선보인 특징이다. 이 간편한 명령은 여러분이 성취하고자 하는 것을 묘사하는 접근-리스트에 있는 엔트리를 만들 수 있도록 해준다. 명령은 100자 정도의 길이까지도 적을 수 있다. REMARK 선언은 숫자로 된 이름이 붙여진 접근-리스트에서 작동된다.
access-list 1 remark Permit our private network through the list
access-list 1 permit 10.1.1.0 0.0.0.255
access-list 1 remark Just deny everything else
access-list 1 deny any
왜 "!" 표시로 설정에 주석을 달았는지 궁금할 것이다.
필자가 위의 예제에서 했던 것처럼 설정에 주석을 달려면 "!"로 시작해야 한다. 그렇지만 이러한 주석은 라우터 설정에는 남지 않는다. 이러한 것은 텍스트 에디터에서 설정 오프라인으로 작업할 때 편리하다(라우터로 설정을 업로드할 지점).
그러나 이러한 "!" 주석은 라우터로 설정을 보낼 때 사라진다. 왜냐하면 라우터는 "!" 주석들을 무시하기 때문이다.
- 혼돈 상태에서 구제해줄 reload 명령어
업그레이드 계획을 얼마나 잘 세웠느냐에 상관없이 결국 여러분은 라우터 설정을 원격으로 바꾸어야만 할 것이다. 만약 실수로 여러분이 만든 변경사항 때문에 더 이상 라우터를 유지할 수 없다면 누군가에게 "전원을 넣어달라"는 아주 난처한 전화를 해야 하는 상황에 처할 수도 있다. 전원 사이클에 여러분이 변경한 사항이 저장이 되지 않았기 때문에 라우터는 원래의 시작 설정으로 될 것이다. 다시 말해, 접속이 되지 않았기 때문에 변화 사항을 저장하기 위해 "복사 실행 시작"을 써넣을 수 없다는 말이다.
가장 전형적인 실수 중 하나(필자도 많이 저질러 봐서 알고있음)는 디바이스에 원격으로 접속할 때 인터페이스 상에서 접근-리스트를 정확히 업데이트 해주지 않는다는 것이다. 이와 같은 경우 추후 접속을 허용할 리스트 엔트리 상실로 인해 라우터로 연결되는 텔넷 접속이 갑자기 끊어지게 된다.
그렇지만 방법은 있다. 약간의 속임수라도 시도해볼 생각이라면 아래에 제시된 reload 명령어를 사용해 보자. 참고로 이 명령어는 라우터가 특정 시간이 되면 리부팅을 하도록 지시한다. 아래 예는 라우터가 3분 안에 리부팅을 하라고 명령하고 있다.
MyRouter#reload in 3
Reload scheduled in 3 minutes
Proceed with reload? [confirm]y
일단은 우리가 해야만 할 일을 할 수 있는 3분의 여유는 가지게 된 셈이다. 접근-리스트를 serial0에 적용하고 있다고 말해보자.
MyRouter#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
MyRouter(config)#interface serial0
MyRouter(config-if)#ip access-group 110 in
MyRouter(config-if)#^Z
MyRouter#
약간의 변화를 주었지만 모든 것은 여전히 잘 작동되고 있다(확실히 모든 것이 잘 작동되고 있다고 말할 수는 없지만 최소한 접속이 끊어지는 사태는 막지 않았는가?). 이제 우리가 해야 할 작업은 아래의 명령어로 곧 시작될 리로딩을 취소하는 것이다.
MyRouter#reload cancel
그렇지않고 접근-리스트 업데이트가 정말로 라우터의 접속을 끊어버릴 경우 우리가 해야 할 작업은 라우터가 온라인 상태로 되돌아오기 전에 3분(추가로 라우터의 리로딩 시간도 더해야 함) 정도 기다리는 것이다. 리로딩이 끝나면 라우터는 접근-리스트가 변경되기 전에 저장된 원래 설정을 사용할 것이다.
- enable 패스워드나 enable secret 패스워드를 꼭 첨부해 줄 것
원격으로 라우터에 텔넷으로 접속할 생각이라면 enable 패스워드나 enable secret 패스워드를 추가해야 할 필요가 있다. 그렇지 않으면 라우터는 여러분이 허가 모드에 접속하는 것을 허용하지 않을 것이다. 물론 enable 패스워드를 추가하는 것이 항상 좋은 것이라고 말하는 것은 아니다.
! Enable service password-encryption if it isn"t already.
service password-encryption
! Here is our enable password, which is ok
! but not too secure.
enable password 7 141B171F01012325
! Here is our enable secret, much better.
enable secret 5 $1$99Jc$dxVXUkwMM3Edvj7f0SUrL/
"enable secret 패스워드"가 "enable 패스워드"를 오버라이드 한다는 사실을 잊지 말자. 안전하게 enable secret 명령어를 사용해라. enable secret 명령어는 패스워드를 인코드하는데 있어 더 향상된 암호화 방법을 사용한다.
- 텔넷에 접속하려는 라우터를 정지시킬 것
이 문제도 종종 우리를 귀찮게 한다. 명령어를 잘못 써넣어도 라우터는 단지 호스트네임을 써넣은 것으로 인식할 뿐이다. 예를 들면 다음과 같다.
MyRouter#shwo
Translating "shwo"...domain server (10.1.1.2)
% Unknown command or computer name, or unable to find computer address
MyRouter#
위에서 잘못한 것은 show를 "shwo"로 잘못 썼다는 것 뿐이다. 우리는 디바이스가 "shwo"로 잘못 이름 붙여지기를 원하는 것은 아니다. 이러한 상황을 처리할 방법은 앞서있었던 전송 메소드를 변경하는 것이다.
! Console port
line con 0
transport preferred none
! VTY Ports
line vty 0 5
transport preferred none
우리가 잘못 기입한 키워드 때문에 실패했던 접속 불량을 출력해 준다.
MyRouter#shwo
^
% Invalid input detected at "^" marker.
- 흔하게 저지르는 두 가지 접근-리스트 함정
우선 내가 경험했던 함정 중 첫 번째로 언급할 접근-리스트 문제는 어떤 ICMP(Internet Control Message Protocol) 트래픽은 게이트웨이 방화벽을 통과하지 않는다는 것이다.
예를 들어 홈 라우터에 DSL에 대한 접근-리스트를 설정했다고 해보자. 갑자기 거대 이메일 첨부파일과 같은 용량이 큰 메시지를 전송할 경우 여러분은 접속하는데 시간이 정말 오래 걸리거나 갑자기 전송이 끊어져 버리는 상황을 경험한 적이 있을 것이다. 이때 여러분이 불안정하게 접근-리스트를 수신 받으면 문제는 없어진다. 그리고 접근-리스트에 다시 돌아가면 문제는 다시 나타난다. 이 상황에서 여러분은 접근-리스트를 다시 살펴보면서 도대체 무슨 일이 일어났었는지를 자기 자신에게 반문할 것이다. 리스트가 ICMP를 통과시키지 않았다는 아주 간단한 문제임에도 여러분은 문제의 실마리가 이렇게 간단한 곳에 있음을 알아채지 못했을 것이다.
이미 필자가 『Cisco IOS in a Nutshell』에서도 말한 바 있지만 실무에서는 ICMP가 중요한 역할을 함에도 불구하고 많은 사람들은 아직도 이것을 해커들이 사용하는 도구 정도로 오해하고 있다. 필자가 방금 말했던 문제에서도 ICMP 정보가 접근-리스트를 통과하지 않는다는 문제는 최대전송단위(Maximum Transmission Unit)나 source-quench 문제(중간에 있는 라우터의 버퍼가 꽉 차서 더 이상 자료를 받을 수 없는 경우)처럼 들린다. 어느 쪽이든 간에 접근-리스트에 아래와 같은 명령어들을 써넣으면 문제는 해결될 것이다.
! allow pings into the network
access-list 110 permit icmp any any echo
! allow ping responses
access-list 110 permit icmp any any echo-reply
! allow ICMP source-quench
access-list 110 permit icmp any any source-quench
! allow path MTU discovery
access-list 110 permit icmp any any packet-too-big
! allow time-exceeded, which is useful for traceroute
access-list 110 permit icmp any any time-exceeded
! deny all other ICMP packets
access-list 110 deny icmp any any
두 번째로 말할 접근-리스트 함정은 내부 네트워크에서 제공자의 DNS 서버로 DNS를 허용하도록 하는 것을 잊어버릴 때 발생한다. 이러한 것은 주로 내부 DNS 서버 실행이 없을 수도 있는 가정용 또는 작은 사무실용 라우터에서 문제가 된다.
아래의 명령어는 호스트에서 외부 DNS 서버로 DNS 접속을 허용하는 명령어이다. 이 예제에서 외부 DNS 서버는 172.16.1.1 과 172.30.1.1을 말한다.
access-list 110 permit udp host 172.16.1.1 eq domain any gt 1023
access-list 110 permit udp host 172.30.1.1 eq domain any gt 1023
- 유용하게 사용되는 show 명령어
라우터를 설정하는 작업 중 절반은 거의 전쟁과 같다고 볼 수 있다. show 명령어들로 구성된 유용한 툴박스 없이 라우터를 설정하기란 정말 어려운 일이다. 『Cisco IOS in a Nutshell』의 튜토리얼에 해당하는 장을 살펴보면 알겠지만 필자는 각각의 주제에 따른 적절한 show 명령어를 포함시키고자 노력했다.
여기서는 여러분이 최소한 꼭 알고 있어야 할 가장 중요한 show 명령어 중 일부분만을 정리했다. 물론 여기에 제시된 것들의 성향은 IP에 치우쳐져 있다는 것을 명시하는 바이다.
- show ip arp
- MAC-to-IP 변환 테이블에 해당하는 ARP(주소 분해 프로토콜)표 전체를 보여줄 것.
- show version
- 이 명령어로 여러분은 상당한 정보(실행중인 IOS 버전, 이용 가능한 인터페이스, 시스템 가동시간, 마지막 리로딩 이유, 설정 레지스터)를 획득할 수 있다.
- show ip protocols
- 현재 실행중인 라우팅 프로토콜에 관련된 정보를 보여줄 것.
- show ip route
- 구 대기상태 즉 전체 IP 라우팅 테이블을 보여줄 것.
- show ip route summary
- IP 라우팅 테이블의 요약을 보여준다.
- show ip interface
- IP 수준에서 각각의 인터페이스에 대한 요약을 보여준다.
- show ip interface brief
- 개개의 인터페이스에 대한 아주 간략한 요약을 보여준다.
- show ip traffic
- 라우터와 관련된 IP 트래픽 통계에 대한 광범위한 요약을 보여준다.
- show access-list
- 이 명령어는 최근에 설정된 모든 접근-리스트뿐만 아니라 각각의 라인이 수신한 히트수까지도 보여준다. 이 정보는 접근-리스트와 관련된 문제를 더 능숙하게 해결하기 위해 사용될 수 있다.
- show cdp neighbors
- DCP를 사용할 수 있다고 가정해보자. 이 명령어는 현재 연결된 모든 시스코 디바이스에 대한 정보를 보고하는 역할을 한다. 여기서 CDP는 Cisco Discovery Protocol의 약자로 정말 유용한 도구이다.
- show cdp neighbors detail
- 이 명령어로 여러분은 CDP 주변장치에 대해 더 상세한 정보를 얻을 수 있다.
- 명령라인 편집 키를 알아둘 것
시스코 IOS 디바이스에 시간을 투자하면서 몇 가지 단축키 대해 알아두는 것도 좋다. 때때로 단축키가 있다는 사실조차도 모르고 있었다는 듯이 단축키의 사용법을 알고 놀라는 사람들이 있다. 유닉스를 자주 사용하는 사람이라면 아마 이러한 명령어들 또한 익숙하게 생각될 것이다(예를 들어 배시 셸의 경우 키조합이 상당히 유사함). 단축키에 대한 모든 리스트들은 이미 『Cisco IOS in a Nutshell』에 다 열거해 놓았으나 꼭 알아두어야 할 사항을 다시 한 번 언급하면 아래와 같다.
Control A 라인의 처음으로
Control E 라인의 끝으로
Control K 커서 오른쪽에 있는 것은 모두 삭제
Control P 히스토리 버퍼에 있는 선행 명령 환원
Control N 히스토리 버퍼에 있는 차기 명령 환원
- 프레임 릴레이에 대해 오해하고 있는 것
하위-인터페이스가 생성되기 전에 물리적인 인터페이스위에서 캡슐화 타입은 프레임 릴레이로 설정되어야 한다. 기본 축약 타입은 대개가 HDLC (고수준 데이터 링크 제어)이다.
따라서 프레임 릴레이 하위-인터페이스를 생성하기 전에 우선 물리적 인터페이스 위에서 프레임 릴레이로 캡슐화 타입을 설정해야 한다.
interface serial0
encapsulation frame-relay
이제 하위-인터페이스를 생성해보자.
interface serial0.1 point-to-point
description This is our first sub interface for serial1
- 시리얼 링크에 대역폭 설정하기
시리얼 인터페이스에 대역폭을 설정하는 것은 실제적인 링크 속도와는 상관없다. 그것보다 라우팅 프로토콜은 라우팅 메트릭스를 계산하는데 사용된다. 디폴트 대역폭은 1.544mps로서 T1 링크에서의 속도를 나타낸다.
그러나 T1을 사용하지 않는다면, 시리얼 링크에 대역폭을 설정하는 것은 좋은 생각이다.
interface serial0
description This is a 56k link
bandwidth 56
이제 여러분이 알고 있어야 할 아주 기초적인 열 가지 사항에 대해 거의 다 말한 것 같다. 필자는 이 팁들로 여러분들이 시스코 IOS 디바이스를 다루는데 있어 흔하게 저지를 수 있는 실수들을 미리 방지할 수 있길 바란다.
제임스 보니(James Boney)는 광범위한 주제를 전문적으로 다루는 컨설턴트이다. 그가 다루는 분야로는 네트워크 설계, 네트워크 관리, 유닉스 관리, 프로그래밍 등이다.