목차
- 홈랩 네트워크, 이대로 괜찮은가요?
- Proxmox 네트워크 핵심 개념 먼저 짚고 가기
- Linux Bridge(리눅스 브릿지)란?
- VLAN(Virtual LAN, 가상 로컬 네트워크)이란?
- nftables란?
- Proxmox VLAN 설정: VLAN-aware Bridge 구성하기
- 시나리오 설명
- 1단계: /etc/network/interfaces 설정
- 2단계: 설정 적용
- 3단계: VM에 VLAN 태그 설정
- Proxmox 브릿지 고급 설정: 다중 브릿지 구성
- NAT 브릿지 추가 (인터넷 연결 없는 격리망)
- nftables 방화벽 설정: Proxmox 방화벽 제대로 활용하기
- 방법 1: Proxmox 내장 방화벽 (GUI/설정 파일)
- Proxmox 방화벽 활성화
- 방화벽 규칙 파일 직접 편집
- 방법 2: nftables 직접 설정 (고급 사용자용)
- ⚠️ 트러블슈팅: 실제로 겪은 문제들
- 문제 1: VLAN 설정 후 VM 네트워크 먹통
- 문제 2: nftables 규칙 적용 후 Proxmox GUI 접근 불가
- 문제 3: VM 간 통신이 방화벽 규칙과 무관하게 됨
- ✅ 설정 검증: 제대로 됐는지 확인하기
- VLAN 설정 검증
- 방화벽 규칙 검증
- VLAN 간 격리 검증
- 자주 묻는 질문 (FAQ)
- Q. Proxmox 방화벽과 nftables를 동시에 써도 되나요?
- Q. VLAN 설정 시 업스트림 스위치도 설정해야 하나요?
- Q. VM이 많아지면 방화벽 규칙 관리가 힘들지 않나요?
- 마무리: 네트워크 분리, 귀찮아도 꼭 해야 합니다
홈랩 네트워크, 이대로 괜찮은가요?
솔직히 말씀드리면, 저도 처음엔 Proxmox VE를 설치하고 그냥 기본 브릿지 하나에 VM 다 때려넣고 썼거든요. "뭐, 집에서 쓰는 건데 보안이 무슨 상관이야" 싶었죠. 근데 어느 날 홈랩에서 돌리던 개발용 컨테이너 하나가 이상한 트래픽을 뿜는 걸 발견했을 때... 그때부터 제대로 네트워크를 나눠야겠다는 생각이 들었습니다.
Proxmox 네트워크 설정을 제대로 이해하면 VM/컨테이너별로 네트워크를 격리하고, 불필요한 트래픽을 차단하고, 관리 인터페이스를 보호할 수 있어요. 오늘은 Proxmox VE 8.2 기준으로 VLAN 설정, 브릿지 구성, 그리고 nftables 방화벽까지 한 번에 정리해 드릴게요. 꽤 긴 글이 될 것 같지만, 차근차근 따라오시면 충분히 이해하실 수 있을 겁니다.
▲ 오늘 구성할 Proxmox 네트워크 전체 구조입니다. VLAN별로 트래픽을 분리하고 nftables로 방화벽 규칙을 적용하는 흐름을 한눈에 볼 수 있어요.
Proxmox 네트워크 핵심 개념 먼저 짚고 가기
설정 들어가기 전에 개념을 잡아두는 게 중요해요. 저도 처음엔 브릿지랑 본드(Bond)랑 VLAN이 뭐가 다른지 헷갈려서 삽질을 꽤 했거든요.
Linux Bridge(리눅스 브릿지)란?
쉽게 말해, 소프트웨어로 만든 스위치입니다. Proxmox에서 VM이나 컨테이너를 만들면 각각의 가상 NIC(네트워크 인터페이스 카드)가 이 브릿지에 연결되는 구조예요. 물리 스위치의 포트처럼 동작한다고 보시면 됩니다.
VLAN(Virtual LAN, 가상 로컬 네트워크)이란?
하나의 물리 네트워크를 논리적으로 분리하는 기술이에요. 예를 들어 관리용 VM, 개발용 VM, IoT 장비를 같은 물리 스위치에 연결해도 VLAN ID로 완전히 다른 네트워크처럼 동작하게 만들 수 있습니다. Proxmox 8.2에서는 VLAN-aware bridge(VLAN 인식 브릿지) 방식을 권장하고 있어요.
nftables란?
기존 iptables를 대체하는 리눅스 방화벽 프레임워크입니다. Proxmox VE 7.x 이후부터 내부적으로 nftables를 사용하고 있고, 8.x에서는 더 완성도 있게 통합됐어요. 문법이 처음엔 낯설지만, 익숙해지면 iptables보다 훨씬 직관적이더라고요.
| 구성 요소 | 역할 | 비고 |
|---|---|---|
| Linux Bridge | VM/CT 간 L2 연결 (소프트웨어 스위치) | vmbr0, vmbr1 등으로 명명 |
| VLAN | 논리적 네트워크 분리 (태그 기반) | 802.1Q 표준, ID 1~4094 |
| Bond | 물리 NIC 이중화 / 대역폭 확장 | active-backup, LACP 등 |
| nftables | 호스트 및 VM 트래픽 방화벽 | iptables 대체, Proxmox 통합 |
Proxmox VLAN 설정: VLAN-aware Bridge 구성하기
이제 본격적으로 설정을 시작해 볼게요. 제가 실제로 운영 중인 홈랩 구성을 기반으로 설명드리겠습니다.
시나리오 설명
- VLAN 10: 관리 네트워크 (Proxmox 관리 인터페이스, 네트워크 장비)
- VLAN 20: 서버 네트워크 (웹서버, DB 등 서비스 VM)
- VLAN 30: 개발/테스트 네트워크 (개발 VM, 컨테이너)
- VLAN 99: IoT/비신뢰 네트워크 (외부 접근 허용 최소화)
1단계: /etc/network/interfaces 설정
Proxmox의 네트워크 설정은 /etc/network/interfaces 파일로 관리됩니다. GUI에서도 설정할 수 있지만, 파일을 직접 편집하는 게 더 정확하고 빠르더라고요.
# 기존 설정 백업 먼저!
cp /etc/network/interfaces /etc/network/interfaces.bak
# 편집
nano /etc/network/interfaces
아래 내용으로 설정합니다. 물리 NIC 이름은 환경마다 다를 수 있으니 ip link show로 먼저 확인하세요.
auto lo
iface lo inet loopback
# 물리 NIC (업스트림 스위치와 연결되는 트렁크 포트)
auto enp3s0
iface enp3s0 inet manual
# VLAN-aware Bridge (VLAN 인식 브릿지)
auto vmbr0
iface vmbr0 inet static
address 192.168.10.100/24 # VLAN 10 (관리망) IP
gateway 192.168.10.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes # 핵심! VLAN 인식 활성화
bridge-vids 2-4094 # 허용할 VLAN ID 범위
# VLAN 인터페이스 (호스트가 각 VLAN에 직접 접근할 때 필요)
auto vmbr0.20
iface vmbr0.20 inet static
address 192.168.20.1/24
auto vmbr0.30
iface vmbr0.30 inet static
address 192.168.30.1/24
auto vmbr0.99
iface vmbr0.99 inet static
address 192.168.99.1/24
⚠️ 중요! bridge-vlan-aware yes를 설정하면 기존에 VLAN 없이 연결된 VM들이 통신이 끊길 수 있어요. 반드시 각 VM의 네트워크 설정에서 VLAN 태그를 지정해 줘야 합니다.
2단계: 설정 적용
# 네트워크 재시작 (원격 접속 중이라면 주의!)
ifreload -a
# 또는 재부팅
reboot
💡 팁: 원격으로 작업 중이라면 ifreload -a가 더 안전합니다. 그래도 혹시 모르니 콘솔 접근이 가능한 상태에서 작업하는 걸 강력 추천드려요. 저도 한 번 원격이 끊겨서 IDC까지 달려간 적 있거든요.
3단계: VM에 VLAN 태그 설정
VM 설정에서 네트워크 장치를 추가할 때 VLAN Tag를 지정합니다.
# CLI로 VM 네트워크 설정 변경 (VM ID 101, VLAN 20 할당)
qm set 101 --net0 virtio,bridge=vmbr0,tag=20
# 컨테이너(LXC)의 경우
pct set 201 --net0 name=eth0,bridge=vmbr0,tag=30,ip=192.168.30.10/24,gw=192.168.30.1
▲ Proxmox GUI에서 VM 네트워크 설정 시 VLAN Tag 항목에 VLAN ID를 입력하면 됩니다. bridge-vlan-aware 설정이 되어 있어야 이 옵션이 동작해요.
Proxmox 브릿지 고급 설정: 다중 브릿지 구성
VLAN-aware 브릿지 하나로 대부분 해결되지만, 경우에 따라 브릿지를 여러 개 나누는 게 더 나을 때도 있어요. 예를 들어 완전히 격리된 내부 네트워크(외부 연결 없는 NAT 망)가 필요할 때죠.
NAT 브릿지 추가 (인터넷 연결 없는 격리망)
# /etc/network/interfaces에 추가
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1/24
bridge-ports none # 물리 NIC 없음 = 완전 격리
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
이렇게 하면 vmbr1에 연결된 VM들은 인터넷은 되지만(NAT를 통해), 외부에서 직접 접근은 불가능한 구조가 됩니다. 개발/테스트 환경에 딱이에요.
nftables 방화벽 설정: Proxmox 방화벽 제대로 활용하기
자, 이제 핵심 중의 핵심입니다. Proxmox 방화벽 설정인데요, 사실 Proxmox에는 GUI 기반의 자체 방화벽 기능이 있고, 이게 내부적으로 nftables를 사용해요. 두 가지 방법을 모두 알아두는 게 좋습니다.
방법 1: Proxmox 내장 방화벽 (GUI/설정 파일)
Proxmox 방화벽은 세 가지 레벨로 동작합니다.
- Datacenter 레벨: 클러스터 전체에 적용되는 공통 규칙 (
/etc/pve/firewall/cluster.fw) - Host 레벨: Proxmox 호스트 자체에 적용 (
/etc/pve/nodes/[노드명]/host.fw) - VM/CT 레벨: 개별 가상머신/컨테이너에 적용 (
/etc/pve/firewall/[VMID].fw)
Proxmox 방화벽 활성화
# 방화벽 설정 파일 위치 확인
ls /etc/pve/firewall/
# 클러스터 방화벽 설정
cat /etc/pve/firewall/cluster.fw
GUI에서는 Datacenter → Firewall → Options에서 Enable을 체크하면 됩니다. 호스트별로도 같은 방법으로 활성화할 수 있어요.
방화벽 규칙 파일 직접 편집
# /etc/pve/firewall/cluster.fw 예시
[OPTIONS]
enable: 1
policy_in: DROP # 기본 인바운드 정책: 차단
policy_out: ACCEPT # 기본 아웃바운드 정책: 허용
[RULES]
# Proxmox 웹 GUI 접근 (관리망에서만)
IN ACCEPT -source 192.168.10.0/24 -p tcp --dport 8006 -log warning
# SSH 접근 (관리망에서만)
IN ACCEPT -source 192.168.10.0/24 -p tcp --dport 22 -log warning
# ICMP (ping) 허용
IN ACCEPT -p icmp
# 이미 맺어진 연결 허용
IN ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED
방법 2: nftables 직접 설정 (고급 사용자용)
Proxmox 내장 방화벽으로 커버 안 되는 복잡한 규칙이 필요할 때는 nftables를 직접 건드려야 합니다. 근데 여기서 주의할 점! Proxmox가 자체 방화벽을 관리하기 때문에, 직접 nftables 규칙을 추가하면 충돌이 날 수 있어요.
그래서 권장하는 방법은 custom nftables 설정 파일을 별도로 만드는 겁니다.
# /etc/nftables.conf 에 커스텀 규칙 추가
nano /etc/nftables.conf
#!/usr/sbin/nft -f
# 기존 규칙 초기화
flush ruleset
table inet filter {
# 체인(chain): 패킷 처리 흐름 정의
chain input {
type filter hook input priority 0; policy drop;
# 루프백 인터페이스 허용
iif lo accept
# 이미 맺어진 연결 및 관련 트래픽 허용
ct state established,related accept
# ICMP 허용 (ping 등)
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# 관리망(VLAN 10)에서 SSH 허용
iifname "vmbr0.10" tcp dport 22 accept
# 관리망에서 Proxmox 웹 GUI 허용
iifname "vmbr0.10" tcp dport 8006 accept
# 나머지는 로그 남기고 차단
log prefix "[nft-drop] " limit rate 5/minute
drop
}
chain forward {
type filter hook forward priority 0; policy drop;
# 이미 맺어진 연결 허용
ct state established,related accept
# VLAN 20 (서버망) → 인터넷 허용
iifname "vmbr0.20" oifname "vmbr0" accept
# VLAN 30 (개발망) → 인터넷 허용
iifname "vmbr0.30" oifname "vmbr0" accept
# VLAN 간 통신 차단 (보안 격리)
# 개발망 → 서버망 차단
iifname "vmbr0.30" oifname "vmbr0.20" drop
# IoT망 → 다른 VLAN 차단
iifname "vmbr0.99" drop
}
chain output {
type filter hook output priority 0; policy accept;
}
}
# NAT 테이블 (vmbr1 사용 시)
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
oifname "vmbr0" masquerade
}
}
# nftables 서비스 활성화 및 시작
systemctl enable nftables
systemctl start nftables
# 규칙 적용 확인
nft list ruleset
# 특정 테이블만 확인
nft list table inet filter
⚠️ 경고: Proxmox 내장 방화벽과 nftables를 동시에 사용하면 규칙이 충돌할 수 있습니다. 둘 중 하나만 선택하거나, Proxmox 방화벽을 비활성화한 후 nftables를 직접 관리하는 방식을 권장합니다. 저는 단순한 환경에서는 Proxmox 내장 방화벽만 쓰고, 복잡한 규칙이 필요할 때는 nftables 직접 설정을 사용하고 있어요.
▲ nftables 방화벽 규칙을 적용했을 때 VLAN 간 트래픽 허용/차단 흐름입니다. IoT망(VLAN 99)은 다른 VLAN으로의 접근이 완전히 차단됩니다.
⚠️ 트러블슈팅: 실제로 겪은 문제들
설정하다 보면 분명히 막히는 부분이 생기거든요. 제가 겪은 것들 공유합니다.
문제 1: VLAN 설정 후 VM 네트워크 먹통
증상: bridge-vlan-aware 활성화 후 기존 VM들이 네트워크가 안 됨
원인: VLAN-aware 브릿지에서는 VLAN 태그가 없는 트래픽이 기본적으로 차단됩니다.
해결: 각 VM 네트워크 설정에 VLAN 태그를 추가하거나, 태그 없이 쓰고 싶다면 bridge-pvid(포트 VLAN ID)를 설정하세요.
# 특정 브릿지 포트의 PVID 확인
bridge vlan show
# VM 포트에 PVID 설정 (태그 없는 트래픽을 VLAN 20으로)
bridge vlan add dev vmbr0 vid 20 pvid untagged
문제 2: nftables 규칙 적용 후 Proxmox GUI 접근 불가
증상: nftables 설정 후 8006 포트로 접근이 안 됨
원인: input 체인의 기본 정책이 drop인데, 8006 포트 허용 규칙이 잘못된 인터페이스에 적용됨
해결: 인터페이스 이름을 ip link show로 정확히 확인하고, 임시로 모든 8006 트래픽을 허용한 뒤 규칙을 다듬으세요.
# 임시로 8006 전체 허용 (디버깅용)
nft add rule inet filter input tcp dport 8006 accept
# 현재 적용된 규칙 확인
nft list chain inet filter input
# 인터페이스 이름 확인
ip link show | grep -E "^[0-9]+:"
bridge vlan show
문제 3: VM 간 통신이 방화벽 규칙과 무관하게 됨
증상: forward 체인에서 차단했는데 VM끼리 통신이 됨
원인: 같은 브릿지 내 VM 간 트래픽은 L2(2계층)에서 바로 처리되어 forward 체인을 거치지 않을 수 있음
해결: 브릿지에서 nf_call_iptables(또는 nftables)를 활성화해야 합니다.
# 브릿지 트래픽이 netfilter를 통과하도록 설정
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
# 영구 적용 (/etc/sysctl.conf)
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
sysctl -p
✅ 설정 검증: 제대로 됐는지 확인하기
설정을 다 했으면 검증이 필수입니다. "됐겠지"하고 넘어갔다가 나중에 보안 구멍 발견하면 더 힘들거든요.
VLAN 설정 검증
# 브릿지 VLAN 상태 확인
bridge vlan show
# 예상 출력:
# port vlan ids
# vmbr0 1 PVID Egress Untagged
# 10
# 20
# 30
# 99
# 각 VLAN 인터페이스 IP 확인
ip addr show vmbr0.20
ip addr show vmbr0.30
# VLAN 10 (관리망) VM에서 VLAN 20 (서버망) VM으로 ping 테스트
# 허용된 경로라면 응답이 와야 함
ping -c 4 192.168.20.10
방화벽 규칙 검증
# 현재 nftables 규칙 전체 출력
nft list ruleset
# 패킷 카운터 확인 (규칙이 실제로 매칭되는지)
nft list ruleset | grep -A2 "counter"
# 로그 확인 (차단된 패킷)
journalctl -f | grep "nft-drop"
# 특정 포트 접근 테스트
nc -zv 192.168.10.100 8006 # 성공해야 함
nc -zv 192.168.10.100 22 # 성공해야 함
nc -zv 192.168.10.100 80 # 차단되어야 함 (규칙 없으면)
VLAN 간 격리 검증
# IoT망 VM(192.168.99.x)에서 서버망 VM(192.168.20.x)으로 ping
# 차단 규칙이 있다면 응답 없어야 함
ping -c 4 192.168.20.10 # 타임아웃이 나야 정상!
# 개발망 VM에서 서버망으로 접근 시도
ping -c 4 192.168.20.10 # 마찬가지로 차단되어야 함
🎉 모든 테스트가 예상대로 동작한다면 설정 완료입니다! 처음 이 구성을 완성했을 때 진짜 뿌듯했거든요. 네트워크가 깔끔하게 정리되는 느낌이랄까요.
▲ 설정 완료 후 각 VLAN 간 통신 허용/차단 검증 결과입니다. 초록색은 허용, 빨간색은 차단을 의미하며 설계한 대로 정확히 동작하는 것을 확인할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. Proxmox 방화벽과 nftables를 동시에 써도 되나요?
권장하지 않습니다. Proxmox 내장 방화벽이 활성화되면 자체적으로 nftables 규칙을 생성하는데, 여기에 커스텀 nftables 설정을 추가하면 규칙 순서와 충돌 문제가 생길 수 있어요. 간단한 환경이라면 Proxmox 내장 방화벽만, 복잡한 규칙이 필요하다면 내장 방화벽을 끄고 nftables를 직접 관리하는 것을 추천합니다.
Q. VLAN 설정 시 업스트림 스위치도 설정해야 하나요?
네, 반드시 필요합니다. Proxmox와 연결된 스위치 포트는 Trunk 포트로 설정하고, 사용할 VLAN ID들을 허용해야 합니다. 관리형 스위치(Managed Switch)가 없다면 VLAN 기능을 사용하기 어렵습니다.
Q. VM이 많아지면 방화벽 규칙 관리가 힘들지 않나요?
맞아요, 그래서 IP set(IP 집합)과 Security Group(보안 그룹) 기능을 활용하는 게 좋습니다. Proxmox 내장 방화벽에서 IP set으로 그룹을 만들어두면 규칙 관리가 훨씬 수월해집니다.
마무리: 네트워크 분리, 귀찮아도 꼭 해야 합니다
처음에 이야기했던 것처럼, 저도 처음엔 "홈랩인데 뭘 그렇게까지" 싶었어요. 근데 막상 제대로 구성해 놓고 나니까, 어떤 VM에 문제가 생겨도 다른 VM이나 호스트에 영향이 없으니까 마음이 편하더라고요. 특히 외부에서 접근 가능한 서비스를 운영할 때는 정말 필수입니다.
오늘 다룬 내용을 정리하면:
- ✅ VLAN-aware Bridge로 논리적 네트워크 분리
- ✅ 다중 브릿지로 완전 격리 NAT 망 구성
- ✅ Proxmox 내장 방화벽 또는 nftables 직접 설정으로 트래픽 제어
- ✅ VLAN 간 격리 검증으로 설정 완료 확인
다음에는 Proxmox 클러스터 구성과 고가용성(HA, High Availability) 설정에 대해 다룰 예정이에요. 네트워크 기반이 잘 잡혀 있어야 클러스터도 안정적으로 운영할 수 있거든요. 궁금한 점이나 다른 경험 있으신 분은 댓글로 공유해 주세요!
💡 다음 단계 제안: 이 설정을 기반으로 SDN(Software Defined Networking) 기능도 탐구해 보세요. Proxmox 8.x에서 SDN 기능이 많이 발전했는데, VXLAN 오버레이 네트워크 같은 더 고급 구성도 가능합니다. 이전 글에서 다룬 Proxmox 기본 설치 가이드와 함께 보시면 더 도움이 될 거예요.
'IT > Proxmox' 카테고리의 다른 글
| [Proxmox] LXC 컨테이너 심화 활용: Docker 연동 및 성능 최적화 (Proxmox VE 9.1) (1) | 2026.05.10 |
|---|---|
| [Proxmox] HA 클러스터 구축 및 트러블슈팅: 고가용성 완벽 가이드 (1) | 2026.05.10 |
| [Proxmox] Proxmox HA 클러스터: 고가용성 구축 및 장애 복구 전략 (0) | 2026.05.09 |
| [Proxmox] Proxmox VE 설치 후 필수 초기 설정: 8단계 완벽 가이드 (0) | 2026.05.03 |
| [Proxmox VE] VM 백업 및 복구 완벽 가이드: 데이터 손실 방지 전략 (1) | 2026.05.01 |
| [Proxmox] Proxmox 백업 자동화 완벽 가이드: PBS 및 스케줄 백업 활용 (0) | 2026.04.26 |