(http://www.digimoon.net/)
간만에 시스코 관련 강좌를 하게 되었네요.
이번에는 VMWare로 구동한 가상 OS와 다이나밉스로 구동한 가상 라우터를 서로 연동하는 법에 대해 알아보도록 하겠습니다.
다이나밉스로 시스코 IOS를 에뮬레이팅해서 쓸 수 있다는 사실만 해도 정말 감탄할 만한 일이 아닐 수 없죠. 하지만 실습을 하다 보면 라우터의 시리얼 구간끼리 연결하는 건 문제 없는데 이더넷 인터페이스에 호스트PC도 물려 보면 좋겠다는 생각을 다이나밉스를 써 본 사람들이라면 누구나 다 하게 됩니다.
VMWare로 가상OS를 돌려 이를 가상라우터에 물릴 호스트PC로 대체할 수 있습니다. 지금부터 그 방법을 적어 보도록 하겠습니다.
아래 그림에 나와 있는 토폴로지와 같이 가상라우터와 가상PC를 연동시켜 보겠습니다.

다이나밉스를 설치하면 바탕화면에 3개의 바로가기 아이콘이 생성되는데 취급하기 편하게끔 우선 하나의 폴더에 정리해 넣어 보았습니다. 아래 아이콘들입니다.

Dynagen Sample Labs 디렉토리를 열어보면 확장자가 net으로 된 환경설정 파일이 든 디렉토리들이 여러 개 있습니다. simple1 디렉토리를 열어 안의 net 파일을 메모장과 같은 편집기로 열어보면 아래와 같은 내용이 나옵니다. 시스코 7200 라우터끼리 시리얼 인터페이스를 이용하여 연결할 수 있는 구성도입니다. 여기서는 일단 붉은색으로 된 부분만 유심히 보면 됩니다.
#
# All the f0/0 interfaces are on VLAN 1 and the F1/0 interfaces are on VLAN 2 [localhost] [[7200]]
image = \Program Files\Dynamips\images\c7200-jk9o3s-mz.124-7a.image
# On Linux / Unix use forward slashes:
# image = /opt/7200-images/c7200-jk9o3s-mz.124-7a.image
npe = npe-400
ram = 160
[[ROUTER Zapp]]
console = 2001
f0/0 = LAN 1
f1/0 = LAN 2 [[ROUTER Leela]]
console = 2002
f0/0 = LAN 1
f1/0 = LAN 2
[[ROUTER Kif]]
console = 2003
f0/0 = LAN 1
f1/0 = LAN 2
첫번째 붉은색 부분이 IOS 이미지 파일이 위치한 경로입니다. 샘플에 나온 경로대로 IOS를 위치시켜 쓸 경우 윈도를 포맷하거나 날리게 될 경우 무용지물이 되죠. 그래서 될 수 있으면 OS가 설치된 파티션이 아닌 다른 데이터 저장용 파티션에 따로 위치시키는 게 좋습니다. 저는 F 드라이브에 Cisco IOS라는 전용 디렉토리를 만들어 보도록 하겠습니다.
그리고 두번째 부분은 라우터에 할당할 RAM 용량이죠. 많으면 많을수록 부팅속도도 빨라지고 하니 적당히 할당해 주도록 합니다. 여기서는 128M로 설정하겠습니다.
그리고 샘플에 나오는 라우터 정보는 7200 라우터인데 여기서는 3640 라우터의 IOS 이미지 파일로 사용할 것입니다. 마지막으로 라우터에 이더넷 인터페이스를 추가하기 위해 이더넷용 모듈도 추가하도록 하겠습니다. 그렇게 해서 수정한 내용은 아래와 같겠습니다.
# VMWare 연동 실습
[localhost]
[[3640]] #### 여기서부터 전체 3640 라우터에 공통으로 적용할 정보 지정.
image = F:\Cisco IOS\c3640-jk9o3s-mz.123-10.bin #### 라우터 IOS 이미지 파일 경로
ram = 128 #### 라우터의 RAM 용량
[[ROUTER R1]] #### 여기서부터는 라우터 개별 설정 정보 명시
model = 3640 #### 7200 라우터 이외의 라우터는 이와 같이 따로 명시해 줌. 7200 라우터의 경우는
이 부분 생략해도 됨
slot0 = NM-4E #### 이더넷 모듈 추가하기 위한 설정
s1/0 = R2 s1/0 #### R1라우터의 s1/0과 R2라우터의 s1/0 끼리 서로 연결
[[ROUTER R2]]
model = 3640
slot0 = NM-4E
위 내용을 메모장에 붙여 넣어 확장자가 net인 파일로 저장합니다. 파일명은 아무거나 해도 됩니다.
여기서는 ‘VMWare’라는 폴더를 새로 만들어 ‘VMWare 연동.net’이라는 파일로 저장하겠습니다.
그런데 위 설정 내용대로라면 시리얼 구간끼리만 연결이 완성될 뿐입니다. 이더넷 인터페이스에 호스트를 물리려면 추가 작업이 더 필요합니다. 이제 VMWare로 넘어갑니다.
Edit-> Virtual Network Setting 을 선택합니다.

Summary 탭을 선택해서 보면 가상 네트워크 정보가 나옵니다. vmware를 처음 설치하고 난 뒤 아무것도 건드리지 않은 상태라면 아래와 같이 나올 겁니다. VMnet0, VMnet1, VMnet8 이렇게 3가지입니다.

기존 정보는 그대로 둔 채 여기서는 새로운 어댑터를 추가해 보도록 하겠습니다.
PC1과 2에 각각 할당할 VMnet2, VMnet3을 추가하도록 하겠습니다. Host Virtual Adapters를 선택합니다.
그런 다음 왼쪽 하단의 Add를 클릭하여 추가하면 됩니다. 다 설정하면 아래의 적용 버튼을 누릅니다.

추가한 뒤 Host Virtual Network Mapping메뉴를 선택한 뒤 각 어댑터의 오른쪽 끝에 있는 화살표를 눌러 서브넷 정보를 토폴로지에 설정했던 대로 입력합니다. VMnet2는 아래와 같이 설정하면 되겠죠. VMnet3도 같은 방법으로 설정합니다. 다 수정하였음 이번에도 아래의 적용 버튼을 누릅니다.

에거~ 캡쳐하면서 작성하느라 힘들군요. VMWare는 이걸로 설정이 끝났고 이제 다시 다이나밉스로 넘어갑니다.
Network device list 파일을 실행하면 아래와 같이 나옵니다.

유심히 봐야 할 부분은 붉은 색 부분입니다.
Network adapters on this machine:
rommon_load_file: unable to create file c7200_i0_rommon_vars (No such file or di
rectory)
NIO_gen_eth:\Device\NPF_GenericDialupAdapter
Desciption: Generic dialup adapter
NIO_gen_eth:\Device\NPF_{9B47F17D-82BF-4DD0-B83B-54F044982DAB}
Name : VMware Network Adapter VMnet2
Desciption: VMware Virtual Ethernet Adapter
NIO_gen_eth:\Device\NPF_{24C0BAD2-FAA3-4EAD-B848-D35734A165B9}
Name : VMware Network Adapter VMnet8
Desciption: VMware Virtual Ethernet Adapter
NIO_gen_eth:\Device\NPF_{E87AC396-DA18-4D68-A09F-9CB73A6DF7F2}
Name : VMware Network Adapter VMnet3
Desciption: VMware Virtual Ethernet Adapter
NIO_gen_eth:\Device\NPF_{1984F540-5F7A-4264-A958-D0FE8D02130E}
Name : VMware Network Adapter VMnet1
Desciption: VMware Virtual Ethernet Adapter
NIO_gen_eth:\Device\NPF_{A4269DFC-5FD0-4CE2-83AF-E6AFFE318A0E}
Name : 로컬 영?
Desciption: Broadcom NetXtreme Gigabit Ethernet Driver
Use as follows:
F0/0 = NIO_gen_eth:\Device\NPF_{...}
계속하려면 아무 키나 누르십시오 . . .
VMnet2, VMnet3에 해당하는 레지스터 값을 net 파일에 추가해 줍니다. 아래와 같이 말이죠.
# VMWare 연동 실습
[localhost]
[[3640]] #### 여기서부터 전체 3640 라우터에 공통으로 적용할 정보 지정.
image = F:\Cisco IOS\c3640-jk9o3s-mz.123-10.bin #### 라우터 IOS 이미지 파일 경로
ram = 128 #### 라우터의 RAM 용량
[[ROUTER R1]] #### 여기서부터는 라우터 개별 설정 정보 명시
model = 3640 #### 7200 라우터 이외의 라우터는 이와 같이 따로 명시해 줌. 7200 라우터의 경우는
이 부분 생략해도 됨
slot0 = NM-4E #### 이더넷 모듈 추가하기 위한 설정
s1/0 = R2 s1/0 #### R1라우터의 s1/0과 R2라우터의 s1/0 끼리 서로 연결
e0/0 = NIO_gen_eth:\Device\NPF_{9B47F17D-82BF-4DD0-B83B-54F044982DAB} #### VMnet2
[[ROUTER R2]]
model = 3640
slot0 = NM-4E
e0/0 = NIO_gen_eth:\Device\NPF_{E87AC396-DA18-4D68-A09F-9CB73A6DF7F2} #### VMnet3
이제 모든 설정 작업이 끝났습니다. 이제 VMware로 구동할 가상OS의 네트워크 인터페이스를 각각 VMnet2, VMnet3으로 지정해서 부팅시킨 뒤 위 토폴로지대로 네트웍을 구성해서 확인만 하면 됩니다.
R1, R2 라우터의 시리얼, 이더넷 인터페이스에 IP주소를 할당하고 라우팅 프로토콜로 RIP을 적용하여 토폴로지를 완성해 보았습니다. 요약 정보는 아래와 같습니다.
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 150.150.0.254 YES manual up up
Ethernet0/1 unassigned YES NVRAM administratively down down
Ethernet0/2 unassigned YES NVRAM administratively down down
Ethernet0/3 unassigned YES NVRAM administratively down down
Serial1/0 10.1.1.1 YES NVRAM up up
Serial1/1 unassigned YES NVRAM administratively down down
Serial1/2 unassigned YES NVRAM administratively down down
Serial1/3 unassigned YES NVRAM administratively down down
R1#show ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 14 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
Ethernet0/0 1 1 2
Serial1/0 1 1 2
Automatic network summarization is in effect
Maximum path: 4
Routing for Networks:
10.0.0.0
150.150.0.0
Routing Information Sources:
Gateway Distance Last Update
10.1.1.2 120 00:00:03
Distance: (default is 120)
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route Gateway of last resort is not set
R 200.200.200.0/24 [120/1] via 10.1.1.2, 00:00:12, Serial1/0
10.0.0.0/30 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Serial1/0
150.150.0.0/24 is subnetted, 1 subnets
C 150.150.0.0 is directly connected, Ethernet0/0
R1#
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 200.200.200.254 YES manual up up
Ethernet0/1 unassigned YES NVRAM administratively down down
Ethernet0/2 unassigned YES NVRAM administratively down down
Ethernet0/3 unassigned YES NVRAM administratively down down
Serial1/0 10.1.1.2 YES NVRAM up up
Serial1/1 unassigned YES NVRAM administratively down down
Serial1/2 unassigned YES NVRAM administratively down down
Serial1/3 unassigned YES NVRAM administratively down down
R2#show ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 4 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
Ethernet0/0 1 1 2
Serial1/0 1 1 2
Automatic network summarization is in effect
Maximum path: 4
Routing for Networks:
10.0.0.0
200.200.200.0
Routing Information Sources:
Gateway Distance Last Update
10.1.1.1 120 00:00:08
Distance: (default is 120)
R2#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route Gateway of last resort is not set
C 200.200.200.0/24 is directly connected, Ethernet0/0
10.0.0.0/30 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Serial1/0
R 150.150.0.0/16 [120/1] via 10.1.1.1, 00:00:20, Serial1/0
R2#
2개의 호스트PC에는 리눅스를 설치하였습니다.
PC1에서 PC2로 핑을 쏴 보니 성공입니다. ^^
PING 200.200.200.10 (200.200.200.10) 56(84) bytes of data.
64 bytes from 200.200.200.10: icmp_seq=0 ttl=62 time=77.0 ms
64 bytes from 200.200.200.10: icmp_seq=1 ttl=62 time=252 ms
64 bytes from 200.200.200.10: icmp_seq=2 ttl=62 time=87.3 ms --- 200.200.200.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 77.078/138.844/252.136/80.219 ms, pipe 2
[root@localhost ~]#