1편에서 하드웨어 선정과 USB 설치, 콘솔에서 관리 IP를 잡아 Web UI 접속 직전까지 다뤘습니다. 이번 편은 Web UI 첫 로그인 → 초기 설정 마법사 → VLAN 정의 → 인터페이스 할당까지, 한 대의 OPNsense를 여러 망(VLAN)으로 가르는 작업을 다룹니다. 이 편을 끝내면 각 망에 게이트웨이가 살아 있고 GUI 접속이 유지되는 안정 상태에 도달합니다.
이번 편의 목표
물리 NIC는 몇 개 안 되지만, 사무실에는 운영 서버·개발·직원 PC·전화·관리망처럼 성격이 다른 트래픽이 섞여 있습니다. 이걸 물리적으로 포트마다 나누면 NIC가 모자라고 배선도 지옥이 됩니다. 그래서 하나의 물리 포트(트렁크)에 여러 VLAN을 태그로 실어 보내고, OPNsense가 그걸 가상 인터페이스로 받아 각 망의 게이트웨이 역할을 하게 만듭니다.
이번 편의 작업 순서는 이렇습니다.
- Web UI 첫 로그인 + 초기 설정 마법사
- 설정 백업 받기 (작업 전 안전장치)
- IP/VLAN 설계 (먼저 종이 위에서 확정)
- VLAN 정의 (
Interfaces → Other Types → VLAN) - 인터페이스 할당 (
Interfaces → Assignments) - 각 VLAN 인터페이스에 IP(게이트웨이) 부여
- 임시 관리 LAN의 처리 방침
1. Web UI 첫 로그인과 초기 설정 마법사
1편에서 콘솔로 LAN IP를 잡았으니, 관리 PC에서 브라우저로 접속합니다.
https://10.0.91.1 (1편에서 설정한 관리 IP)
자체 서명 인증서라 보안 경고가 한 번 뜨는데 정상입니다. 통과하고 root / (설치 시 정한 비밀번호)로 로그인하면 초기 설정 마법사(Wizard)가 시작됩니다. 마법사에서 확인·입력할 항목은 다음과 같습니다.
- General Information: 호스트명(예:
OPNsense), 도메인(예:internal또는 사내 도메인), DNS 서버. 사내 DNS가 따로 있으면 그 주소를, 없으면 일단 공용 DNS(1.1.1.1 등)를 넣고 나중에 바꿔도 됩니다. - Time Server / Timezone: 시간대를
Asia/Seoul로. NTP 서버는 기본값(pool.ntp.org)을 두거나 사내 NTP로 바꿉니다. (NTP 세부 설정은 보안 플러그인 편에서 다시 다룹니다.) - WAN / LAN 설정: 이 단계는 마법사에서 건너뛰거나 기본값으로 두고, 뒤에서 인터페이스 할당으로 제대로 잡는 편이 깔끔합니다. (특히 VLAN 트렁크 구조는 마법사로 다 표현되지 않습니다.)
- Root Password: 이미 설치 때 정했으면 그대로 둡니다.
마법사를 끝내면 대시보드로 들어옵니다. 본격적인 작업은 여기서부터입니다.
2. 작업 전 백업 (안전장치)
인터페이스를 건드리는 작업은 자칫 본인 접속을 끊을 수 있습니다. 시작 전에 현재 설정을 내려받아 둡니다.
System → Configuration → Backups → Download configuration
파일명에 날짜를 붙여두면 좋습니다. 예: config-hq-2026-04-20-initial.xml. 이 백업은 작업이 꼬였을 때 되돌릴 수 있는 가장 확실한 수단입니다. (콘솔 메뉴의 13) Restore a backup으로도 복원할 수 있습니다.)
작업 도중 세션이 끊길 때를 대비해, 물리 콘솔(모니터+키보드 또는 IPMI) 접근 수단을 확보해두면 안전합니다. GUI가 끊겨도 콘솔로 들어가 인터페이스를 되돌릴 수 있습니다.
3. IP / VLAN 설계 — 먼저 종이 위에서
VLAN을 만들기 전에 번호 체계와 IP 대역을 먼저 확정해야 합니다. GUI에서 즉흥적으로 만들면 나중에 번호가 꼬여서 전부 다시 손대게 됩니다. 이 프로젝트에서 실제로 쓴 설계 원칙을 예로 들겠습니다.
VLAN 번호 체계
VLAN ID를 앞자리(역할) + 뒷자리(위치)로 표준화했습니다.
- 앞자리(역할):
1xx운영(Production),2xx스테이징,3xx개발,4xx사용자,5xx음성(전화),9xx관리 - 뒷자리(위치): 본사(HQ) =
10, 데이터센터(IDC) =20
그래서 110은 “운영+HQ”, 920은 “관리+IDC”로 ID만 봐도 역할과 위치가 읽힙니다.
VLAN 대장 (본사 기준)
| VLAN ID | 이름 | IP 대역 | 게이트웨이 | 용도 | DHCP |
|---|---|---|---|---|---|
| 110 | PRHQ | 10.0.11.0/24 | 10.0.11.1 | 본사 운영 서버 | ❌ 고정 |
| 210 | STG | 10.0.21.0/24 | 10.0.21.1 | 검증 서버 | ❌ 고정 |
| 310 | DEV | 10.0.31.0/24 | 10.0.31.1 | 개발 서버 | ✅ |
| 410 | USR | 192.168.1.0/24 | 192.168.1.1 | 직원 PC | ✅ |
| 510 | TEL | 192.168.0.0/24 | 192.168.0.1 | IP 전화 | ✅ |
| 910 | MGHQ | 10.0.91.0/24 | 10.0.91.1 | 본사 관리망 | ❌ 고정 |
DHCP 정책과 IP 배분 규칙(게이트웨이
.1, 스위치.2, 서버·VM 구간 등)은 다음 편(DHCP·방화벽)에서 자세히 다룹니다. 이번 편에서는 “각 VLAN의 게이트웨이.1을 OPNsense에 부여한다”까지만 진행합니다.
트렁크 구조 (핵심 개념)
물리 포트 하나(igb0)를 트렁크로 쓰고, 그 위에 VLAN 6개를 태그로 얹습니다. OPNsense는 이 트렁크에서 들어오는 태그된 트래픽을 각각 가상 인터페이스(vlan0.110, vlan0.910 …)로 받아 게이트웨이 역할을 합니다.
igb0 (물리 트렁크 포트) ──케이블── L2 스위치 트렁크 포트(예: 48번)
├─ Untagged 트래픽 → LAN 인터페이스 (임시 관리용, 뒤에서 설명)
├─ Tagged VLAN 110 → PRHQ (10.0.11.1)
├─ Tagged VLAN 210 → STG (10.0.21.1)
├─ Tagged VLAN 310 → DEV (10.0.31.1)
├─ Tagged VLAN 410 → USR (192.168.1.1)
├─ Tagged VLAN 510 → TEL (192.168.0.1)
└─ Tagged VLAN 910 → MGHQ (10.0.91.1)
igb5 (별도 물리 포트) → WAN (인터넷)
여기서 중요한 점 하나. 트렁크 포트라고 해서 Untagged 트래픽이 사라지는 게 아닙니다. 태그 없는 트래픽은 그대로 물리 인터페이스(LAN)가 받습니다. 이 Untagged 채널이 뒤에서 다룰 “임시 관리 LAN”의 정체입니다.
스위치 쪽 트렁크 설정(어느 포트를 트렁크로 만들고 어떤 VLAN을 tagged로 실을지)은 사용하는 L2 스위치에 따라 다릅니다. 이 시리즈에서는 OPNsense 쪽 설정에 집중하고, 스위치 트렁크 구성은 별도 편에서 다룹니다. 원칙만 말하면, OPNsense와 연결되는 스위치 포트에 위 6개 VLAN을 모두 tagged로 실으면 됩니다.
4. VLAN 정의
이제 GUI에서 VLAN을 만듭니다.
Interfaces → Other Types → VLAN → + (Add)
VLAN 하나당 다음을 입력합니다.
| 항목 | 값 (PRHQ 예시) | 설명 |
|---|---|---|
| Parent interface | igb0 | 트렁크로 쓸 물리 포트. 6개 VLAN 모두 동일하게 igb0 |
| VLAN tag | 110 | VLAN ID |
| VLAN priority | 0 (기본) | 보통 그대로 |
| Description | VLAN_110_PRHQ | 식별용 이름(권장). 나중에 인터페이스·룰에서 이 이름으로 보임 |
같은 방식으로 6개를 모두 만듭니다.
| Parent | VLAN tag | Description |
|---|---|---|
| igb0 | 110 | VLAN_110_PRHQ |
| igb0 | 210 | VLAN_210_STG |
| igb0 | 310 | VLAN_310_DEV |
| igb0 | 410 | VLAN_410_USR |
| igb0 | 510 | VLAN_510_TEL |
| igb0 | 910 | VLAN_910_MGHQ |
다 만들면 VLAN 목록에 vlan0.110 ~ vlan0.910처럼 디바이스명이 생깁니다. 이 시점에서는 아직 “정의”만 했을 뿐, 인터페이스로 할당되지 않아 IP도 없고 동작도 안 합니다.
5. 인터페이스 할당
정의한 VLAN을 실제 인터페이스로 올립니다.
Interfaces → Assignments
화면 하단의 “New interface” 드롭다운에서 방금 만든 VLAN 디바이스(vlan0.110 등)를 골라 + 버튼으로 추가합니다. 추가하면 OPT1, OPT2 … 같은 이름이 붙는데, 들어가서 알아보기 쉬운 이름으로 바꿉니다.
할당 결과는 이런 모습이 됩니다.
| 인터페이스 | 디바이스 | 역할 |
|---|---|---|
| WAN | igb5 | 인터넷 (별도 물리 포트) |
| LAN | igb0 | Untagged(임시 관리용) — 뒤에서 설명 |
| VLAN_110_PRHQ | vlan0.110 | 운영 서버 게이트웨이 |
| VLAN_210_STG | vlan0.210 | 검증 |
| VLAN_310_DEV | vlan0.310 | 개발 |
| VLAN_410_USR | vlan0.410 | 직원 |
| VLAN_510_TEL | vlan0.510 | 전화 |
| VLAN_910_MGHQ | vlan0.910 | 관리망 게이트웨이 |
6. 각 VLAN 인터페이스에 IP(게이트웨이) 부여
이제 각 VLAN 인터페이스를 켜고 게이트웨이 IP를 줍니다. 인터페이스 메뉴(예: Interfaces → VLAN_910_MGHQ)로 들어가서:
| 항목 | 값 (MGHQ 예시) |
|---|---|
| Enable Interface | ✅ 체크 |
| IPv4 Configuration Type | Static IPv4 |
| IPv4 address | 10.0.91.1 / 24 |
| IPv6 | None (필요 시 별도) |
저장(Save) → 상단 노란 바에서 Apply.
6개 VLAN 각각에 대해 대장의 게이트웨이 IP(.1)를 부여합니다. PRHQ는 10.0.11.1, STG는 10.0.21.1 … 식입니다.
⚠️ 주의: VLAN 인터페이스에 IP를 부여하고 Apply하면 OPNsense가 방화벽 룰을 재컴파일합니다. WAN이 이미 살아 있는 운영 상태에서 이 작업을 하면, 재컴파일 순간 외부 연결이 잠깐 흔들릴 수 있습니다(이 프로젝트에서도 VLAN IP Apply 직후 인터넷이 일시적으로 끊긴 적이 있습니다). 가능하면 WAN 절체 전, 또는 점검 시간에 작업하세요.
부여가 끝나면 각 VLAN 게이트웨이가 살아납니다. 같은 L2(해당 VLAN access 포트)에 PC를 두면 10.0.91.1 같은 게이트웨이로 ping이 되고, 관리망(MGHQ) 인터페이스로 GUI 접속도 됩니다.
7. 임시 관리 LAN(Untagged)의 정체와 처리
이 부분은 많이 헷갈리는 지점이라 따로 정리합니다.
Interfaces → Assignments를 보면 LAN(igb0)이 여전히 있고, 보통 192.168.x.1 같은 IP가 박혀 있습니다. “VLAN 트렁크로 쓰는 igb0인데 왜 여기 또 IP가 있지?” 싶을 수 있습니다.
이유는 앞서 설명한 대로입니다. 트렁크 포트에서 태그 없는(Untagged) 트래픽을 받는 게 바로 이 LAN 인터페이스입니다. 트렁크라고 Untagged가 사라지는 게 아닙니다.
이 임시 LAN은 보통 이런 용도로 남깁니다.
- 초기 구축용 작업 채널: 상위 방화벽(SonicWall 등)이 아직 WAN을 쥐고 있어 OPNsense가 인터넷에 못 붙는 동안, 관리 PC를 igb0의 Untagged 포트에 직접 꽂아 GUI에 접속해 작업합니다.
- 비상 복구 백도어: 관리망(MGHQ) 라우팅이 깨지거나 VPN이 죽었을 때, 마지막으로 직접 케이블을 꽂아 들어갈 수 있는 경로.
그래서 구축 중에는 이 LAN을 절대 건드리지 마세요. 지금 GUI에 접속한 경로 자체가 이 LAN일 수 있고, 비우거나 바꾸면 즉시 접속이 끊깁니다. 또 여기에 VLAN과 같은 대역(예: 10.0.91.1)을 넣으면 MGHQ와 IP가 충돌합니다.
언제 정리하나? WAN 절체가 끝나고 관리 경로가 MGHQ(또는 VPN)로 안정화된 뒤입니다. 그 시점에는 임시 LAN을 비활성화하거나 삭제해 관리 경로를 단일화하는 게 깔끔합니다. (이 정리는 절체 편에서 다룹니다.)
이번 편 체크포인트
여기까지 하면 도달하는 상태는 이렇습니다.
- 물리 포트
igb0하나에 VLAN 6개가 트렁크로 올라가 있고, 각 VLAN이 가상 인터페이스로 할당됨 - 각 VLAN 인터페이스에 게이트웨이 IP(
.1)가 부여되어 살아 있음 - WAN은 별도 물리 포트(
igb5)에 할당됨 - 임시 관리 LAN(Untagged)은 비상 경로로 그대로 유지
- 관리망(MGHQ) 게이트웨이로 GUI 접속이 유지되는 안정 상태
아직 방화벽 룰이 본격적으로 들어가기 전이라, 망 간 통신은 기본 정책(또는 임시 허용)에 따라 열려 있을 수 있습니다. 이걸 어떻게 잠그고 어떤 순서로 좁힐지가 다음 편의 주제입니다.
다음 편 예고
03. OPNsense 초기 설정: DHCP와 방화벽 룰 — Kea DHCP로 어떤 망에 DHCP를 켜고 끌지(서버는 고정, 사람은 유동), Alias로 IP 대장을 만들어 사람이 읽을 수 있는 방화벽 룰을 쓰는 법, 그리고 “관리망 먼저 → 사용자망 → 서버망” 순서로 망을 격리해가는 방화벽 설계를 다룹니다.