Profile picture

[EVE-NG] 소규모 네트워크 환경에서의 백본 구축하기

JaehyoJJAng2024년 06월 03일

▶ 목표

  • 10 ~ 20인 정도의 소규모 사무실에서의 네트워크 토폴로지를 직접 구상
  • 네트워크 토폴로지를 기반으로 장비 셋팅 및 설정
  • 안정적인 운영을 위한 모니터링 툴 도입

요즘 추세의 IT 인프라는 마이크로 서비스 아키텍처의 보편화로 인해 고가용성, 오프-프레미스(Off-Premises) 구성의 중요성과 규모가 점점 커지고 있는 추세이다.

이에 따라 효율적이고 자동화된 지속적 통합 및 지속적 배포 과정이 요구되고 있다.


그러나, 이번 실습에서는 이러한 뒷 배경들을 머리로 온전히 이해하기 위해서

온-프레미스 환경을 기반으로 직접 네트워크 구상도를 그리고,

필요한 네트워크 장비를 설정하고, 안정적인 네트워크 운영을 위한 네트워크 기술들을 도입하는 과정을 수행한 이후에,

서비스를 배포하는 시나리오로 실습을 수행하려고 한다.


▶ 실습 LAB

이번 실습에 사용할 LAB은 아래와 같다.
image


위 LAB을 바탕으로 EVE-NG에서는 아래와 같이 LAB을 구성하였다.
image


▶ 요구사항

▸ 네트워크

요구사항
1 백본과 L2 스위치 연결은 Trunk 모드로 구성
2 백본 이중화는 VRRP로 구성
3 백본 #1과 백본 #2 링크 연결은 LACP로 연결
4 라우터, 방화벽, 백본은 Static Routing 구성
5 IP NAT는 방화벽에서 처리하도록 함.
6 사용자와 서버는 VLAN으로 연결
7 L2 스위치의 경우 RSTP 모드로 변경
8 DMZ 스위치 - WEB 인터페이스 본딩

▸ 서비스

요구사항
1 웹 서버의 경우 파이썬 기반의 FastAPI 백엔드 프레임워크를 사용하여 구축
2 FTP 서버의 경우 sftp를 사용하여 구축
3 사내 도메인 서버를 bind9으로 구축

▶ VLAN 정보

VLAN IP
VLAN 10 192.168.100.32/27 (사업부)
VLAN 20 192.168.100.64/27 (경영부)
VLAN 30 192.168.100.96/27 (전산실 - 서버)
VLAN 40 192.168.100.128/27 (전산실 - 개발부)

▶ 인터페이스 정보

장비명 인터페이스 IP
방화벽(FORTINET) port1 DHCP(192.168.219.130)
방화벽(FORTINET) port2 192.168.100.225 255.255.255.248
방화벽(FORTINET) port3 192.168.100.193 255.255.255.224
방화벽(FORTINET) port4 192.168.100.9 255.255.255.252
방화벽(FORTINET) port5 192.168.100.13 255.255.255.252
BACKBONE #1 Gi0/0 192.168.100.10 255.255.255.252
BACKBONE #1 VLAN 2 192.168.100.17 255.255.255.252
BACKBONE #1 VLAN 10 192.168.100.33 255.255.255.224
BACKBONE #1 VLAN 20 192.168.100.65 255.255.255.224
BACKBONE #1 VLAN 30 192.168.100.97 255.255.255.224
BACKBONE #1 VLAN 40 192.168.100.129 255.255.255.224
BACKBONE #2 Gi0/0 192.168.100.14 255.255.255.252
BACKBONE #2 VLAN 2 192.168.100.18 255.255.255.252
BACKBONE #2 VLAN 10 192.168.100.34 255.255.255.224
BACKBONE #2 VLAN 20 192.168.100.66 255.255.255.224
BACKBONE #2 VLAN 30 192.168.100.98 255.255.255.224
BACKBONE #2 VLAN 40 192.168.100.130 255.255.255.224
BACKBONE #1,2 VLAN 10 VIP 192.168.100.62 255.255.255.224
BACKBONE #1,2 VLAN 20 VIP 192.168.100.94 255.255.255.224
BACKBONE #1,2 VLAN 30 VIP 192.168.100.126 255.255.255.224
BACKBONE #1,2 VLAN 40 VIP 192.168.100.158 255.255.255.224
ADMIN PC e0 192.168.100.226 255.255.255.248
WEB SERVER e0,e1 - BOND 192.168.100.200 255.255.255.224
FTP SERVER e0 192.168.100.201 255.255.255.224
DNS SERVER e0 192.168.100.140 255.255.255.224
Registry SERVER e0 192.168.100.141 255.255.255.224

▶ 적용 기술

  • Default Routing
  • Trunk (Tagging)
  • VLAN (Untagging)
  • LACP
  • VRRP
  • Spanning Tree
  • L2 Host Port security - BPDU Guard
  • Static Routing

▶ 방화벽 설정

1. ISP 라우터와 연결되어있는 port1 인터페이스에 IP 할당
(Port1 인터페이스의 경우 기본 DHCP이지만 장비 On/Off 때마다 IP가 변동되어 웹 접속이 번거로워지므로 STATIC으로 설정하겠음.)
image

config router static
edit 1
set ip 192.168.219.111/24
set gateway 192.168.219.1 # ISP(인터넷 회선)쪽 게이트웨이 주소
set device port1 # 인터페이스 이름
config system interface
next
end

1-1 ISP 라우터로부터 IP를 할당받았는지 확인하고 외부로 ping이 가능한지 테스트

# IP 할당 확인
get sys int physical port1

# ping 테스트
execute ping 8.8.8.8

image


2. Management 스위치와 연결되어있는 port2 인터페이스에 IP 할당
image

config system interface
edit port2
set ip 192.168.100.225 255.255.255.248
set allowaccess https http ping ssh
next
end

3. DMZ 스위치와 연결되어있는 port3 인터페이스에 IP 할당
image

config system interface
edit port3
set ip 192.168.100.193 255.255.255.224
set allowaccess https http ping ssh
next
end

4. BackBone1과 연결되어있는 port4 인터페이스에 IP 할당
image

config system interface
edit port4
set ip 192.168.100.9 255.255.255.252
next
end

5. BackBone2과 연결되어있는 port5 인터페이스에 IP 할당
image

config system interface
edit port5
set ip 192.168.100.13 255.255.255.252
next
end

▸ Routing

  • Static Routing

Network - Static Routes를 아래와 같이 설정
image


▸ DMZ 정책 설정

  • DMZ 영역 -> 외부로 통신 O - 정방향 NAT
  • 외부 -> DMZ 영역 통신 O - 역방향 NAT
  • DMZ -> 내부망 접근 X

1. port3(DMZ 영역) 인터페이스의 Role을 DMZ로 설정
image


2. Policy & Object - Firewall Policy에서 정방향 NAT 정책 설정

2-1. 해당 탭으로 이동 후 Create New 버튼을 눌러 새로운 정책을 아래와 같이 생성해주자.
image
port3(DMZ) 영역에 있는 모든 장비들이 외부로 접근할 수 있도록 설정하였다.


3. 역방향 NAT 정책 설정

외부에서 웹 서버(192.168.100.200/27)에 80번 포트와 443번 포트로 접근할 수 있도록 역방향 NAT 정책 설정

3-1. Policy & Object - Virtual IPs를 클릭하여 새로운 가상 IP를 아래와 같이 생성
image
image

  • Name: 원하는 이름을 입력 (예: WebServerVIP)
  • Interface: 외부 네트워크와 연결된 인터페이스 (예: wan1)
  • External IP Address/Range: 외부에서 접근할 공인 IP 주소를 입력
  • Mapped IP Address/Range: 내부 웹 서버의 IP 주소를 입력 (예: 192.168.100.200)
  • Port Forwarding: 활성화
    • External Service Port: 80
    • Map to Port: 80
  • Add Another Mapping:
    • External Service Port: 443
    • Map to Port: 443

3-2. Policy & Objects의 Firewall Polcy를 클릭하여 새로운 방화벽 정책을 아래와 같이 생성
image

  • Name: 원하는 이름을 입력 (예: DMZ-DNAT)
  • Incoming Interface: 외부 네트워크와 연결된 인터페이스 (예: wan1)
  • Outgoing Interface: 내부 네트워크(DMZ)와 연결된 인터페이스 (예: dmz)
  • Source: All
  • Destination: WebServerVIP (앞서 생성한 가상 IP)
  • Schedule: always
  • Service: HTTP와 HTTPS를 선택
  • Action: Accept

이렇게 설정하면 외부에서 오는 80번 포트와 443번 포트의 트래픽을 내부 DMZ 영역의 192.168.100.200 IP 주소로 전달하게 된다.


▸ Management 정책 설정

  • Management 영역 -> 내부망 접근 O
  • Management 영역 -> DMZ 영역 접근 O

방화벽에서 Management 영역에 대해서 NAT 및 정책 허용을 해주지 않았기 때문에 외부와의 통신은 당연히 되지 않음.

그러므로 내부망과 DMZ 영역 간 통신을 위해 아래와 같이 정책을 생성해주면 됨.


1. Management -> DMZ 영역에 대한 정책 생성
image


2. Management -> Internal(방화벽 Port4) 인터페이스에 대한 정책 생성

현재 방화벽이 백본 두 개와 연결이 되어있기 때문에, 백본과 연결된 각각의 인터페이스에 대해서 정책을 설정해줘야 함.
image


3. Management -> Internal(방화벽 Port5) 인터페이스에 대한 정책 생성
image


4. 어드민 PC에서 DMZ로 접속 테스트

정책이 정상적으로 설정되었는지 테스트를 하기 위해 Management 영역에 있는 ADMIN PC에서 DMZ 영역에 있는 웹 서버로 원격 접속해보자.
image
image
정상적으로 접근이 되고있다.


5. 어드민 PC에서 내부망 서버로 접속 테스트

5-1. DNS 서버로 접속 테스트
image


▸ 내부망 정책 설정

  • 내부 -> 외부 접근 O
  • 내부 -> DMZ 접근 O

1. Internal(Port4) -> Port1(인터넷 회선) 인터페이스에 대한 정책 생성
image


2. Internal(Port5) -> Port1(인터넷 회선) 인터페이스에 대한 정책 생성
image


▶ 서버 설정

▸ WEB 서버

  • WEB 서버 Bonding

0. 먼저 DMZ 영역에 있는 웹 서버에서 내부 서버(DNS)로 Ping 테스트 (통신이 되지 않아야 정상임.)

ping 192.168.100.140

1. 본딩 모듈 적재

modprobe bonding

<br.

lsmod 명령을 사용하여 본딩 모듈이 적재되었는지 확인

lsmod | grep 'bonding'

2. 아래와 같이 bonding 열을 삽입

sudo sh -c 'echo bonding >> /etc/modules'

3. Mode 0의 Bonding 적용

3-1. 현재 스위치와 연결된 인터페이스 목록 확인

ip ad sh | grep 'ens'

image


/etc/netplan/*.yaml 파일을 아래와 같이 수정

network:
  ethernets:
    ens3:
      dhcp4: false
    ens4:
      dhcp4: false

  bonds:
    bond0:
      dhcp4: false
      interfaces: [ens3, ens4]
      addresses: [192.168.100.200/27]  # 여기에 사용할 IP 주소 및 서브넷 마스크를 입력하세요
      nameservers:
        addresses: [8.8.8.8]  # 필요에 따라 DNS 서버 주소를 입력하세요
      parameters:
        mode: balance-rr # mode 0 채택
        mii-monitor-interval: 1 # 본딩 인터페이스의 링크 모니터링 간격
      routes:
        - to: 0.0.0.0/0
          via: 192.168.100.193 # 네트워크 게이트웨이 IP 주소를 입력하세요

  version: 2
  renderer: NetworkManager

4. netplan apply 명령을 실행하여 변경사항 적용

sudo netplan apply

5. 본딩이 적용됐는지 확인

ip ad sh | grep 'bond0'

image


▸ FTP 서버

0. 먼저 DMZ 영역에 있는 FTP 서버에서 내부 서버(DNS)로 Ping 테스트 (통신이 되지 않아야 정상임.)

ping 192.168.100.140

1. SFTP 구축 (구축 과정 생략)
구축 관련 정보


2. Internal 영역에 있는 DNS(192.168.100.140) 서버에서 SFTP(192.168.100.201)로 FTP 접속 테스트

sftp

image


▸ DNS 서버

0. 내부망 영역에 있는 DNS 서버에서 DMZ 영역에 있는 SFTP 서버로 Ping 테스트 (통신이 되어야 정상임.)

ping 192.168.100.201

image


1. DNS 구축 (구축 과정 생략)
구축 관련 정보


2. DNS 테스트

2-1. Management 영역에 있는 ADMIN PC의 브라우저에서 web.network-project.com로 접근해서 웹 서버의 서비스가 정상적으로 노출되는지 확인해보자.

먼저 ADMIN PC에 DNS 서버 주소를 추가해주자.
image


브라우저에서 web.network-project.com를 치고 웹 서버로 정상 접속이 가능한지 테스트해보자.
image


▸ Registry 서버


▶ L2 스위치 설정

▸ 4층 스위치

1. 스위치간 빠른 연결을 위해 RSTP 모드로 설정

spanningtree mode rapid-pvst

2. 스위치 end device와 연결된 포트 설정

int range gi0/2-10 # VLAN 10 port
no shutdown
description #### Business ####
switchport mode # 단일 대역을 사용하기에 access mode 설정
switchport access vlan 10
spanningtree portfast # END Device의 경우 BDPU를 수신하지 않기에 빠른 연결을 위해 STP Portfast 설정
spanningtree bpduguard enable # 루핑 및 BDPU 송/수신 오류 방지 설정. end device 연결 포트에는 필수적으로 해줘야 함.
exit

int range gi0/10-20 # VLAN 20 port
no shutdown
description #### Sales ####
switchport mode
switchport access vlan 20
spanningtree portfast
spanningtree bpduguard enable

3. BB-1과 연결된 포트 설정

int Gi0/0 # BB-1
description #### BB-01 ####
no shut
switchport mode trunk # VLAN 10,20과 통신하기 위해 Trunk로 설정
switchport trunk allowed vlan 10,20

4. BB-2과 연결된 포트 설정

int Gi0/1 # BB-2
description #### BB-02 ####
no shut
switchport mode trunk # VLAN 10,20과 통신하기 위해 Trunk로 설정
switchport trunk allowed vlan 10,20
spanningtree cost 10 # 백본-2 세그먼트는 STP 경로 비용을 넣어주어 Block을 걸어주자.

5. 관리 IP 할당

int vlan 10
desc #### Business ####
ip add 192.168.100.43 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables

int vlan 20
desc #### Business ####
ip add 192.168.100.73 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables

▸ 6층 스위치

1. 스위치간 빠른 연결을 위해 RSTP 모드로 설정

spanningtree mode rapid-pvst

2. 스위치 end device와 연결된 포트 설정

int range gi0/2-10 # VLAN 30 port
no shutdown
description #### Development ####
switchport mode
switchport access vlan 30
spanningtree portfast
spanningtree bpduguard enable
exit

int range gi0/10-20 # VLAN 40 port
no shutdown
description #### Server FARM ####
switchport mode
switchport access vlan 40
spanningtree portfast
spanningtree bpduguard enable

3. BB-1과 연결된 포트 설정

int Gi0/0 # BB-1
description #### BB-01 ####
no shut
switchport mode trunk # VLAN 30,40과 통신하기 위해 Trunk로 설정
switchport trunk allowed vlan 30,40

4. BB-2과 연결된 포트 설정

int Gi0/1 # BB-2
description #### BB-02 ####
no shut
switchport mode trunk # VLAN 30,40과 통신하기 위해 Trunk로 설정
switchport trunk allowed vlan 30,40
spanningtree cost 10

5. 관리 IP 할당

int vlan 30
desc #### Development ####
ip add 192.168.100.103 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables

int vlan 40
desc #### Server FARM ####
ip add 192.168.100.133 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables

▶ 백본 설정


▸ 백본 #1

0. STP Root Bridge 설정

# 빠른 연결을 위해 RSTP 모드로 변경
spanningtree mode rapid-pvst

# Bridge 선정을 위한 우선순위 낮추기
spanningtree vlan 10,20,30,40 priority 4096

1. VLAN 데이터 생성

vlan 10
name Business
vlan 20
name Sales
vlan 30
name Development
vlan 40
name Server_FARM

2. VLAN 인터페이스 생성

int vlan 10
des ### Business ###
ip add 192.168.100.33 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.62
vrrp 10 timers learn
vrrp 10 preempt delay minimum 10
vrrp 10 priority 200

int vlan 20
des ### Sales ###
ip add 192.168.100.65 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.94
vrrp 10 timers learn
vrrp 10 preempt delay minimum 10
vrrp 10 priority 200

int vlan 30
des ### Development ###
ip add 192.168.100.97 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.126
vrrp 10 timers learn
vrrp 10 preempt delay minimum 10
vrrp 10 priority 200


int vlan 40
des ### Server FARM ###
ip add 192.168.100.129 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.158
vrrp 10 timers learn
vrrp 10 preempt delay minimum 10
vrrp 10 priority 200

3. 백본1 - 스위치 인터페이스 설정

int g0/3 # 4F Switch
no shut
switchport mode trunk
switchport trunk allowed vlan 10,20

int g1/0 # 6F Switch
no shut
switchport mode trunk
switchport trunk allowed vlan 30,40

4. 백본1 - 방화벽 인터페이스 설정

int gi0/0
desc #### Fortinet (Gi0/0) ####
no switchport # L3 mode로 설정
ip add 192.168.100.10 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
exit

ip route 0.0.0.0 0.0.0.0 192.168.100.9 # UpLink 방향으로 Default Routing 걸기

방화벽에서 스태틱 라우팅으로 경로를 지정해주었기에 백본에서는 사용자(VLAN10,20,30,40) 대역으로 스태틱 라우팅을 걸어주지 않아도 된다.

만약 사용자 대역에서 외부 통신이 되지 않는다면 방화벽의 스태틱 라우팅을 확인해보도록 하자.


4. 백본1 - 백본2 인터페이스 설정

백본1 - 백본2 연결 구간은 LACP + 스태틱 라우팅으로 묶어 준다.

먼저 백본1 - 백본2 간에 연결한 Connected IP를 VLAN으로 생성하자.

vlan 2
name BB_LACP

int vlan 2
desc #### BB-02 LACP ####
ip add 192.168.100.17 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
no shut

VLAN 2번의 경우 사용자 IP가 아닌 Connected IP로 사용되기에 VRRP 설정을 하지 않는다.


5. PortChannel 생성

int port-channel 1
des #### LACP ####
switchport mode trunk
switchport trunk allowed vlan 2,10,20,30,40

int range g0/1-2 # BB1 - BB2 연결 포트번호
channel-group 1 mode active 
channel-protocol lacp
exit

▸ 백본 #2

0. STP Root Bridge 설정

# 빠른 연결을 위해 RSTP 모드로 변경
spanningtree mode rapid-pvst

# Bridge 선정을 위한 우선순위 낮추기
spanningtree vlan 10,20,30,40 priority 8192

1. VLAN 데이터 생성

vlan 10
name Business
vlan 20
name Sales
vlan 30
name Development
vlan 40
name Server_FARM

2. VLAN 인터페이스 생성

int vlan 10
des ### Business ###
ip add 192.168.100.34 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.62
vrrp 10 timers learn

int vlan 20
des ### Sales ###
ip add 192.168.100.66 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.94
vrrp 10 timers learn

int vlan 30
des ### Development ###
ip add 192.168.100.98 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.126
vrrp 10 timers learn

int vlan 40
des ### Server FARM ###
ip add 192.168.100.130 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.100.158
vrrp 10 timers learn

3. 백본2 - 스위치 인터페이스 설정

int g0/3 # 4F Switch
no shut
switchport mode trunk
switchport trunk allowed vlan 10,20

int g1/0 # 6F Switch
no shut
switchport mode trunk
switchport trunk allowed vlan 30,40

4. 백본2 - 방화벽 인터페이스 설정

int gi0/0
desc #### Fortinet (Gi0/0) ####
no switchport # L3 mode로 설정
ip add 192.168.100.14 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
exit

ip route 0.0.0.0 0.0.0.0 192.168.100.13 # UpLink 방향으로 Default Routing 걸기

4. 백본2 - 백본1 인터페이스 설정

먼저 백본2 - 백본1 간에 연결한 Connected IP를 VLAN으로 생성하자.

vlan 2
name BB_LACP

int vlan 2
desc #### BB-02 LACP ####
ip add 192.168.100.18 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
no shut

VLAN 2번의 경우 사용자 IP가 아닌 Connected IP로 사용되기에 VRRP 설정을 하지 않는다.


5. PortChannel 생성

int port-channel 1
des #### LACP ####
switchport mode trunk
switchport trunk allowed vlan 2,10,20,30,40

int range g0/1-2 # BB1 - BB2 연결 포트번호
channel-group 1 mode active 
channel-protocol lacp
exit

Loading script...