Cisco 라우터나 스위치의 enable 패스워드를 분실했을 때, 장비를 공장 초기화하지 않고도 패스워드를 복구할 수 있다. 핵심은 ROMMON 모드를 통해 NVRAM에 저장된 설정을 우회하는 것이다.

 

 

동작 원리 — Configuration Register

 

Cisco 장비는 부팅 시 Configuration Register 값을 참조하여 어떤 방식으로 부팅할지 결정한다. 현재 값은 show version 명령어로 확인할 수 있다.

 

Router# show version
... (생략) ...
Configuration register is 0x2102

0x2102 vs 0x2142 — 비트 비교

Register 값 중 하위 7번째 비트(bit 6)가 NVRAM 로드 여부를 결정한다.

Register 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0x2102 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0
0x2142 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0
bit 6 = 0 → NVRAM(startup-config)을 정상적으로 불러옴 (0x2102)
bit 6 = 1 → NVRAM을 건너뛰고 부팅 (0x2142) → 패스워드 없이 진입 가능

 

 

복구 절차

 

※ 콘솔 케이블이 연결되어 있어야 하며, 물리적으로 장비에 접근 가능한 상태여야 한다.

 

1. 장비 재부팅

특권 모드에서 reload 명령어를 입력한다.

 

2. ROMMON 모드 진입

재부팅 직후 부팅 메시지가 뜨는 순간 Ctrl + Shift + Pause Break를 입력하면 ROMMON 프롬프트로 진입한다.

 

3. Configuration Register 변경

NVRAM을 우회하도록 Register 값을 변경한다.

rommon 1 > confreg 0x2142

 

4. 장비 재시작

reset 명령어로 재부팅한다. 이번엔 NVRAM을 거치지 않고 Mini-IOS로 부팅된다.

rommon 2 > reset

 

5. 기존 설정 불러오기

NVRAM에 저장된 기존 설정(startup-config)을 running-config로 복사한다. 이 단계를 거쳐야 기존 설정을 유지하면서 패스워드만 변경할 수 있다.

Router# copy startup-config running-config

※ 이 단계를 생략하면 기존 설정(IP 주소, 라우팅 프로토콜 등)이 모두 날아가므로 반드시 수행해야 한다.

 

6. 패스워드 변경

설정 모드로 진입해 새 패스워드를 설정한다.

Router# configure terminal
Router(config)# enable secret NEW_PASSSWORD

 

7. Configuration Register 원상복구

show version으로 확인하면 아직 0x2142 상태다. 반드시 정상값으로 되돌려야 다음 부팅 시 설정을 정상적으로 불러온다.

Router(config)# config-register 0x2102

 

8. 설정 저장

변경 사항을 NVRAM에 저장한다.

Router# write

 

 

 

 

 

"본 문서는 Classic IOS / IOS XE 기반 ISR 라우터 및 Catalyst 2960·3750 스위치 기준입니다. Catalyst 9000 시리즈나 SD-WAN 장비는 절차가 다를 수 있습니다."

유저 모드에서 명령어를 잘못 입력했을 때, 

CLI가 대략 1분정도 멈추는 상황이 있을 수 있다.

이는 도메인 서버에서 주소를 받아오려는 시도를 하는 데, 보통 도메인 서버가 없기 때문에 받아오지 못한다.

 

CTRL+SHIFT+6을 입력하면 바로 빠져나올 수 있다.

혹은 구성(Config)모드에서 no ip domain-lookup을 입력하면 더 이상 저 메시지가 출력되지 않는다.

  • 1.대소문자
  • 2. show run 필터링 - 파이프(|) 활용법
  • 3. 설정 저장
  • 4. 설정 파일 백업과 복원 - merge 주의
  • 5. IOS 파일 시스템 구조

 

1. 대소문자

상황 대소문자 구별
명령어 입력 구별 안 함
파이프 필터의 검색 문자열 구별함

명령어 자체는 case-insensitive라서 아래 셋 다 동일하게 동작한다.

반면 파이프 필터는 case-sensitive다.

show run | begin hostname은 동작하지만

show run | begin HOSTNAME은 매칭되는게 없기 때문에 아무런 출력도 없다.

 

2. show run 필터링 - 파이프(|) 활용법

show running-config는 출력이 길어서 필요한 부분만 뽑아보는 게 중요하다.

파이프(|) 뒤에 필터 키워드를 붙이면 된다.

 

Begin

show run | begin hostname

hostname이 처음 등장하는 줄부터 끝까지 전부 출력한다.

특정 지점 이후를 쭉 보고 싶을 때 사용.

 

include

show run | include int

int라는 문자열이 포함된 줄만 출력한다.

단순 문자열 매칭이라 interface뿐 아니라 int가 들어간 모든 줄이 걸린다.

 

exclude

show run | exclude int

int가 포함된 줄을 제외하고 나머지를 출력한다. include의 반대.

 

section

show run | section interface

매칭된 줄만 뽑는 include와 달리, 해당 키워드로 시작하는 블록 전체를 출력한다.

 

 

include와 section의 차이

 

3. 설정 저장

 

셋 다 RAM의 running-config를 NVRAM의 startup-config에 저장하는 동일한 동작이다.

wr은 Cisco 공식 문서 기준으로 deprecated 처리되어 있어서,

시험이나 공식 문서에선 copy running-config startup-config를 권장한다.

 

 

4. 설정 파일 백업과 복원 - merge 주의

copy running-config unix:my-config

 

unix:는 CML 전용 경로다. CML은 가상 장비라 실제 플래시 스토리지가 없거나 제한적이라

disk0:, disk1: 같은 경로를 못 쓰는 경우가 많다.

 

 

복원할 때 merge 주의

cp flash:my-config startup-config

cp 명령어는 파일을 덮어쓰는 게 아니라 합치는 방식으로 동작한다. startup-config에 기존 내용이 있으면 아래처럼 병합된다.

startup-config (기존) my-config (백업) 복원 결과
vlan 20, vlan 30 vlan 10, hostname Switch-A vlan 10, 20, 30, hostname Switch-A

 

 

의도치 않은 설정이 섞이는 걸 막으려면 반드시 순서를 지켜야 한다.

erase startup-config
cp flash:my-config startup-config

 

 

5. IOS 파일 시스템 구조

내용 저장 위치 전원 OFF 후
IOS 운영체제 이미지 Flash 유지
startup-config NVRAM 유지
running-config RAM 사라짐

 

부팅 순서는 다음과 같다.

  1. Flash에서 IOS 이미지 로드
  2. NVRAM에서 startup-config 읽기
  3. RAM에 running-config로 올림

 

1. 자동완성 - ?로 후보 보기

 

di까지만 쳤을 때 dir, disable, disconnect 세 가지가 후보로 나온다.

이 기능을 활용하면 명령어 철자가 가물가물할 때도 빠르게 확인할 수 있다.

 

2. 키워드 탐색 - 명령어 ?로 다음 옵션 확인

명령어 뒤에 스페이스를 누르고 ?를 입력하면, 해당 명령어 다음에 올 수 있는 키워드 목록이 출력된다.

명령어를 외우지 않아도 장비가 직접 힌트를 준다.

 

3. <cr> - 여기서 엔터 쳐도 된다는 신호

맨 밑에 <cr>이 있는 모습

?를 입력했을 때 목록 맨 아래에 <cr>이 표시되면, 지금 상태 그대로 Enter를 눌러도 유효한 명령어라는 뜻이다.

<cr>이 있으면 show running-config만으로도 실행 가능하다.

반대로 <cr>이 없으면 명령어가 아직 완성되지 않은 것이므로 키워드를 더 붙여야 한다.

 

4. 단축 입력

입력한 문자열이 유일한 명령어로 식별되면 전체를 다 치지 않아도 실행된다.

conf는 configure 하나로만 매칭되고, t는 terminal 하나로만 매칭되기 때문에 단축이 가능하다.

선행 노드(prerequisites)

https://vilhelm.tistory.com/12

 

CML(Cisco Modeling Labs)로 구현하는 VLAN과 NAT 실습

https://vilhelm.tistory.com/11이전 글에서 CML 설치 및 웹 브라우저 접속까지 완료했다.이번 글에서는 실제 토폴로지를 구성하고 VLAN과 NAT을 설정하는 과정을 다룰 것이다. 실습 목표VLAN 10, VLAN 20으로 네

vilhelm.tistory.com

 

1. Ubuntu 서버 추가

그림 1

기존의 토폴로지에서 VLAN 10쪽에 ubuntu 서버 하나만 추가해준다.

 

스위치 콘솔에서:

enable
configure terminal

interface ethernet 0/3
switchport mode access
switchport access vlan 10
exit

#저장
write memory

 

ubuntu 로그인:

ID: cisco

PW: cisco

 

 

2. Ubuntu IP 설정

sudo ip addr add 192.168.10.20/24 dev ens2
sudo ip link set ens2 up
sudo ip route add default via 192.168.10.1

그림 2

ip addr show ens2
ip route

설정 확인

ping 192.168.10.10
ping 192.168.20.10
ping 8.8.8.8

통신 확인

그림 3

 

3. Nginx 설치

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
cat /etc/resolv.conf

#nameserver 8.8.8.8

DNS 서버를 지정해주지 않으면 패키지를 가져올 수가 없다.

resolv.conf에 nameserver 8.8.8.8이 저장됐는지 확인을 꼭 해준다.

sudo apt update
sudo apt install nginx -y
sudo systemctl status nginx

#active (running)

설치 완료 후 상태 확인

 

4. 접속 테스트

Desktop-0 터미널에서:

wget -O - http://192.168.10.20

그림 4

Alpine Linux는 curl이 없으므로 wget으로 웹페이지를 다운로드하고 cat으로 내용을 확인하였다.

 

5. Bind9 DNS 서버

Ubuntu 콘솔에서:

sudo apt install bind9 -y

 

설치가 완료되면

sudo nano /etc/bind/named.conf.local

zone "yourname.lab" {
    type master;
    file "/etc/bind/db.yourname.lab";
};

기본 설정을 해준다.

그림 5

sudo cp /etc/bind/db.local /etc/bind/db.yourname.lab
sudo nano /etc/bind/db.yourname.lab

"""
내용을 아래처럼 수정:
"""

$TTL    604800
@   IN  SOA yourname.lab. root.yourname.lab. (
                  2         ; Serial
             604800         ; Refresh
              86400         ; Retry
            2419200         ; Expire
             604800 )       ; Negative Cache TTL
;
@   IN  NS  ns.yourname.lab.
ns  IN  A   192.168.10.20
www IN  A   192.168.10.20

그림 6

sudo systemctl restart bind9
sudo systemctl status bind9

Bind9 재시작

그림 7 / active(running)

6. Desktop-0에서 DNS 테스트

sudo sh -c 'echo "nameserver 192.168.10.20" > /etc/resolv.conf'
cat /etc/resolv.conf

#nameserver 192.168.10.20

nslookup www.yourname.lab

DNS 서버를 설정하고 확인해준다.

그림 8

wget -O - http://www.vilhelm.lab

 

그림 9

이렇게 해서 Nginx와 Bind9로 내부 네트워크 전용 DNS를 구축해봤다.

만약 회사 내부망이 있다고 하면,

사원 PC → 내부 DNS 서버 → IP 변환을 통해 도메인으로 서버 자원에 접근할 수 있다.

https://vilhelm.tistory.com/11

이전 글에서 CML 설치 및 웹 브라우저 접속까지 완료했다.
이번 글에서는 실제 토폴로지를 구성하고 VLAN과 NAT을 설정하는 과정을 다룰 것이다.

 

실습 목표

  • VLAN 10, VLAN 20으로 네트워크 분리
  • Router on a Stick 방식으로 Inter-VLAN 라우팅 구현
  • NAT 설정으로 내부 PC에서 외부 인터넷 연결

 

토폴로지 구성

그림 1

 

사용한 노드:

  • IOL(IOL-0): 라우터 역할
  • IOL-L2(IOL-L2-0): L2 스위치 역할
  • Desktop: PC 역할
  • External Connector(ext-conn-0): 외부 인터넷 연결

1. 노드 배치

그림 2

상단의 메뉴 중 공유 아이콘과 비슷하게 생긴 아이콘을 누르면 노드를 배치할 수 있다.

성공적으로 그림 1과 같이 노드를 배치 했다면,

2. 케이블 연결

그림 3

노드를 우클릭하고 Add link로 케이블을 연결할 수 있다.

 

 

3. 라우터 설정

라우터(IOL)를 더블클릭해서 콘솔(Console) 창을 엽니다.

그림 4

enable
configure terminal
hostname Router

inserthostname을 Router로 바꿔주었다.

 

3-1. 서브인터페이스 생성 (Router on a Stick)

그림 5

interface ethernet 0/0.10
encapsulation dot1Q 10
ip address 192.168.10.1 255.255.255.0

interface ethernet 0/0.20
encapsulation dot1Q 20
ip address 192.168.20.1 255.255.255.0

interface ethernet 0/0
no shutdown

 

Router on a Stick이란?
물리 인터페이스 하나에 서브인터페이스를 여러 개 만들어서
각 VLAN의 게이트웨이 역할을 하게 하는 방식이다.
라우터 포트 하나로 여러 VLAN 간 라우팅이 가능하다.

 

3-2. 외부 인터페이스 설정 (NAT 준비)

External Connector와 연결된 포트(eth0/1)에 DHCP로 IP를 받아온다.

 

그림 6 / Ethernet0/1에 DHCP로 IP가 할당되는 모습이다.

interface ethernet 0/1
ip address dhcp
no shutdown

 

do show ip interface brief

설정 확인

 

4. 스위치 설정

enable
configure terminal
hostname Switch

기본 설정

vlan 10
name VLAN10
exit
vlan 20
name VLAN20
exit

VLAN을 생성한다.

interface ethernet 0/0
switchport mode access
switchport access vlan 10
exit

interface ethernet 0/1
switchport mode access
switchport access vlan 20
exit

포트별 VLAN 할당

interface ethernet 0/2
switchport trunk encapsulation dot1q
switchport mode trunk
exit

라우터 연결 포트 Trunk 설정

end
show vlan brief
show interfaces trunk

설정 확인

그림 7 / VLAN10과 VLAN20이 Et0/0, Et0/1로 잘 할당된 모습이다.

5. Desktop IP 설정

Desktop 노드를 우클릭 후 VNC 탭으로 접속한다.

ID: cisco

PW: cisco

 

 

Desktop-0 (VLAN 10)

sudo ip addr add 192.168.10.10/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 192.168.10.1

 

Desktop-1 (VLAN 20)

sudo ip addr add 192.168.20.10/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 192.168.20.1
ip addr show eth0
ip route

설정 확인

그림 8

6. VLAN 통신 테스트

Desktop-0 터미널에서 Desktop-1으로 ping을 날린다.

그림 9

 

ping이 성공하면 서로 다른 VLAN 간 통신(Inter-VLAN Routing)이 정상 동작하는 것이다.

이 시점에서 일어나는 일
Desktop-0 → Switch(VLAN 10 태그) → Router → Router가 VLAN 20으로 라우팅
→ Switch(VLAN 20 태그) → Desktop-1

 

7. NAT 설정(라우터)

interface ethernet 0/0.10
ip nat inside
exit

interface ethernet 0/0.20
ip nat inside
exit

interface ethernet 0/1
ip nat outside
exit

inside/outside 인터페이스 지정

access-list 1 permit 192.168.10.0 0.0.0.255
access-list 1 permit 192.168.20.0 0.0.0.255
ip nat inside source list 1 interface ethernet 0/1 overload

NAT 규칙 설정

NAT overload(PAT)란?
내부 PC 여러 대가 공인 IP 하나를 공유해서 인터넷을 사용하는 방식이다.
가정에서 쓰는 공유기 원리와 동일하다.

 

8. 인터넷 연결 테스트

ping 8.8.8.8

그림 10

ping이 성공하면 내부 PC에서 외부 인터넷까지 NAT을 통해 연결된 것이다.

 

9. 저장

enable
write memory

라우터 콘솔

 

enable
write memory

스위치 콘솔

 

그림 11

Download Lab을 누르면 yaml파일로 저장된다.

 

 

핵심 개념

 

  • VLAN: 물리적으로 같은 스위치에 있어도 논리적으로 네트워크를 분리하는 기술
  • Router on a Stick: 라우터 인터페이스 하나로 여러 VLAN 간 라우팅을 처리하는 방식
  • NAT: 내부 사설 IP를 공인 IP 하나로 변환해서 인터넷에 연결하는 기술
  • PAT: 포트 번호를 이용해 각각의 연결을 구분하는 NAT 방식

 

1. 시스코 이미지 다운로드

https://software.cisco.com/download/home/286193282/type/286326381/release/CML-Free

시스코 계정이 필요하다.

CML-Free 카테고리에서 선택해야한다.

나머지 Release들은 전부 Service Contract를 요구해서 요금을 결제해야만 사용할 수 있다.

밑의 두 파일을 다운로드 해준다.

ova파일이 가상머신이고 밑의 iso파일이 포함된 zip파일은 CML 안에서 사용할 장비(OS) 묶음이다.

 

2. VMware Workstation 다운로드

https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion

 

Fusion and Workstation | VMware

VMware Workstation and VMware Fusion desktop hypervisors are the industry leaders in local virtualization. Learn how VMware’s local virtualization solutions provide an easier way to build, test and deliver any app for any device or cloud.

www.vmware.com

브로드컴 계정이 필요하다.

 

3. VMware에 OVA Import

상단 메뉴 → File
Open 클릭
다운받은 cml2_f_2.9.1-7_amd64-7.ova 선택

 

4. ISO 파일 연결

 

Connected 체크

Connected at power on 체크

Use ISO image file → 압축 해제한 refplat ISO 파일 선택

 

설치 중에

DHCP
Static
Disabled

 

OpenSSH

PuTTY

선택하라고 창이 뜨는데 DHCP, OpenSSH 선택하면 된다.

 

 

이제 실습 환경이 준비가 됐고 CLI 환경에 보이는 주소를 입력하면 CML UI에 접근할 수 있다.

 

실습 환경 로그인 화면

+ Recent posts