CS/NETWORK

GNS3로 간단한 네트워크망 구성 실습하기

IT록흐 2025. 7. 16. 18:02
반응형

 

 

 

 

 

사내 인프라가 마땅치 않아

인프라 구성에 고민하던 중 GNS3라는 시뮬레이션 환경을 알게 되었다. 

 

네트워크 엔지니어가 아니라 전문적으로 네트워크 구성을 하지 못하지만

구성하고 싶은 인프라를 테스트하기 위한 기초적인 네트워크 환경이 필요하여 실습하게 되었다.

 

그러므로

아래 내용은 부정확한 정보를 포함하고 있으니 참고용으로만 추천한다.

 

 


 

 

 

요구사항 

1. VLAN 구성이 가능해야 한다. 

2. 방화벽으로 물리적 망분리가 가능해야 한다. 

3. DMZ 망이 존재해야 한다. 

4. 인터넷 접속이 가능해야 한다. 

5. 가능한 이중화 구성이 되어야 한다. 

 

 

 

방화벽

방화벽은 망 밖에서 들어오는 트래픽의 접근을 제어하거나 특정한 IP로 라우팅 시키는 기초적인 기능만 제공하면 되므로, 방화벽  장비가 아닌 라우터(c3725)를 그림만 바꾸어서 사용하였다.

 

코어스위치 

코어 스위치는 VLAN의 경계에 위치하는 게이트웨이 역할을 한다. VLAN 내부에서의 라우팅을 담당하므로 라우팅 기능이 있는 L3 스위치를 사용해야 한다. L3 코어 스위치도 라우터(c3725)를 그림만 바꾸어 사용하였다. 

 

엑세스 스위치

엑세스 스위치는 라우터를 이더넷 스위치로 변환하여 사용하였다. GNS3가 기본으로 제공하는 L2 스위치는 콘솔이 열리지 않아서 VLAN과 Trunk 설정을 유연하게 하지 못하였다. 라우터(c3725)를 이더넷 스위치로 변환하면 라우팅 기능이 비활성화된 이더넷 스위치가 생성된다. 이것도 L2 스위치로 그림을 바꾸어 사용하였다. 

 

망구성

망은 테스트 목적의 실습이므로 단순하게 /24 서브넷으로 통일하였다. 

 

그럼 위 토폴로지의 가장 아래부터 하나씩 설정을 진행해보자. 

 

 


 

 

 

VPCS 설정하기 

#ip [ ip주소 ] / [ 서브넷] [Gateway 주소]
ip 10.10.10.10/24 10.10.10.3 

# 설정 확인하기 
show ip 

# 설정 저장하기 
save

 

 

VLAN 10 : 10.10.10.0/24로 하고 Gateway를 10.10.10.3 으로 하였다. 

VLAN 20 : 10.10.20.0/24로 하고 Gateway를 10.10.20.3 으로 하였다. 

 

 

 

엑세스 스위치 설정하기 

 

- vlan 추가하기 

vlan database 
vlan 10
vlan 20

 

 

- 인터페이스에 vlan 설정하기 

conf t
interface f0/1
switchport access vlan 10
no shutdown

interface f0/2
switchport access vlan 20
no shutdown

 

VPCS와 연결된 인터페이스는 VPCS가 속한 VLAN으로 설정한다. 

 

- 트렁크 설정하기 

conf t
int f0/0  
switchport mode trunk  
switchport trunk encapsulation dot1Q  # dot1Q(802.1Q) 
no shutdown

 

위 토폴로지에서 f0/0과 f0/1은 Trunk로 설정해야 한다. 

Trunk는 물리적 케이블 하나에 여러 VLAN 트래픽이 이동할 수 있도록 트래픽에 VLAN 태그를 달고 다른 장비로 이동할 수 있도록 하는 통로이다. 

 

- 트렁크 설정 확인하기

end
show int f0/0 tr

 

 

 

 

위 그림 처럼 트렁크 설정을 확인할 수 있고 트렁크를 통해 트래픽 이동이 가능한 vlan도 확인할 수 있다. 

 

 

 

코어스위치 설정하기

 

- Trunk 인터페이스 IP 설정하기 

#f0/1 인터페이스 활성화 하기
conf t
int f0/1
no shutdown

# f0/1.10 서브 인터페이스에 trunk 설정 및 ip 할당하기 ( VLAN 10 )
int f0/1.10
encapsulation dot1Q 10
ip address 10.10.10.1 255.255.255.0

# f0/1.20 서브 인터페이스에 trunk 설정 및 ip 할당하기 ( VLAN 20 )
interface f0/1.20
encapsulation dot1Q 20
ip address 10.10.20.1 255.255.255.0


# 설정 확인하기
end 
show ip int br

 

 

엑세스 스위치의 트렁크는 코어 스위치의 f0/1 인터페이스와 연결된다. 

 

f0/1 인터페이스는 vlan 별로 인터페이스를 분리하여 IP를 설정해야 한다. 코어 스위치부터는 L3 개념이 적용되므로 IP를 다룬다. 코어스위치의 인터페이스의 IP를 알고 있으면 코어스위치로 트래픽을 보낼 수 있다. 

 

 

- 코어 스위치 이중화 설정하기 ( vrrp )

conf t
int f0/0.10
vrrp 1 ip 10.10.10.3
no shut

 

 

vrrp는 라우터를 이중화할 때 사용하는 프로토콜이다. 

 

코어스위치는 VLAN에 속한 서버들의 게이트웨이이다. 게이트웨이가 이중화되면 VLAN에 속한 서버들도 하나의 IP를 봐야 한다. 이가 바로 SVI(Switched Virture Interface)에 할당된 IP이다. 

 

vrrp 1 ip 10.10.10.3 

 

f0/0.10 인터페이스에 접속하고 vrrp로 코어 스위치 2개가 같이 사용할 ip를 설정하면 된다. 10.10.10.3은 위에서 vpcs에 설정한 게이트웨이 주소이다. vrrp 1 ip.. 에서 1은 그룹넘버이다. vrrp 설정을 group으로 관리하는데, vrrp를 vlan 넘버와 일치하면 관리하기 편하다고 한다. ( 나는 몰라서 그냥 1로 했다. )

 

 

- 이중화 여부 체크하기 

end
show vrrp

 

코어 스위치1, 코어스위치2

 

 

코어스위치1은 Backup이고 코어스위치2는 Master가 되었다. 코어스위치2가 장애가 발생하여 Down되면 코어스위치1이 Master가 된다. 코어스위치1과 코어스위치2가 서로 통신해서 Master와 Backup을 정하려면 L2로 연결되어 있어야 한다. 그게 아니면 코어 스위치 사이에 MLAG 설정을 하면 MLAG를 통해 Peer Link 통신을 하며 서로의 정보를 주고받는거 같은데.. 거기까지는 하지 못했다. ( 간단한 네트워크 구성이 목적이어서 이중화만 구현되면 되었다. .. ) 

 

- 코어 스위치 접근제어하기

 

L3 코어 스위치는 라우팅 기능이 있어 서로 다른 네트워크에 트래픽을 라우팅 할 수 있다. 그러므로 접근제어를 통해 VLAN 간의 라우팅이 안되도록 막아주어야 한다.

 

접근제어 룰 설정하기 

conf t
ip access-list extended VLAN10-OUT
deny ip 10.10.20.0 0.0.0.255 10.10.10.0 0.0.0.255
permit ip any 10.10.10.0 0.0.0.255
deny ip any any 

ip access-list extended VLAN20-OUT
deny ip 10.10.10.0 0.0.0.255 10.10.20.0 0.0.0.255
permit ip any 10.10.20.0 0.0.0.255
deny ip any any

 

 

* in : 특정 인터페이스를 통해 코어 스위치 안으로 들어오는 트래픽  
* out : 특정 인터페이스를 통해 코어 스위치 밖으로 나가는 트래픽

 

L3 코어스위치 밖으로 VLAN 10 인터페이스를 통해 나가는 트래픽의 출발점이 10.10.20.0 0.0.0.255, 즉 VLAN 20이라면 막겠다는 룰이다. 룰은 위에서부터 우선순위가 높아 하나씩 아래로 내려가며 트래픽을 인터페이스 밖으로 내보낼지 아니면 안으로 들이지를 설정할 수 있다. 

 

permit ip any 10.10.10.0 0.0.0.255

 

위 룰은 인터넷 환경(http,https) 및 ping 테스트를 위해 임시로 추가한 룰이다. 내부망이라고 한다면 보안을 위해 위와 같은 설정을 두면 안된다.  

 

 

인터페이스에 접근제어 설정하기

conf t
int f0/1.10 # VLAN10 인터페이스 
ip access-group VLAN10-OUT out 

conf t
int f0/1.20 # VLAN20 인터페이스 
ip access-group VLAN20-OUT out

 

 

설정 확인하기 

end
sh run int f0/1.10 out

 

 

서로 다른 VLAN에 속한 VPCS 그리고 서로 같은 VLAN에 속한 VPCS 간의 PING 테스트를 통해 설정이 제대로 적용되었는지 체크한다. 

 

 

방화벽 - 코어스위치 사이 트랜짓 네트워크 (Transit Network) 구성하기 

 

방화벽과 코어스위치 둘다 라우팅 기능이 있어 작은 네트워크를 형성해야 했다. 방화벽과 코어 스위치 사이의 트래픽이 경유하는 네트워크를 트랜직 네트워크 라고 부른다 트랜짓 네트워크는 서브넷 마스크의 범위를 /30 같이 작게 설정하는데 단순하게 /24로 설정하였다.

 

 

# IP 설정하기
conf t
int fa0/0
ip addr 10.10.100.4 255.255.255.0

# 이중화 설정
vrrp 3 ip 10.10.100.6

 

 

위 설정을 방화벽과 코어스위치 둘다 진행하여 트랜짓 네트워크를 구성한다. 

 

 

방화벽 - 인터넷 연결하기

 

 

GNS3에서 인터넷 환경으로 트래픽을 내보내려면 VMWARE의 NAT 어댑터를 사용하는 것이 좋다. VMWARE는 GNS3와 연동해서 자주 사용되므로 설치해서 같이 사용하는 것이 좋다. 

 

VMWARE의 NAT 어댑터(VMnet8) 의 게이트웨이 주소를 확인해보자. 

 

VMWARE > Edit > Virtual Network Editor 로 들어간다.

 

 

VMnet8의 NAT settings를 확인하면 NAT 어댑터의 게이트웨이 주소를 확인할 수 있다. 

 

 

NAT 네트워크 대역대로 인터페이스에 IP 설정하기

conf t
int f0/0
ip addr 192.168.108.3 255.255.255.0

 

 

NAT Gateway로 트래픽 라우팅하도록 정적 라우팅 설정하기 

# NAT Gateway로 트래픽 라우팅하기 
conf t 
ip route 0.0.0.0 0.0.0.0 192.168.108.2

 

 

라우팅 테이블에서 라우팅 설정확인하기

end
show ip route

 

 

 

Destination이 학습되지 않은 네트워크 경로이면 모두 192.168.108.2로 보내도록 설정되었다. 

 

여기서 한 가지 문제가 있다. 

 

방화벽과 연결되어 있는 Core스위치에서 출발한 트래픽은 방화벽이 알고 있는 네트워크 대역이니 ping으로 송신을 보내도 수신을 잘 받을 수 있다. 그런데 만약 vpcs에서 인터넷 쪽으로 ping을 보낸다면 ( 물론 내부망이니 인터넷과 연결되어 있으면 안된다... ) vpcs의 네트워크 대역(ex. 10.10.10.0/24 )을 방화벽이 알지 못하므로 vpcs 쪽으로 전달할 수 없다. 만약 라우터라고 한다면 OSFP같은 3계층 프로토콜로 경로학습을 서로 하겠지만 요 장비들은 라우팅과 접근제어만 사용하는 사실상 라우터가 아니기때문에 정적으로 경로를 학습시켜야 한다. 

 

conf t 
ip route 10.10.0.0 255.255.0.0 10.10.100.6

 

10.10.0.0/16 네트워크 대역을 Destination으로 하는 트래픽은 모두 코어스위치로 보내겠다고 정적으로 라우팅 테이블에 설정한다. 이렇게 설정해야 VPCS에서도 인터넷 연결이 가능해진다.  

 

 

DMZ 설정하기 

 

여기까지 했으면 DMZ 설정은 금방할 수 있다. 10.20.0.0/16 대역을 DMZ로 하였다. 위에서 했던 것과 동일하게 엑세스 스위치를 방화벽에 연결하고 vrrp 이중화 하고 서로 연결하면 된다. 

 

 

 

 

 

 

 

반응형

'CS > NETWORK' 카테고리의 다른 글

HTTPS 개념  (0) 2025.07.23
[Network] VLSM ( Variable Length Subnet Mask )  (0) 2023.09.14
[Network] 서브넷 마스크 이해하기 ( Subnet Mask )  (0) 2023.09.14
HDLC 프로토콜( High-Level Data Link Control )  (0) 2021.06.24
프레임 구조  (0) 2021.06.24