Proxmox VE Network Configuration
VM을 만들기 전에 네트워크가 먼저다 — Linux Bridge, VLAN, Bonding, SDN
📌 이 글의 목적
Proxmox VE의 네트워크는 Linux 네트워크 그 자체임. VMware의 vSwitch/dvSwitch와 개념은 같지만 구현 방식이 다르고, Linux 네트워크 지식이 곧 Proxmox 네트워크 역량이 됨.
이 글을 읽고 나면:
- Linux Bridge 기반 네트워크 구조를 이해하고 설정할 수 있음
- VLAN으로 네트워크를 분리할 수 있음
- NIC Bonding으로 이중화/대역폭을 확보할 수 있음
- SDN(Software Defined Networking)의 개념과 활용 범위를 파악할 수 있음
왜 스토리지보다 네트워크가 먼저인가
NFS, iSCSI 같은 공유 스토리지는 네트워크를 통해 연결됨. Ceph 분산 스토리지도 전용 네트워크가 필요함. VM을 만들 때 "어떤 브릿지에 연결할 것인가"를 선택해야 하므로, 브릿지 구조가 먼저 잡혀 있어야 함.
1. Proxmox 네트워크 기초
1.1 핵심 개념
Proxmox 네트워크의 3가지 핵심 요소:
| 요소 | 역할 | VMware 대응 |
|---|---|---|
| 물리 NIC | 외부 네트워크 연결 | Physical NIC (vmnic) |
| Linux Bridge | VM/CT를 네트워크에 연결하는 가상 스위치 | vSwitch / dvSwitch |
| Bond | 여러 NIC를 묶어 이중화/대역폭 확보 | NIC Teaming |
| VLAN interface | 트래픽 분리 | Port Group with VLAN ID |
1.2 설정 파일
Proxmox의 네트워크 설정은 Debian 표준을 따름:
# 메인 설정 파일
/etc/network/interfaces
# 설정 적용 명령어
ifreload -a # 서비스 중단 없이 적용 (권장)
systemctl restart networking # 전체 재시작 (위험 — 네트워크 끊김)
⚠️ 네트워크 설정 변경 시
ifreload -a를 사용함.systemctl restart networking은 모든 인터페이스를 내렸다 올리므로 SSH 연결이 끊기고 VM 네트워크에도 영향을 줄 수 있음.
1.3 네트워크 도구
Proxmox에서 자주 사용하는 명령어:
| 명령어 | 용도 | 예시 |
|---|---|---|
ip addr | IP 주소 확인 | ip addr show vmbr0 |
ip link | 인터페이스 상태 | ip link show |
ip route | 라우팅 테이블 | ip route show |
bridge link | 브릿지 포트 확인 | bridge link show |
bridge fdb | MAC 주소 테이블 | bridge fdb show |
ethtool | NIC 상세 정보 | ethtool eno1 |
tcpdump | 패킷 캡처 | tcpdump -i vmbr0 -n |
ss | 소켓 상태 | ss -tlnp |
cat /proc/net/bonding/bond0 | Bonding 상태 | — |
2. Linux Bridge
2.1 개념
Linux Bridge는 소프트웨어로 구현된 L2 스위치임. 물리 NIC를 브릿지 포트로 연결하면, 브릿지에 연결된 VM/CT가 물리 네트워크와 직접 통신할 수 있음.
동작 원리:
- 물리 NIC
eno1은 IP를 갖지 않음 (inet manual) vmbr0브릿지가 호스트 IP를 가짐- VM이 생성되면
tap인터페이스가 자동으로 브릿지에 연결됨 - CT가 생성되면
veth인터페이스가 연결됨 - 브릿지는 MAC 주소 학습으로 프레임을 적절한 포트로 전달함
2.2 기본 브릿지 설정
설치 시 자동으로 생성되는 기본 설정:
# /etc/network/interfaces
auto lo
iface lo inet loopback
# 물리 NIC — IP 없음 (브릿지 포트로만 사용)
iface eno1 inet manual
# Linux Bridge — 호스트 IP 할당
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
| 파라미터 | 설명 | 값 |
|---|---|---|
bridge-ports | 브릿지에 연결할 물리 인터페이스 | eno1 |
bridge-stp | Spanning Tree Protocol | off (단일 브릿지면 불필요) |
bridge-fd | Forwarding Delay | 0 (STP off면 0) |
2.3 여러 브릿지 구성
용도별로 브릿지를 분리하는 것이 일반적임:
# /etc/network/interfaces — 2개 브릿지 예시
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
# Management + VM 서비스 네트워크
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
# 스토리지 전용 네트워크 (게이트웨이 없음)
auto vmbr1
iface vmbr1 inet static
address 10.10.10.100/24
bridge-ports eno2
bridge-stp off
bridge-fd 0
# MTU 9000 (점보 프레임 — 스토리지 성능 향상)
mtu 9000
💡 스토리지 네트워크에는 게이트웨이를 설정하지 않음. 게이트웨이는 시스템 전체에 하나만 설정하며, 관리 네트워크(vmbr0)에만 둠. 스토리지 트래픽은 같은 서브넷 내에서만 통신하면 됨.
2.4 Internal Bridge (NAT)
물리 NIC 없이 VM 간 내부 통신 전용 브릿지도 만들 수 있음:
# 내부 전용 브릿지 (물리 포트 없음)
auto vmbr2
iface vmbr2 inet static
address 10.0.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
# NAT 설정 (VM이 외부 인터넷 접근 시)
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
활용 사례:
| 용도 | 설명 |
|---|---|
| 랩 환경 격리 | VM끼리만 통신, 외부와 분리 |
| 멀티티어 구성 | WAS→DB는 내부 네트워크, Web만 외부 노출 |
| 보안 테스트 | 격리된 환경에서 실험 |
3. VLAN
3.1 왜 VLAN이 필요한가
물리 NIC가 부족하거나, 하나의 NIC로 여러 네트워크를 분리해야 할 때 VLAN을 사용함.
3.2 VLAN 구성 방식
Proxmox에서 VLAN을 설정하는 방식은 3가지:
| 방식 | 설정 위치 | 장점 | 단점 |
|---|---|---|---|
| VLAN-aware Bridge | 브릿지에서 처리 | 간편, 유연, 권장 | 최소 PVE 4.2+ |
| Traditional VLAN | 호스트에서 sub-interface | 전통적 방식, 호환성 | 브릿지 수가 늘어남 |
| VM 내부 VLAN | Guest OS에서 처리 | Proxmox 설정 불필요 | Guest에서 관리, 보안 약함 |
3.3 VLAN-aware Bridge (권장)
하나의 브릿지에서 VLAN 태깅을 처리함.
# /etc/network/interfaces — VLAN-aware Bridge
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes # ← VLAN-aware 활성화
bridge-vids 2-4094 # ← 허용할 VLAN ID 범위
VM 설정 시 VLAN 지정:
웹 UI에서 VM → Hardware → Network Device → VLAN Tag에 ID 입력.
# CLI에서 VM에 VLAN 태그 설정
qm set 100 --net0 virtio,bridge=vmbr0,tag=20
# 설정 확인
qm config 100 | grep net0
# net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr0,tag=20
장점:
- 브릿지 하나로 여러 VLAN 처리
- VM별로 VLAN 태그만 바꾸면 네트워크 변경 가능
- 호스트에서 sub-interface를 만들 필요 없음
3.4 Traditional VLAN (레거시)
VLAN마다 별도의 sub-interface + 브릿지를 만드는 전통적 방식:
# /etc/network/interfaces — Traditional VLAN
iface eno1 inet manual
# VLAN sub-interface 생성
auto eno1.10
iface eno1.10 inet manual
auto eno1.20
iface eno1.20 inet manual
# 관리 네트워크 (Untagged)
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
# VLAN 10 — 서비스
auto vmbr10
iface vmbr10 inet static
address 10.10.10.100/24
bridge-ports eno1.10
bridge-stp off
bridge-fd 0
# VLAN 20 — DB
auto vmbr20
iface vmbr20 inet static
address 10.10.20.100/24
bridge-ports eno1.20
bridge-stp off
bridge-fd 0
VLAN-aware Bridge가 더 유연하고 관리가 편하므로, 특별한 이유가 없으면 VLAN-aware 방식을 권장함.
3.5 물리 스위치 설정
Proxmox VLAN이 동작하려면 물리 스위치 포트도 Trunk 모드여야 함.
# Cisco 스위치 예시
interface GigabitEthernet0/1
description Proxmox-Node1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 10,20,30
switchport trunk native vlan 1
# HP/Aruba 스위치 예시
interface 1
name "Proxmox-Node1"
trunk trk1 trk
trunk allowed vlan 10,20,30
⚠️ 물리 스위치와 Proxmox의 VLAN ID가 일치해야 함. VLAN 설정 후 통신이 안 되면 물리 스위치 Trunk 설정을 먼저 확인할 것.
4. NIC Bonding
4.1 왜 Bonding인가
| 목적 | 설명 |
|---|---|
| 이중화 (Failover) | NIC 하나가 죽어도 네트워크 유지 |
| 대역폭 확대 | 여러 NIC의 대역폭을 합산 (모드에 따라) |
| 무중단 | NIC 교체/케이블 작업 시 서비스 중단 없음 |
4.2 Bonding 모드
Linux Bonding의 주요 모드:
| Mode | 이름 | 스위치 설정 | 대역폭 | 이중화 | 추천 |
|---|---|---|---|---|---|
| 0 | balance-rr | 불필요 | 합산 | ✅ | ❌ (순서 보장 안됨) |
| 1 | active-backup | 불필요 | 1x | ✅ | ✅ 가장 안전 |
| 2 | balance-xor | 불필요 | 합산 | ✅ | ⚠️ |
| 3 | broadcast | 불필요 | 1x | ✅ | 특수 용도 |
| 4 | 802.3ad (LACP) | 필요 | 합산 | ✅ | ✅ 성능 최고 |
| 5 | balance-tlb | 불필요 | 합산(송신) | ✅ | ⚠️ |
| 6 | balance-alb | 불필요 | 합산(양방향) | ✅ | ⚠️ |
추천:
- 홈랩/간단 환경: Mode 1 (active-backup) — 설정 가장 간단, 스위치 설정 불필요
- 프로덕션: Mode 4 (802.3ad LACP) — 성능 + 이중화, 스위치 LACP 설정 필요
4.3 Bonding 설정 — Mode 1 (active-backup)
# /etc/network/interfaces — active-backup Bonding
iface eno1 inet manual
iface eno2 inet manual
# Bond 인터페이스
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100 # 링크 체크 간격 (ms)
bond-mode active-backup
bond-primary eno1 # 주 인터페이스
# Bond 위에 Bridge
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
4.4 Bonding 설정 — Mode 4 (802.3ad LACP)
# /etc/network/interfaces — LACP Bonding
iface eno1 inet manual
iface eno2 inet manual
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-lacp-rate fast # 빠른 LACP 교환 (1초)
bond-xmit-hash-policy layer3+4 # IP+포트 기반 로드밸런싱
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
물리 스위치 LACP 설정:
# Cisco
interface GigabitEthernet0/1
channel-group 1 mode active
interface GigabitEthernet0/2
channel-group 1 mode active
interface Port-channel1
switchport mode trunk
⚠️ LACP 모드 사용 시 반드시 물리 스위치에서도 LACP를 설정해야 함. 한쪽만 설정하면 통신이 안 됨.
4.5 Bonding + VLAN 조합
Bonding 위에 VLAN-aware Bridge를 올리는 실전 구성:
# /etc/network/interfaces — 실전 구성
iface eno1 inet manual
iface eno2 inet manual
iface eno3 inet manual
iface eno4 inet manual
# Management/Service Bond
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
# Storage Bond
auto bond1
iface bond1 inet manual
bond-slaves eno3 eno4
bond-miimon 100
bond-mode active-backup
# Management + Service Bridge (VLAN-aware)
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
# Storage Bridge (점보 프레임)
auto vmbr1
iface vmbr1 inet static
address 10.10.10.100/24
bridge-ports bond1
bridge-stp off
bridge-fd 0
mtu 9000
4.6 Bonding 상태 확인
# Bond 상태 확인
cat /proc/net/bonding/bond0
# 간단 확인
ip link show bond0
5. Open vSwitch (OVS)
5.1 OVS vs Linux Bridge
| 항목 | Linux Bridge | Open vSwitch |
|---|---|---|
| 설정 난이도 | 낮음 | 높음 |
| 성능 | 좋음 | 좋음 (약간 오버헤드) |
| VLAN 지원 | bridge-vlan-aware | 네이티브 |
| GRE/VXLAN | ❌ | ✅ |
| OpenFlow | ❌ | ✅ |
| QoS | 제한적 | 세밀한 제어 |
| 모니터링 | 기본 도구 | ovsctl, sFlow, NetFlow |
| SDN 연동 | ❌ | ✅ |
| 추천 | 대부분의 환경 | 고급 네트워크 필요 시 |
💡 대부분의 경우 Linux Bridge로 충분함. OVS는 GRE/VXLAN 터널, OpenFlow, 고급 QoS가 필요할 때 사용. 복잡도가 높아지므로 필요하지 않으면 쓰지 않는 것이 좋음.
5.2 OVS 설치 및 설정
# OVS 설치
apt install openvswitch-switch -y
# OVS 브릿지 생성 (/etc/network/interfaces)
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
ovs_type OVSBridge
ovs_ports eno1
allow-vmbr0 eno1
iface eno1 inet manual
ovs_bridge vmbr0
ovs_type OVSPort
# 상태 확인
ovs-vsctl show
6. SDN (Software Defined Networking)
6.1 SDN이란
Proxmox SDN은 웹 UI에서 가상 네트워크를 중앙 관리하는 기능임. PVE 7.0에서 도입되었고, PVE 8.x에서 안정화됨.
6.2 SDN 구성 요소
| Zone 타입 | 설명 | 복잡도 | 용도 |
|---|---|---|---|
| Simple | 단순 L2 브릿지 | 낮음 | 테스트, 단순 격리 |
| VLAN | 802.1Q VLAN 기반 | 낮음 | 일반적인 네트워크 분리 |
| QinQ | VLAN in VLAN | 중간 | 고객별 격리 (서비스 제공자) |
| VXLAN | UDP 오버레이 | 높음 | 대규모, L3 네트워크 넘어 확장 |
| EVPN | BGP + VXLAN | 매우 높음 | 엔터프라이즈, 다중 사이트 |
6.3 SDN 설정 예시 — VLAN Zone
웹 UI에서:
-
Datacenter → SDN → Zones → Add → VLAN
- ID:
myzone - Bridge:
vmbr0
- ID:
-
SDN → VNets → Create
- ID:
vnet10 - Zone:
myzone - Tag:
10
- ID:
-
SDN → VNets →
vnet10→ Subnets → Create- Subnet:
10.10.10.0/24 - Gateway:
10.10.10.1
- Subnet:
-
SDN → Apply (전체 클러스터에 배포)
VM 연결: VM → Hardware → Network → Bridge에서 vnet10 선택.
💡 SDN은 클러스터 환경에서 가장 큰 가치를 발휘함. 단일 노드에서는 수동 설정으로 충분하지만, 3노드 이상의 클러스터에서 네트워크 일관성을 유지하려면 SDN이 편함.
6.4 SDN을 쓸지 말지 판단
| 상황 | SDN | 수동 |
|---|---|---|
| 단일 노드, 홈랩 | ❌ | ✅ |
| 클러스터, VLAN 2~3개 | ⚠️ 선택 | ✅ |
| 클러스터, VLAN 5개+ | ✅ | ⚠️ |
| 다중 사이트 | ✅ (EVPN) | ❌ |
| VXLAN 오버레이 필요 | ✅ | ❌ |
7. 실전 네트워크 설계 패턴
7.1 홈랩 — 최소 구성
NIC 1개, 네트워크 분리 없이 시작.
# /etc/network/interfaces
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
7.2 홈랩 — VLAN 분리
NIC 1개, VLAN으로 관리/서비스/스토리지 분리.
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 10 20 30
⚠️ VLAN을 쓰려면 관리형(Managed) 스위치가 필요함. 일반 가정용 공유기는 VLAN Trunk를 지원하지 않음.
7.3 프로덕션 — 소규모 (3노드)
NIC 4개, Bonding + VLAN, 스토리지 분리.
네트워크 용도별 분리:
| 용도 | 인터페이스 | VLAN | 서브넷 |
|---|---|---|---|
| 관리 (웹 UI/SSH) | vmbr0 (untagged) | — | 192.168.1.0/24 |
| Corosync 클러스터 | vmbr0 VLAN 5 | 5 | 10.5.0.0/24 |
| VM 서비스 | vmbr0 VLAN 10~20 | 10-20 | 10.10.x.0/24 |
| 스토리지 (Ceph/NFS) | vmbr1 | — | 10.10.10.0/24 |
| Live Migration | vmbr1 또는 전용 | — | 10.10.10.0/24 (공유) |
7.4 프로덕션 — 대규모
NIC 6개+, 완전 분리, SDN.
| Bond | NIC | 용도 | 브릿지 |
|---|---|---|---|
| bond0 | eno1+eno2 | 관리 + Corosync | vmbr0 |
| bond1 | eno3+eno4 | VM 서비스 (VLAN-aware) | vmbr1 |
| bond2 | eno5+eno6 | 스토리지 (Ceph) | vmbr2 |
8. 트러블슈팅
자주 발생하는 문제
Q: VLAN 설정 후 VM이 네트워크에 접속 안 됨
# 1. 물리 스위치 Trunk 설정 확인
# 2. 브릿지가 VLAN-aware인지 확인
bridge vlan show
# 3. VM의 VLAN 태그 확인
qm config 100 | grep net
# 4. 호스트에서 VLAN 트래픽 확인
tcpdump -i eno1 -e vlan -n
# 5. ARP 확인
arping -I vmbr0 10.10.10.1
Q: Bonding 후 네트워크 불안정
# Bond 상태 확인
cat /proc/net/bonding/bond0
# LACP 협상 확인 (Mode 4)
# Partner Mac Address가 00:00:00:00:00:00이면 스위치에서 LACP 미설정
cat /proc/net/bonding/bond0 | grep -A5 "Partner"
# 케이블/포트 확인
ethtool eno1 | grep "Link detected"
ethtool eno2 | grep "Link detected"
Q: MTU 불일치로 큰 패킷이 안 보내짐
# 경로상 모든 인터페이스의 MTU 확인
ip link show | grep mtu
# MTU 테스트 (9000 점보 프레임)
ping -M do -s 8972 10.10.10.101
# 성공하면 MTU 9000 통과
# 실패하면 경로에 MTU < 9000인 구간 존재
Q: 네트워크 변경 후 SSH 끊김
# 원격이 아닌 콘솔(IPMI/iDRAC/iLO)에서 복구
# 백업된 설정으로 복원
cp /etc/network/interfaces.bak /etc/network/interfaces
ifreload -a
💡 네트워크 설정 변경 전에 항상 백업:
cp /etc/network/interfaces /etc/network/interfaces.bak
9. VMware 네트워크 대응표
| VMware | Proxmox | 비고 |
|---|---|---|
| vSwitch | Linux Bridge (vmbr) | 기본 가상 스위치 |
| dvSwitch | OVS or SDN | 분산/중앙 관리 |
| Port Group | VLAN Tag (bridge-vlan-aware) | VM에 VLAN 할당 |
| VMkernel Port | 호스트 IP on Bridge/VLAN | 관리, vMotion, 스토리지 |
| NIC Teaming | Linux Bonding | active-backup, LACP |
| vMotion Network | Migration Network | Datacenter → 설정에서 지정 |
| NSX | SDN (EVPN/VXLAN) | 기능 차이 큼 |
| Traffic Shaping | tc (Linux) / OVS QoS | |
| Promiscuous Mode | Bridge 설정 | 기본 허용 |
정리
Proxmox 네트워크는 Linux 네트워크 그 자체임. Linux 네트워크를 알면 Proxmox 네트워크를 자유자재로 다룰 수 있음.
실전 가이드:
| 환경 | 구성 | 최소 NIC |
|---|---|---|
| 홈랩 (시작) | vmbr0 1개 | 1 |
| 홈랩 (VLAN) | vmbr0 VLAN-aware | 1 + 관리형 스위치 |
| 프로덕션 (소규모) | bond0 + bond1, VLAN-aware | 4 |
| 프로덕션 (대규모) | bond × 3, SDN | 6+ |
핵심 원칙:
- 관리/서비스/스토리지 트래픽은 분리함 — 최소 논리적(VLAN), 가능하면 물리적(별도 NIC/Bond)
- 프로덕션이면 Bonding은 기본임 — active-backup으로 시작, LACP 가능하면 전환
- 스토리지 네트워크는 점보 프레임(MTU 9000)을 씀 — 경로 전체가 동일 MTU여야 함
- 설정 변경 전에 백업하고,
ifreload -a로 적용함
다음 글
→ Storage Configuration — LVM, ZFS, NFS, iSCSI, Ceph 스토리지 구성
🔗 관련 문서
- Proxmox VE Overview — 아키텍처
- Proxmox Management Architecture — API, 방화벽, 관리 구조
- OSI & TCP/IP Model — 네트워크 기초
- Datacenter Topology — DC 네트워크
- Proxmox VE Series Index — 시리즈 목차