🔧 NX-OS VRF-lite로 취약 단말 VLAN 격리하기 — 구축편 (2/2)
VRF 생성부터 SVI 이관 · 정적 라우팅 · OSPF 재분배 · 방화벽 연동 · 검증 명령어 · 순단 최소화 전환 절차와 롤백까지
📋 목차
- 1. 작업 순서 개요 — 무영향 구간 vs 순단 구간
- 2. STEP 1~9 설정 전문
- 3. 검증 명령어와 정상 출력 판독
- 4. 전환(Cutover) 타임라인과 롤백
- 5. 함정 Top 9
- 6. 확장 관점 — 이 구조가 향하는 곳
1. 작업 순서 개요 — 무영향 구간 vs 순단 구간
| STEP | 작업 | 구간 | 서비스 영향 |
|---|---|---|---|
| 1 | 현재 설정 백업 · 원본 SVI 전문 확보 | 사전 | 없음 |
| 2 | VRF 컨텍스트 생성 | 사전 | 없음 |
| 3 | Transit-B VLAN/SVI 생성 (VRF 측) | 사전 | 없음 |
| 4 | Transit-A VLAN/SVI 생성 (Default 측) | 사전 | 없음 |
| 5 | VRF 내부 정적 디폴트 라우팅 | 사전 | 없음 |
| 6 | 방화벽 인터페이스·라우팅·정책 설정 | 사전 | 없음 |
| 7 | Default VRF 정적 리턴 경로 사전 투입 | 사전 | 없음 * |
| 8 | 격리 VLAN SVI를 VRF로 이관 | 순단 | 수 초~수 분 |
| 9 | OSPF 재분배 설정 · 수렴 확인 | 전환 직후 | 수렴 지연 |
SVI가 아직 Default VRF에 있는 동안 172.20.10.0/24는 Connected 경로(AD 0)로 존재한다. 여기에 Static 경로(AD 1)를 미리 넣어도 AD가 높아 RIB에 설치되지 않으므로 트래픽에 아무 영향이 없다.
그리고 STEP 8에서 SVI가 VRF로 빠지는 순간 Connected가 사라지고 대기하던 Static이 즉시 활성화된다. 경로 공백 없이 스위칭되는 구조. 리턴 경로를 나중에 넣으면 그 사이 블랙홀이 발생한다.
2. STEP 1~9 설정 전문
롤백의 전제. 원본 SVI 설정을 한 글자도 빠짐없이 확보한다. secondary IP, HSRP secondary VIP, ACL, DHCP relay가 붙어 있는지 특히 확인.
CORE-SW-01# show running-config interface Vlan900
CORE-SW-01# show running-config | section "router ospf"
CORE-SW-01# show ip route | include 172.20.
CORE-SW-01# show hsrp brief
CORE-SW-01# copy running-config bootflash:cfg_pre_vrf_YYYYMMDD.cfg
VRF-lite는 별도 feature 활성화가 필요 없다. 컨텍스트만 만들면 즉시 빈 라우팅 테이블이 생성된다.
CORE-SW-01(config)# vrf context LEGACY_ZONE
CORE-SW-01(config-vrf)# address-family ipv4 unicast
CORE-SW-01(config-vrf-af-ipv4)# exit
VRF 측 전송 구간. 라우팅 프로토콜을 붙이지 않는다. 정적 디폴트 하나만 쓰는 것이 격리 설계의 원칙.
vlan 910
name TRANSIT_FW_INSIDE
! ── CORE-SW-01 ──
interface Vlan910
no shutdown
vrf member LEGACY_ZONE
no ip redirects
ip address 192.168.100.5/29
no ipv6 redirects
hsrp version 2
hsrp 910
priority 110
preempt
timers 1 3
ip 192.168.100.4
! ── CORE-SW-02 ── (IP와 priority만 상이)
interface Vlan910
no shutdown
vrf member LEGACY_ZONE
no ip redirects
ip address 192.168.100.6/29
no ipv6 redirects
hsrp version 2
hsrp 910
priority 100
preempt
timers 1 3
ip 192.168.100.4
백본 측 전송 구간. 방화벽은 OSPF 피어가 아니므로 passive-interface로 광고만 하고 인접성은 맺지 않는다.
vlan 920
name TRANSIT_FW_OUTSIDE
! ── CORE-SW-01 ──
interface Vlan920
no shutdown
no ip redirects
ip address 192.168.100.10/29
no ipv6 redirects
ip ospf passive-interface
ip router ospf 100 area 0.0.0.1
hsrp version 2
hsrp 920
priority 110
preempt
timers 1 3
ip 192.168.100.9
격리 VRF의 유일한 출구를 방화벽 inside로 못박는다. 이 경로 하나가 “전 트래픽 방화벽 경유” 목표를 물리적으로 강제한다.
vrf context LEGACY_ZONE
ip route 0.0.0.0/0 192.168.100.1 1
방화벽은 두 개의 L3 레그를 가진다. 라우팅은 단 2줄이지만, 정책은 설계편 체크리스트 기반으로 사전 완성되어 있어야 한다.
[ 인터페이스 ]
port1 (inside , 격리망 측) : 192.168.100.1/29
port6 (outside, 백본 측) : 192.168.100.12/29
[ 라우팅 ]
Destination Gateway IP Interface
0.0.0.0/0 192.168.100.9 port6 ← 백본 HSRP VIP
172.20.10.0/23 192.168.100.4 port1 ← VRF HSRP VIP
[ 정책 (예시) ]
LEGACY→INTERNAL : AD인증(88,389,636,445,135,49152-65535)
DNS(53) / NTP(123) / WSUS(8530-8531)
Backup Agent / SNMP / Syslog
INTERNAL→LEGACY : 관리 접속(RDP 3389) / 자산관리 에이전트
DEFAULT : DENY + LOG
Connected(AD 0)가 우선이므로 지금은 대기 상태로만 남는다. STEP 8 직후 자동 활성화된다.
ip route 172.20.10.0/24 192.168.100.12 name ISOLATED_VIA_FW
ip route 172.20.11.0/24 192.168.100.12 name ISOLATED_VIA_FW
이 작업의 유일한 위험 구간. vrf member 입력 순간 해당 인터페이스의 IP·HSRP·라우팅 설정이 전부 삭제된다. 아래 블록을 통째로 복사해 한 번에 투입해야 순단이 초 단위로 끝난다.
! ── CORE-SW-01 · 일괄 투입 ──
interface Vlan900
vrf member LEGACY_ZONE
no ip redirects
ip address 172.20.10.2/24
ip address 172.20.11.2/24 secondary
no ipv6 redirects
hsrp version 2
hsrp 900
priority 110
preempt
timers 1 3
ip 172.20.10.1
ip 172.20.11.1 secondary
no shutdown
! ── CORE-SW-02 · 일괄 투입 ──
interface Vlan900
vrf member LEGACY_ZONE
no ip redirects
ip address 172.20.10.3/24
ip address 172.20.11.3/24 secondary
no ipv6 redirects
hsrp version 2
hsrp 900
priority 100
preempt
timers 1 3
ip 172.20.10.1
ip 172.20.11.1 secondary
no shutdown
주의: 이관 후 ip router ospf 계열은 의도적으로 복원하지 않는다. VRF에는 OSPF 프로세스가 없으며, 있어서도 안 된다.
SVI가 VRF로 빠지면서 기존 OSPF 광고가 사라진다. 이를 대체할 Static → OSPF External Type-2 재분배를 구성한다. Prefix-list로 범위를 명시 제한해 의도치 않은 경로 유출을 막는다.
ip prefix-list PL_ISOLATED_NETS seq 10 permit 172.20.10.0/24
ip prefix-list PL_ISOLATED_NETS seq 20 permit 172.20.11.0/24
route-map RM_REDIST_STATIC permit 10
match ip address prefix-list PL_ISOLATED_NETS
router ospf 100
router-id 10.255.255.1
redistribute static route-map RM_REDIST_STATIC
log-adjacency-changes
NX-OS의 redistribute static은 RIB에 설치된 정적 경로만 광고한다. STEP 7~8 이전에는 Connected가 우선이라 정적 경로가 RIB에 없으므로 재분배도 되지 않는다. 실제 광고는 STEP 8 직후 시작되며, 기존 광고 철회 + 신규 LSA 전파에 따른 수 초의 수렴 공백이 존재한다. 이 시간이 곧 순단 시간에 더해진다는 점을 작업 시간 산정에 반영할 것.
3. 검증 명령어와 정상 출력 판독
3-1. 기본 검증 시퀀스
| 명령어 | 확인 항목 |
|---|---|
| show vrf | VRF 목록 및 상태(Up/Down) |
| show vrf LEGACY_ZONE interface | VRF에 소속된 인터페이스 전수 — 누락 확인 필수 |
| show ip route vrf LEGACY_ZONE | VRF 라우팅 테이블. Connected 2개 + 디폴트 1개만 있어야 정상 |
| show ip route 172.20.10.0 | Default VRF에서 격리 대역 경로가 방화벽 향인지 |
| show hsrp brief | HSRP 그룹 Active/Standby 정상 분배 |
| show ip arp vrf LEGACY_ZONE | 격리 단말 ARP 학습 여부 |
| ping 192.168.100.1 vrf LEGACY_ZONE | VRF → 방화벽 inside 도달성 |
| ping 172.20.10.50 vrf LEGACY_ZONE | VRF → 단말 도달성 |
| show ip ospf database external | 재분배된 Type-5 LSA 생성 여부 |
| show forwarding vrf LEGACY_ZONE route | 제어 평면이 아닌 하드웨어 FIB 반영 확인 |
3-2. 핵심 출력 판독 — Default VRF 측
CORE-SW-01# show ip route 172.20.10.0
IP Route Table for VRF "default"
'*' denotes best ucast next-hop
172.20.10.0/24, ubest/mbest: 1/0
*via 192.168.100.12, [1/0], 00:12:44, static
via 10.20.1.3, Vlan2001, [110/20], 49w6d, ospf-100, type-2
via 10.20.5.3, Vlan2005, [110/20], 49w6d, ospf-100, type-2
| *via 192.168.100.12 | 방화벽 outside를 향하는 정적 경로가 Best. AD 1로 최우선 → 의도대로 동작 |
| via … ospf-100 type-2 | 다른 L3 장비들이 이 재분배 경로를 학습해 되돌아온 것. AD 110이라 선택되지 않음 |
| 판독 결론 | ubest 1/0 + 정적이 Best = 정상. 만약 OSPF가 Best로 잡히면 정적 경로 누락 또는 next-hop 도달 불가 |
3-3. 핵심 출력 판독 — VRF 측
CORE-SW-01# show ip route vrf LEGACY_ZONE 172.20.10.0
IP Route Table for VRF "LEGACY_ZONE"
'*' denotes best ucast next-hop
'%<string>' in via output denotes VRF <string>
172.20.10.0/24, ubest/mbest: 1/0, attached
*via 172.20.10.2, Vlan900, [0/0], 00:12:44, direct
동일 프리픽스를 두 VRF에서 조회했을 때 결과가 완전히 다르다. Default VRF에서는 “방화벽 너머 원격 경로”, VRF 내부에서는 “직접 연결(direct)”. 두 라우팅 테이블이 독립적으로 존재한다는 것을 한 화면으로 증명한다.
ISMS-P 등 감사 대응 시 이 두 출력을 나란히 캡처하면 논리적 망분리 증빙 자료로 그대로 사용할 수 있다.
3-4. End-to-End 통신 검증
| 검증 항목 | 방법 | 기대 결과 |
|---|---|---|
| 단말 → 게이트웨이 | 단말에서 ping 172.20.10.1 | 성공 (VRF 내부 통신) |
| 단말 → 방화벽 | 단말에서 ping 192.168.100.1 | 성공 (정책 허용 시) |
| 단말 → 사내 서버 | 단말에서 tracert <서버IP> | 홉 경로에 방화벽이 반드시 포함 |
| 사내 서버 → 단말 | 서버에서 tracert 172.20.10.50 | 홉 경로에 방화벽 포함 |
| 우회 경로 부재 | 방화벽 정책을 임시 DENY ALL | 전 통신 차단 — 뚫리면 설계 결함 |
| 세션 로그 | 방화벽 세션 테이블 조회 | 양방향 트래픽 모두 기록됨 |
표의 마지막에서 두 번째 항목 — “방화벽을 DENY ALL로 막았을 때 정말 다 끊기는가”. 이 테스트를 통과하지 못하면 어딘가 우회 경로가 살아있다는 뜻이고, 격리 설계는 실패한 것이다. 반드시 작업 창 안에서 수행할 것.
4. 전환(Cutover) 타임라인과 롤백
4-1. 타임라인
| 시점 | 작업 | 산출물 / 판정 |
|---|---|---|
| T-14d | 대상 VLAN 트래픽 프로파일링 (NetFlow / 방화벽 Learning) | 통신 대상 IP·포트 목록 |
| T-7d | 방화벽 정책 초안 작성 · 업무 부서 리뷰 | 정책 승인서 |
| T-3d | STEP 1~7 사전 작업 투입 (무영향) | VRF·Transit·FW 준비 완료 |
| T-3d | VRF → FW 도달성 사전 검증 | ping vrf 성공 |
| T-1d | 롤백 스크립트 작성 및 2인 교차 검토 | 롤백 파일 확정 |
| T-0 | STEP 8 일괄 투입 → STEP 9 → 검증 | 순단 구간 |
| T+5m | End-to-End 검증 완료 여부 판정 | 미복구 시 즉시 롤백 |
| T+1d | 방화벽 DENY 로그 검토 · 누락 정책 보완 | 정책 튜닝 |
| T+7d | 안정화 확인 후 임시 허용 정책 축소 | 최소권한 수렴 |
4-2. 롤백 스크립트
순서가 중요하다. SVI를 먼저 되돌리고 정적 경로를 제거해야 공백이 최소화된다.
! ① SVI를 Default VRF로 복귀 (양 스위치 동시)
interface Vlan900
no vrf member LEGACY_ZONE
no ip redirects
ip address 172.20.10.2/24
ip address 172.20.11.2/24 secondary
no ipv6 redirects
ip router ospf 100 area 0.0.0.1
hsrp version 2
hsrp 900
priority 110
preempt
timers 1 3
ip 172.20.10.1
ip 172.20.11.1 secondary
no shutdown
! ② 방화벽 향 정적 경로 제거
no ip route 172.20.10.0/24 192.168.100.12
no ip route 172.20.11.0/24 192.168.100.12
! ③ 재분배 해제 (선택 — 경로가 없으면 자동 철회되나 명시 정리 권장)
router ospf 100
no redistribute static route-map RM_REDIST_STATIC
! ④ 검증
show ip route 172.20.10.0
show hsrp brief
VLAN 910/920과 VRF 컨텍스트는 트래픽이 흐르지 않으면 무해하다. 남겨두면 재시도 시 사전 작업을 반복할 필요가 없다. 롤백 범위를 최소화하는 것도 실력이다.
5. 함정 Top 9
vrf member 입력 즉시 IP·HSRP·라우팅 설정 전소실. 한 줄씩 수동 입력하면 그 시간만큼 순단이 길어진다. 반드시 블록 단위 일괄 투입.out-of-state로 전량 드랍. 증상이 “간헐적 통신 불가”로 나타나 진단이 어렵다.ip x.x.x.x secondary HSRP VIP가 있었다면 함께 복원해야 한다. 누락 시 해당 대역만 조용히 죽는다.use-vrf 옵션 등). 미설정 시 재부팅한 단말부터 순차적으로 IP를 잃는다.ip pim·RP 도달성을 별도 설계해야 한다.management는 OOB 관리 전용, keepalive는 vPC 피어링크 감시용이다. 여기에 프로덕션 인터페이스를 넣으면 안 된다.show vrf LEGACY_ZONE interface— VLAN 900, 910 두 개가 모두 표시show ip route vrf LEGACY_ZONE— Connected 2개 + 정적 디폴트 1개, 그 외 없음show ip route 172.20.10.0— 정적(AD 1)이 Best, next-hop이 방화벽 outside- tracert 양방향 — 두 방향 모두 홉 경로에 방화벽 포함
- 방화벽 DENY ALL 테스트 — 전 통신 차단 확인 (우회 경로 부재 증명)
- HSRP — 전 그룹 Active/Standby 정상, Flapping 없음
- OSPF — 원격 L3 장비에서 격리 대역이 Type-2 External로 학습됨
6. 확장 관점 — 이 구조가 향하는 곳
| 키워드 | 연결 지점 |
|---|---|
| 매크로 세그멘테이션 | 본 작업은 Zero Trust 여정의 1단계다. “망 전체 평면 → 존 단위 분리”가 매크로, “워크로드 단위 분리”가 마이크로. 마이크로부터 시작하는 조직은 대부분 실패한다 |
| VXLAN EVPN | 동일한 VRF 개념이 L3VNI로 확장된다. 지금 설계한 VRF는 향후 EVPN 패브릭으로 이행할 때 그대로 Tenant VRF가 된다 — 재설계 없이 승계 가능 |
| SGT / TrustSec | IP·서브넷 기반 정책의 다음 단계. 태그 기반 정책으로 가면 VLAN 재설계 없이 정책 세분화가 가능해진다 |
| 인라인 대상 교체 | 방화벽 자리에 ZTNA 게이트웨이 / SWG / NDR 센서를 끼우는 변형이 늘고 있다. Transit 구조를 표준화해두면 교체가 설정 몇 줄로 끝난다 |
| 규제 대응 | ISMS-P·전자금융감독규정의 망분리·접근통제 항목에서 VRF 라우팅 테이블 분리 출력물은 강력한 증빙이다. 작업 시 캡처를 체계적으로 남겨둘 것 |
| EOS 자산 관리 | 격리는 응급처치이지 치료가 아니다. 격리 VRF에 들어간 단말 목록을 자산 폐기 로드맵과 연동해 관리하지 않으면 몇 년 뒤 격리망이 또 하나의 그림자 인프라가 된다 |
VRF 격리의 본질은 “취약 단말을 가둔 것”이 아니라 “통제 지점을 만든 것”이다. 방화벽이 인라인으로 들어간 순간부터 그 구간의 모든 통신이 로그로 남는다. 격리 이전에는 존재조차 몰랐던 통신 패턴이 드러나고, 그것이 다음 단계 보안 설계의 데이터가 된다.
📚 시리즈 구성
- 1편 · 설계편 — 왜 VRF인가 / 토폴로지 / 주소 설계
- 2편 · 구축편 — 설정 9단계 / 검증 / 전환·롤백 / 함정 (현재 글)
※ 본 글의 IP 주소, VLAN 번호, VRF 명칭, 인터페이스 명, 호스트명은 모두 예시값으로 치환하여 작성되었습니다.
