GNS3로 배우는 네트워크 실습 #2 (Router 연결)

 

라우터는 서로 다른 근거리 통신망(LAN)에 속한 단말간의 네트워킹을 열어주는 장치입니다. 인터넷을 사용하는 행위 역시, 최소 하나 이상의 라우터가 관여하고 있습니다.

 

본 포스트는 GNS3 환경에서 분리된 망 간의 데이터 송수신을 위해 라우터를 배치하고 연결하는 과정을 다룹니다.

 

1. Cisco 라우터 이미지 다운로드


GNS3에서는 기본 스위치, 허브, VPC와 같은 요소들이 처음부터 제공되어지지만, 아쉽게도 라우터만큼은 따로 이미지 소스파일을 구해서 GNS3에 등록해야합니다.

 

가장 쉽게 구할수 있고 많이 애용되는 라우터는 Cisco사의 제품군입니다. 이번 실습에서는 c3725라는 라우터 모델의 가상 이미지가 쓰이며, 해당 이미지를 찾으려고 여기저기 검색하는 수고를 덜어드리기 위해 아래와 같이 다운로드 링크를 올려드립니다.

https://drive.google.com/file/d/1VX8bcXL8cJnlaIP-iJxkiNuhaAVrgExS/view?usp=sharing

 

[Network] Cisco Router 이미지 (c3725).zip

 

drive.google.com

 

GNS3에 Cisco 라우터 이미지 등록

GUI 화면에서 Edit > Preferences

 

DynamipsIOS routersNewBrowse

 

Browse… 으로 다운로드 받은 이미지를 선택합니다.

 

Next > 버튼으로 쭉 넘기다가, “Network adapter“ 부분에서 잠시 멈춥니다. Cisco c3725 라우터 모델은 GT96100-FE라는 이더넷 어뎁터 하나가 내장되어 있습니다. 이 어뎁터만으로는 연결할 수 있는 링크가 2개뿐이여서, 추후 네트워크 구성요소를 많이 배치하는 상황에서는 문제가 발생합니다.

 

그래서 아래와 같이, slot 1, 2 … 에 인터페이스를 좀 더 추가하는게 바람직합니다. (’NM-16ESW’ 하나만 추가해도 포트가 무려 16개씩이나 더 증설됩니다!)

 

이제 Next >만 쭉 선택하여 등록이 완료되면, OK 버튼을 눌러 설정을 저장합니다.

 

2. 실습 A: 라우터로 게이트웨이(Gateway) 구축하기


게이트웨이는 패킷이 한 서브넷(Subnet)에서 다른 서브넷(ex., 10.0.3.0/24 ↔ 10.0.4.0/24)으로 지나가기 위한 인터페이스입니다. 라우터는 패킷의 목적지 IP를 식별하여 중간경로에 해당하는 게이트웨이 인터페이스로 경로를 안내해주는 역할을 수행합니다.

 

이러한 동작 과정을 눈으로 확인해보기 위하여, 라우터 1개로 게이트웨이를 구성하는 실습을 준비하였습니다.

 

네트워크 노드 배치

프로젝트를 하나 생성해서 빈 공간에 앞서 등록한 라우터 탬플릿을 하나 생성합니다. 나머지 네트워크 구성요소들도 아래 2번째 그림처럼 배치해주세요.

 

본 실습에서는 전체 네트워크를 2개로 쪼개어 다음과 같이 구성하였습니다.

  • 10.0.3.0/24:
    • Switch1
    • PC1: 10.0.3.11
    • PC2: 10.0.3.12
  • 10.0.4.0/24:
    • Switch2
    • PC3: 10.0.4.11

 

상단의 연필 아이콘을 클릭하여 각 노드/인터페이스마다 사용할 IP를 기록해줍니다.(이렇게만 한다고 해서 네트워크 설정이 알아서 되는건 아니에요 😂)

 

VPC의 IP 설정

먼저 초록색 화살표 아이콘을 클릭하여 모든 노드들을 활성화시킵니다. 바로 옆에 있는 터미널 아이콘으로 넘어가 각 구성요소들의 시스템에 접근합니다.

 

배치된 3개의 VPC에 IP 주소 및 해당 VPC가 속한 서브넷의 게이트웨이 정보를 입력합니다.

# ip [IP 주소/서브넷 마스크] [게이트웨이 주소]

# PC1
$ ip 10.0.3.11/24 10.0.3.1

# PC2
$ ip 10.0.3.12/24 10.0.3.1

# PC3
$ ip 10.0.4.11/24 10.0.4.1

 

현재는 PC1PC2끼리 게이트웨이를 거치지 않고 Switch1을 중간다리 삼아 통신이 가능합니다. 반면, PC3의 경우에는 이 둘과는 다른 근거리 통신망에 속하기 때문에, PC3과 네트워킹을 하려면 게이트웨이(i.e., 10.0.3.1)을 반드시 거쳐가야합니다.

 

아직 게이트웨이 설정을 하지 않았기에 PC1에서 PC3로 ping을 날려보면 게이트웨이를 찾지 못해서 연결 시도가 중단되어 버리죠.

 

게이트웨이 설정

이제 라우터에 각 스위치와 연결된 인터페이스에 게이트웨이 주소를 할당해야합니다. 양쪽의 서브넷에서 IP 주소 1개만 따로 떼어와(ex., 10.0.x.1) 인터페이스에 부여하도록 합니다. 이 주소는 당연히 다른 VPC가 사용하면 안되겠죠.

# R1
$ conf terminal

# f0/0 인터페이스 설정
$ int fa 0/0
$ ip addr 10.0.3.1 255.255.255.0 # ip addr [게이트웨이 주소] [서브넷]
$ no shutdown
$ exit

# f0/1 인터페이스 설정
$ int fa 0/1
$ ip addr 10.0.4.1 255.255.255.0 # ip addr [게이트웨이 주소] [서브넷]
$ no shutdown
$ exit

 

이제 PC1 쪽에서 PC3로 다시 ping을 보내봅니다. 이번에는 성공적으로 response가 발생하는 것을 확인할 수 있습니다.

 

3. 실습 B: 라우터 여러개 배치 후, 라우팅 규칙 설정하기


두 번째 케이스는 데이터 전송 경로에 라우터가 여러 걸쳐있는 경우입니다. 앞선 실습에서는 라우터 하나에 양쪽의 게이트웨이 인터페이스가 존재했지만, 이번에는 아래 그림처럼 각기 다른 라우터에 게이트웨이가 분리되어 있는 경우입니다. 대부분의 네트워크 구조가 이러하겠죠.

 

라우터의 수가 2개일때부터는 Routing rule을 설정해야합니다. 패킷이 목적지에 도달하기 위해서 어디로 환승을 해야할지 미리 정해져 있어야 하기 때문이죠.

 

Routing rule이 설정되어 있지 않을 경우

우선 첫 번째 실습에서 구축한 환경을 다시 재현해봅니다.

# PC1
$ ip 10.0.3.11/24 10.0.3.1

# PC2
$ ip 10.0.3.12/24 10.0.3.1

# PC3
$ ip 10.0.4.11/24 10.0.4.1

 

# R1
$ conf terminal

$ int fa 0/0
$ ip addr 10.0.3.1 255.255.255.0 # ip addr [게이트웨이 주소] [서브넷]
$ no shutdown
$ exit

$ int fa 0/1
$ ip addr 10.0.4.1 255.255.255.0 # ip addr [게이트웨이 주소] [서브넷]
$ no shutdown
$ exit

 

이 상태에서 PC1(10.0.3.11) → PC3(10.0.4.11) 방향으로 ping 메시지를 보냈을 때의 모습입니다. 아까와는 다르게 ICMP 메시지와 함께 Destination host unreachable이라는 문구가 나타날텐데요.

 

이는 패킷이 게이트웨이(10.0.3.1)를 통해 라우터 R1까지 도착은 하였으나, 그 다음 행선지를 못 찾아서 발생하는 현상입니다.

 

Routing rule 설정

패킷이 라우터 R1에서 PC3(10.0.4.11)로 제 갈길을 찾아가기 위해, 라우터 R1은 이정표 역할을 해야합니다.

 

저희가 구성했던 네트워크 구성도를 살펴보면, 반대편 게이트웨이(10.0.4.1)를 지나기 전에 10.0.2.2/30 인터페이스를 통과해야함을 알 수 있습니다. 따라서 라우터 R110.0.4.0/24 대역으로 향하는 패킷을 10.0.2.2/30로 포워딩하는 규칙을 가지고 있어야 합니다.

 

라우팅 룰을 생성하는 명령어는 다음과 같습니다. ip route 바로 뒤에 나오는 1~2번째 인자는 패킷이 도달하고자 하는 네트워크의 주소 정보에 해당하며, 3번째 인자인 홉(hop) IP 주소는 패킷을 전달받을 라우터가 어떤 IP 주소로 수신하는지를 명시하는 부분입니다.

# ip route [목적지 네트워크 주소] [서브넷 마스크] [다음 홉 IP 주소]

# R1
$ ip route 10.0.4.0 255.255.255.0 10.0.2.2

 

홉(hop)’이라는 용어가 낯설게 들릴수 있으나, 쉽게 이야기하면 패킷 데이터 전송 경로에 속하는 한 부분 부분을 홉이라고 표현합니다. 즉, 패킷이 다음 네트워크 장비로 이동할 때마다 홉이 하나 발생한다고 보시면 됩니다.

 

다시 원래대로 돌아와, 이번에는 반대편 라우터 R2 쪽도 손을 봅시다. 역으로, PC3가 속한 10.0.4.0/24 대역에서 10.0.3.0/24로 메시지를 전달한다면 당연히 R1 쪽에서도 이런 패킷을 받아들이는 인터페이스가 존재하겠죠.

 

10.0.2.1/30이 그런 인터페이스에 해당하네요. 방금 전과 비슷하게 R2의 라우팅 규칙을 설정해보겠습니다.

# R2
$ ip route 10.0.3.0 255.255.255.0 10.0.2.1

 

라우팅 규칙도 생성되었으니 이제 다시 ping 테스트를 수행해봅니다. 아까처럼 ICMP 메시지가 발생하지 않는다면 성공입니다.

 

반응형