게이트웨이 이중화
네트워크에서 기본 게이트웨이(보통 라우터나 L3 스위치)는 외부와의 연결을 책임지는 중요한 장비입니다.
하지만 이게 고장 나면?
네트워크 전체가 마비될 수 있죠.
게이트웨이 이중화는 이런 단일 장애 지점을 없애기 위해 두 대 이상의 장비를 준비해 하나가 실패하면 다른 하나가 대신 작동하도록 만드는 기술입니다!
왜 필요할까요?
- 중단 없는 서비스: 장애가 발생해도 네트워크 연결이 끊기지 않아요.
- 빠른 복구: 몇 초 안에 대체 장비가 역할을 넘겨받습니다.
- 기업 환경 필수: 데이터센터나 기업 LAN에서 고가용성(HA)을 보장합니다.
어떤 방법이 있을까요?
대표적인 프로토콜로 VRRP와 HSRP가 있습니다:
- VRRP (Virtual Router Redundancy Protocol): 개방형 표준, 여러 벤더에서 사용 가능.
- HSRP (Hot Standby Router Protocol): 시스코 전용, 시스코 장비에 최적화.
VRRP와 HSRP, 어떻게 동작할까요?
Active-Standby 역할 나누기
두 프로토콜 모두 가상 IP 주소를 만들어 Active(주요)와 Standby(대기) 장비가 이를 공유합니다!
- VRRP: 마스터가 가상 IP를 관리하며, 백업은 대기 상태로 헬로 패킷을 감시해요.
- HSRP: 액티브가 주 역할, 스탠바이가 대기하며 헬로 패킷으로 상태를 확인합니다.
Active가 죽으면 어떻게 되나요?
- 헬로 패킷 체크: Active는 주기적으로 헬로 패킷을 보내요(VRRP: 1초, HSRP: 3초 기본값).
- 타이머 만료: Standby가 일정 시간(예: VRRP 3초, HSRP 10초) 동안 패킷을 못 받으면 자신이 Active로 전환.
- 우선순위 경쟁: 여러 대가 있다면 우선순위(Priority, 기본 100)가 높은 장비가 주도권을 잡아요.
- 클라이언트 알림: 새 Active가 가상 IP와 MAC 주소를 네트워크에 알립니다(Gratuitous ARP 사용).
헬로 패킷과 인터링크
헬로 패킷은 멀티캐스트로 전달되는데, 이를 위해 Active와 Standby가 같은 L2 영역(예: VLAN)에 있어야 해요.
즉, L3 장비 간 별도 링크 대신 같은 VLAN 연결만 있으면 충분합니다.
이중화 종류
HSRP | VRRP |
---|---|
시스코 독점 프로토콜 [시스코 전용 장비] | IEEE 표준 [모든 장비 호환] |
16 groups | 255 groups |
1 active, 1standby, 여러 개의 후보 라우터 | 1 master, 여러 개의 백업 라우터 |
HSRP와 VRRP는 기능 상에 큰 차이는 없어요!
다만 설정 상에 조금 차이가 있지요!
그리고 위 종류말고 시스코 사에서 개발한 GLBP
라는 프로토콜이 있지만 실무에서는 사용하지 않아 넘어가도록 할게요.
VRRP
VRRP는 IBM에서 개발한 게이트웨이 이중화 프로토콜입니다.
Single Virtual Router 방식의 구조를 띄고 있으며,
물리 인터페이스에 설정을 해야되기 때문에 가상 버추얼 그룹을 하나밖에 만들지 못해요.
(VLAN에 설정 시 여러 개의 그룹을 생성하여 사용할 수 있어요!)
주 라우터를 Master
, 예비 라우터를 Backup
라우터 지칭합니다!
Master, Backup 라우터 선출은 우선 순위를 기준으로 정하는데 기본 값은 100
이에요.
또한, 가상 라우터의 IP를 라우터의 Real IP
로도 지정이 가능해요. (HSRP의 경우 Real IP 설정 불가능)
예를 들어, R1의 gi0/5
인터페이스에 할당된 Real IP가 10.10.10.1
이라고 가정했을 때,
가상 라우터 IP를 설정할 때 10.10.10.1
로 지정해도 되고,
다른 IP 10.10.10.10
이렇게도 지정이 가능하다는 애기입니다.
반대로 HSRP의 경우 가상 라우터 IP를 리얼 IP와 겹치지 않도록 해야해요!
가령 리얼 IP가 10.10.10.1
라면, 해당 주소와 겹치지 않는 다른 주소를 사용해야 하죠.
그리고 R1에 Real IP로 가상 라우터의 IP를 지정하게 되는 경우 R1 라우터가 자동적으로 Master로 선출 됩니다!
VRRP Packet
Master 라우터가 Backup 라우터에게 VRRP Advertisement Packet을 전송함으로써
자신이 살아있음을 알려요.
1초마다 반복적으로 전송되는 것이 기본 값이며, 멀티 캐스트 224.0.0.18
주소로 전송합니다.
(그룹에게 전송하는 메시지이므로 멀티캐스트 방식으로 전송)
HSRP, VRRP 설정 예시
VRRP
Master
# track <track object number> interface <interface> line-protocol
track 1 interface g0/2 line-protocol
interface g0/0
vrrp 1 ip 10.10.10.254
vrrp 1 priority 120
vrrp 1 preempt
vrrp 1 track 1 decrement 30
end
show vrrp all [or brief]
명령어 | 설명 |
---|---|
track 1 interface g0/2 line-protocol |
track 1 이라는 오브젝트를 생성인터페이스 g0/2 번을 모니터링 |
vrrp 1 |
그룹 번호가 1번이라는 것 [다른 번호 지정 가능, VLAN에 설정한다면 VLAN 번호와 맞추는 것을 권장 (1 ~ 255번까지)] |
vrrp 1 10.10.10.254 |
가상 라우터의 IP 주소 |
vrrp 1 priority 120 |
우선 순위 값. 기본 값은 100임 (우선순위가 높은 라우터가 Master로 선출됨) |
vrrp 1 preempt |
가상 라우터를 끌어오는 옵션 이 옵션이 있어야 장애가 발생했다 복구되었을 때 이 라우터가 다시 Master가 될 수 있음 |
vrrp 1 track 1 decrement 30 |
track 1 오브젝트의 내용 인터페이스 g0/2번이 다운되면 우선순위를 30 감소 시킴 그렇게 되면 마스터 라우터의 우선순위가 120 - 30 = 90이 되므로 Backup 라우터가 Master 라우터가 됨 |
Backup
interface g0/0
vrrp 1 ip 10.10.10.254
vrrp 1 priority 100 [기본 값이 100이기 때문에 굳이 주지 않아도 됨.]
vrrp 1 preempt
end
show vrrp all [or brief]
HSRP
// Router1 (액티브)
interface vlan 10
ip address 192.168.10.2 255.255.255.0
standby 1 ip 192.168.10.1
standby 1 priority 110
standby 1 preempt
// Router2 (스탠바이)
interface vlan 10
ip address 192.168.10.3 255.255.255.0
standby 1 ip 192.168.10.1
standby 1 priority 100
실습 LAB
VRRP를 실습할 LAB은 아래와 같다.
eve-ng에서 구성한 LAB은 아래와 같다.
인터페이스 정보
장비명 | 인터페이스 | IP |
---|---|---|
DSW-1 | VLAN2 | 192.168.219.1/30 |
DSW-1 | VLAN10 | 192.168.219.129/27 |
DSW-1 | VLAN20 | 192.168.219.161/27 |
DSW-1 | VLAN 10 Virtual IP(VRRP) | 192.168.219.158/27 |
DSW-1 | VLAN 20 Virtual IP(VRRP) | 192.168.219.190/27 |
DSW-2 | VLAN2 | 192.168.219.2/30 |
DSW-2 | VLAN10 | 192.168.219.130/27 |
DSW-2 | VLAN20 | 192.168.219.162/27 |
DSW-2 | VLAN 10 Virtual IP(VRRP) | 192.168.219.158/27 |
DSW-2 | VLAN 20 Virtual IP(VRRP) | 192.168.219.190/27 |
백본 설정
DSW-1 스위치
0. 스패닝 트리 우선 순위 설정 (Master)
spanning-tree vlan 2,10,20 priority 4096
DSW-1(백본 #1)를 Root Bridge로 선정하며, DSW-2(백본 #2)를 후순위로 지정
1. VLAN 데이터 생성
vlan 10
name HOST_NETWORK
exit
vlan 20
name SVR_FARM
exit
2. VLAN Interface 생성
# VLAN 10 설정
int vlan 10
des #### HOST NETWORK ####
ip address 192.168.219.129 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.219.158 # 가상 게이트웨이 IP 지정
vrrp 10 timers learn
vrrp 10 preempt delay minimum 10
vrrp 10 priority 200 # 우선순위 지정
exit
# VLAN 20 설정
int vlan 20
des #### SVR_FARM NETWORK ####
ip address 192.168.219.161 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 20 ip 192.168.219.190
vrrp 20 timers learn
vrrp 20 preempt delay minimum 10
vrrp 20 priority 200
3. L2 스위치와 연결된 인터페이스 포트 설정
int g0/2 # ASW-1와 연결된 인터페이스
switchport mode access
switchport access vlan 10
description #### ASWGi0/2 ####
exit
int g0/3 # ASW-2와 연결된 인터페이스
switchport mode access
switchport access vlan 20
description #### SVR Gi0/3 ####
이제 백본 #1에 대한 인터페이스 IP 설정 및 L2 스위치와의 연결 작업은 끝났다.
4. DSW-1(백본 #01) to DSW-2(백본 #02) 연결
4-1 백본 01과 백본 02간 연결할 Connected IP를 VLAN으로 생성
vlan 2
name BB_LACP
exit
interface vlan 2
des #### DSW-2(BB-02) LACP ####
ip address 192.168.219.1 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
VLAN 2번의 경우 백본 간 연결을 위한 VLAN으로 사용자 IP가 아닌 Connected IP로 사용되기 때문에 vrrp 설정을 하지 않는다.
5. 포트 채널 생성
interface range gi0/0-1
channel-group 1 mode active
channel-protocol lacp
exit
interface port-channel 1
sw mo tr
sw tr allowed vlan 2,10,20
exit
DSW-2 스위치
0. 스패닝 트리 우선 순위 설정 (Backup)
spanning-tree vlan 2,10,20 priority 8192
DSW-2가 후순위가 되도록 우선순위를 높여주자.
1. VLAN 데이터 생성
vlan 10
name HOST_NETWORK
exit
vlan 20
name SVR_FARM
exit
2. VLAN Interface 생성
# VLAN 10 설정
int vlan 10
des #### HOST NETWORK ####
ip address 192.168.219.130 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 10 ip 192.168.219.158 # 가상 게이트웨이 IP 지정
vrrp 10 timers learn
exit
# VLAN 20 설정
int vlan 20
des #### SVR_FARM NETWORK ####
ip address 192.168.219.162 255.255.255.224
no ip proxy-arp
no ip redirects
no ip unreachables
vrrp 20 ip 192.168.219.190
vrrp 20 timers learn
DSW-2(BB-02)의 VRRP 설정은 우선순위 설정 및 딜레이 타임 설정을 넣지 않는다.
3. L2 스위치와 연결된 인터페이스 포트 설정
int g0/2 # ASW-1와 연결된 인터페이스
switchport mode access
switchport acc vlan 10
description #### ASWGi0/2 ####
exit
int g0/3 # ASW-2와 연결된 인터페이스
switchport mode access
switchport access vlan 20
description #### SVR Gi0/3 ####
이제 백본 #1에 대한 인터페이스 IP 설정 및 L2 스위치와의 연결 작업은 끝났다.
4. DSW-1(백본 #01) to DSW-2(백본 #02) 연결
4-1 백본 01과 백본 02간 연결할 Connected IP를 VLAN으로 생성
vlan 2
name BB_LACP
exit
interface vlan 2
des #### DSW-1(BB-01) LACP ####
ip address 192.168.219.0.2 255.255.255.252
no ip proxy-arp
no ip redirects
no ip unreachables
VLAN 2번의 경우 백본 간 연결을 위한 VLAN으로 사용자 IP가 아닌 Connected IP로 사용되기 때문에 vrrp 설정을 하지 않는다.
5. 포트 채널 생성
interface range gi0/0-1
channel-group 1 mode active
channel-protocol lacp
exit
interface port-channel 1
sw mo tr
sw tr allowed vlan 2,10,20
exit
L2 스위치 설정
ASW-1 스위치
1. 스패닝트리 모드를 rapid-pvst로 변경
spanning-tree mode rapid-pvst
2. 호스트와 연결된 포트 설정
int range Gi0/0-10
desc #### HR TEAM ####
no shutdown
sw mo ac
sw ac vlan 10
spanningtree portfast
spanningtree bpduguard enable
!
3. 백본과 연결된 포트 설정
## BB-01
interface Gi0/0
desc ### BB-01 ###
sw mo ac # VLAN 10만 설정되어있으므로 트렁크로 설정할 필요가 없음.
sw ac vlan 10
## BB-02
## 해당 포트의 경우 Blocking 됨.
interface Gi0/1
desc ### BB-02 ###
sw mo ac
sw ac vlan 10
ServerFarm 스위치
1. 스패닝트리 모드를 rapid-pvst로 변경
spanning-tree mode rapid-pvst
2. 호스트와 연결된 포트 설정
int range Gi0/0-10
desc #### Server FARM ####
no shutdown
sw mo ac
sw ac vlan 20
spanningtree portfast
spanningtree bpduguard enable
!
3. 백본과 연결된 포트 설정
## BB-01
interface Gi0/0
desc ### BB-01 ###
sw mo ac # VLAN 20만 설정되어있으므로 트렁크로 설정할 필요가 없음.
sw ac vlan 20
## BB-02
## 해당 포트의 경우 Blocking 됨.
interface Gi0/1
desc ### BB-02 ###
sw mo ac
sw ac vlan 20
통신 테스트
서버쪽에서 VLAN10, VLAN20 가상 IP로 ping을 보내보자.
ping -c 5 192.168.219.158 # VLAN 10 가상 IP
ping -c 5 192.168.219.190 # VLAN 20 가상 IP
장애 테스트
잘 됐는지 확인하기
- VRRP:
show vrrp
로 마스터/백업 상태 확인. - HSRP:
show standby
로 액티브/스탠바이 상태 점검. - 핑 테스트: 호스트에서 가상 IP(VIP)로 핑 보내기.
고의적 장애 테스트
- Active 끄기: 인터페이스 shutdown 또는 전원 차단 후 Standby가 넘겨받는지 확인.
- 헬로 차단: VLAN 연결 끊거나 ACL로 멀티캐스트 차단 후 전환 테스트.
- 우선순위 변경: Active 우선순위를 낮춰 Standby가 주도권을 잡는지 확인.
추가 팁
- debug vrrp나 debug standby로 실시간 로그를 보세요.
- 장애 복구 시간을 측정해 타이머를 조정해보세요.