13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] Proxmox VE 8.2

  • [Proxmox] Proxmox VE 8.2 심층 분석: 데이터센터 관리 기능과 주요 개선점

    [Proxmox] Proxmox VE 8.2 심층 분석: 데이터센터 관리 기능과 주요 개선점

    도입부: 왜 Proxmox VE 8.2에 주목해야 할까요?

    안녕하세요, 13년차 서버실 지킴이입니다. 요즘 인프라 환경이 정말 빠르게 변하고 있죠? 특히 가상화 솔루션은 기술 스택의 핵심 중 하나라고 해도 과언이 아닙니다. 많은 분들이 VMware의 라이선스 정책 변화 때문에 오픈소스 대안을 찾고 계실 텐데요. 저도 홈랩을 운영하면서 이 문제에 대해 늘 고민하고 있거든요. 그러던 와중에 Proxmox VE (Virtual Environment) 8.2가 드디어 출시되었다는 소식을 들었습니다!

    Proxmox VE는 KVM 기반의 가상화와 LXC 컨테이너를 통합하여 단일 플랫폼에서 관리할 수 있는 강력한 오픈소스 솔루션입니다. 저처럼 작은 규모의 서버실이나 홈랩을 운영하는 입장에서는 비용 효율적이면서도 엔터프라이즈급 기능을 제공하는 Proxmox VE가 정말 매력적일 수밖에 없는데요. 이번 8.2 버전에서는 데이터센터 관리 기능이 한층 더 강화되고 다양한 개선점이 추가되었다고 해서, 제가 직접 한번 파헤쳐 봤습니다. 혹시 여러분도 VMware에서 Proxmox VE로의 마이그레이션을 고민하고 계시다면, 이 글이 좋은 가이드가 될 거라고 생각해요!

    Proxmox VE 클러스터의 전체적인 구성도를 보면, 왜 이 솔루션이 데이터센터 관리에 효율적인지 한눈에 이해할 수 있습니다.

    Proxmox VE 8.2, 무엇이 달라졌나? (핵심 개념 설명)

    Proxmox VE는 기본적으로 Debian Linux 위에 KVM(Kernel-based Virtual Machine)과 LXC(Linux Containers)를 통합하여 제공합니다. 쉽게 말해, KVM으로 Windows나 다른 Linux 같은 다양한 운영체제의 가상 머신(Virtual Machine, VM)을 만들 수 있고, LXC로는 가벼운 리눅스 컨테이너를 만들어서 애플리케이션을 격리된 환경에서 실행할 수 있다는 뜻이죠. 이걸 하나의 웹 인터페이스에서 모두 관리할 수 있다는 게 Proxmox VE의 가장 큰 장점입니다.

    KVM 기반 가상화와 LXC 컨테이너의 조화

    • KVM (Kernel-based Virtual Machine): 하드웨어 가상화 기술을 활용하여 OS 커널 레벨에서 완전한 가상 머신을 생성합니다. 높은 성능과 격리성을 제공하며, 다양한 게스트 OS를 지원하죠.
    • LXC (Linux Containers): OS 레벨 가상화로, 호스트 OS의 커널을 공유하며 격리된 사용자 공간을 제공합니다. VM보다 훨씬 가볍고 빠르며, 리소스 오버헤드가 적습니다.

    이번 Proxmox VE 8.2에서는 이런 기본적인 강점에 더해, 사용자 경험을 개선하고 인프라 관리의 복잡성을 줄여주는 여러 기능들이 추가되었더라고요. 특히 데이터센터 규모에서 효율성을 높일 수 있는 기능들이 눈에 띄었습니다.

    주요 개선점 심층 분석: 데이터센터 관리 기능 강화

    이번 8.2 버전에서 가장 인상 깊었던 점은 역시 데이터센터 관리와 스토리지 효율성에 대한 부분이었습니다. 저처럼 스토리지 구성에 늘 목마른 사람에게는 정말 반가운 소식이었죠.

    ZFS dRAID 지원 (Data Redundancy over Arrays of Independent Disks)

    드디어 ZFS dRAID가 정식으로 지원됩니다! ZFS는 강력한 파일 시스템이자 볼륨 관리자로, 데이터 무결성과 스냅샷 기능으로 유명하죠. 기존 RAIDZ2 등도 훌륭했지만, dRAID는 좀 더 유연한 확장성과 빠른 리빌드(Rebuild) 속도를 제공합니다. 대규모 스토리지 환경에서 디스크 장애 시 복구 시간을 단축할 수 있다는 건 정말 큰 장점이에요. 제가 직접 홈랩에서 ZFS 풀을 구성하고 재구성할 때마다 시간이 오래 걸려서 답답했었는데, dRAID는 이런 고충을 덜어줄 것 같더라고요.

    Ceph Quincy → Reef 업그레이드 (분산 스토리지)

    분산 스토리지 솔루션인 Ceph도 Quincy에서 Reef로 업그레이드되었습니다. Ceph Reef는 성능 개선과 함께 관리 기능이 더 편리해졌습니다. 특히 소규모 클러스터에서도 효율적으로 운영할 수 있도록 최적화된 부분들이 있어서, 저처럼 제한된 리소스로 여러 노드를 운영하는 환경에 아주 적합하다고 생각합니다. Ceph를 Proxmox VE와 함께 사용하면 VM 디스크 이미지를 여러 노드에 분산 저장하여 고가용성(High Availability, HA)을 확보할 수 있거든요.

    # Ceph 상태 확인 (Proxmox VE 8.2에서)
    ceph -s
    
    # Ceph OSD 트리 확인
    ceph osd tree
    

    스냅샷 기반 백업 최적화

    이번 버전에서는 스냅샷 기반 백업 최적화 기능이 한층 더 강화되었습니다. VM 백업 시 생성되는 스냅샷의 I/O 부하를 더 효율적으로 관리할 수 있게 개선됐거든요. 특히 스토리지 성능이 제한적이거나, 동시에 여러 VM을 백업해야 할 때 정말 유용합니다. 백업 중에도 VM의 성능 저하를 최소화할 수 있어서, 서비스 중단 없이 안정적인 백업 운영이 가능해졌다는 게 핵심입니다. 제가 예전에 백업 돌리다가 VM이 버벅거려서 사용자들한테 컴플레인 들었던 적이 한두 번이 아니었거든요. 이 개선점이 있다면 그런 걱정을 덜 수 있겠네요!

    Proxmox VE 8.2 Ceph Reef 클러스터 관리 대시보드

    Proxmox VE 웹 UI에서 Ceph Reef 클러스터의 상태를 한눈에 모니터링하는 모습입니다.

    실전 적용: Proxmox VE 8.2 설치 및 초기 설정 팁

    Proxmox VE 8.2 설치 과정은 기존 버전과 크게 다르지 않습니다. 하지만 몇 가지 팁을 드리자면, 설치 시 파일 시스템 선택이 중요해요. 특히 ZFS를 사용하실 계획이라면, 설치 단계에서 미리 구성해두는 것이 편리합니다. 저 같은 경우에는 ZFS Root on RAID1으로 OS를 설치하고, 데이터용으로 별도의 ZFS dRAID 풀을 구성하는 방식을 선호합니다.

    설치 후에는 항상 시스템을 최신 상태로 유지하는 것이 중요합니다. 터미널에서 다음 명령어를 실행해주세요.

    sudo apt update
    sudo apt dist-upgrade -y
    sudo reboot
    

    그리고 Proxmox Backup Server (PBS)를 연동하는 것도 잊지 마세요. Proxmox VE의 백업 기능을 100% 활용하려면 PBS가 필수거든요. PBS는 증분 백업(Incremental Backup)과 중복 제거(Deduplication) 기능을 제공해서 스토리지 사용량을 획기적으로 줄여줍니다. 제가 직접 써보니까, 백업 용량이 정말 드라마틱하게 줄어들더라고요!

    VMware 마이그레이션 관점에서 본 Proxmox VE 8.2

    VMware에서 Proxmox VE로 넘어오는 분들이 많으실 텐데요, Proxmox VE 8.2는 이런 마이그레이션 시나리오를 더욱 강력하게 지원합니다. 기본적으로 qemu-img 툴을 사용하여 VMDK 파일을 QCOW2나 RAW 포맷으로 변환할 수 있습니다. 예를 들어:

    # VMDK 파일을 QCOW2로 변환
    qemu-img convert -f vmdk /path/to/your/vmware.vmdk -O qcow2 /path/to/your/new_proxmox_vm.qcow2
    

    변환된 이미지를 Proxmox VE 스토리지로 옮기고, 새로운 VM을 생성할 때 해당 디스크 이미지를 연결해주면 됩니다. 이 과정에서 네트워크 드라이버나 가상 하드웨어 설정을 Proxmox VE 환경에 맞게 조정해야 하는 경우가 많으니, 꼭 충분한 테스트를 거치셔야 해요. 특히 VMware Tools에 해당하는 QEMU Guest Agent를 VM에 설치하는 것은 성능 향상과 스냅샷 일관성을 위해 필수적입니다.

    Proxmox VE의 웹 UI를 통해 VM을 생성하고, 변환된 디스크를 추가하는 과정은 직관적이라 어렵지 않을 겁니다. 사실 제가 처음 VMware에서 Proxmox VE로 마이그레이션할 때 가장 걱정했던 부분인데, 막상 해보니 생각보다 쉬웠습니다. 물론 삽질이 없었던 건 아니지만요! 😉

    Proxmox VE에서 VMware VMDK 가져와 VM 생성하는 과정

    VMware 환경에서 사용하던 VMDK 파일을 Proxmox VE로 가져와 새로운 가상 머신을 만드는 과정입니다.

    ⚠️ 삽질 경험: 백업 설정 시 주의할 점

    이번 Proxmox VE 8.2의 백업 기능, 정말 좋다고 말씀드렸잖아요? 그런데 제가 이걸 설정하다가 한 번 크게 삽질했습니다. 분명 설정은 다 했는데, 백업 로그를 보니 뭔가 제대로 동작하지 않는 거예요. 처음엔 ‘이게 뭔가 싶었는데’ 알고 보니 Proxmox Backup Server (PBS)와 Proxmox VE 클러스터 간의 네트워크 지연 시간(Latency)이 너무 높아서 제대로 협업이 안 되고 있었던 거였죠.

    백업 성능의 핵심은 Proxmox VE 호스트와 PBS 간의 긴밀한 통신입니다. 만약 네트워크 환경이 좋지 않다면, 최적의 성능을 기대하기 어려울 수 있습니다. 그래서 제가 드리는 팁은:

    1. 네트워크 대역폭과 Latency 확인: 백업 트래픽이 몰리는 시간대에 네트워크 모니터링을 꼭 해보세요.
    2. 전용 백업 네트워크 구성: 가능하다면 Proxmox VE 클러스터와 PBS 사이에 전용 백업 네트워크를 구성하는 것이 가장 좋습니다.
    3. QEMU Guest Agent 설치 확인: 백업 대상 VM에 QEMU Guest Agent가 제대로 설치되어 실행 중인지 다시 한번 확인하세요. 이 Agent가 없으면 스냅샷 일관성을 보장할 수 없어요.

    이 세 가지를 점검하고 나서야 백업이 의도한 대로 동작하는 걸 확인할 수 있었어요. 역시 인프라는 눈으로 보이는 게 다가 아니라니까요! 😅

    마무리: Proxmox VE 8.2, 앞으로의 기대

    Proxmox VE 8.2는 데이터센터 관리의 효율성을 높이고, VMware 마이그레이션을 고민하는 분들에게 더욱 강력한 대안을 제시하는 버전이라고 생각합니다. 특히 ZFS dRAID와 Ceph Reef 업그레이드, 그리고 스냅샷 최적화 같은 기능들은 실제 운영 환경에서 체감할 수 있는 큰 개선점들이에요. 오픈소스의 유연성과 강력한 커뮤니티 지원까지 더해져, 앞으로 Proxmox VE의 성장이 더욱 기대됩니다.

    저도 홈랩에서 Proxmox VE 8.2를 계속 사용하면서 새로운 기능들을 더 깊이 파고들어 볼 생각입니다. 혹시 여러분도 Proxmox VE를 사용하면서 궁금한 점이나 팁이 있다면 댓글로 공유해주세요. 서로의 경험을 나누면서 더 좋은 인프라를 만들어나갈 수 있으니까요!

    Proxmox VE 8.2의 핵심 개선점들을 한눈에 파악할 수 있는 요약 정보입니다.

    다음 단계 제안

    이번 글에서는 Proxmox VE 8.2의 주요 기능들을 살펴봤는데요, 다음번에는 Proxmox Backup Server (PBS)를 활용한 백업 전략과 재해 복구(Disaster Recovery, DR) 구성에 대해 좀 더 자세히 다뤄볼까 합니다. PBS는 Proxmox VE 생태계에서 정말 중요한 부분이니, 놓치지 마세요!

  • [Proxmox] VE 8.2 네트워크 고급 설정: VLAN, 브릿지, nftables 방화벽 완벽 가이드

    홈랩 네트워크, 이대로 괜찮은가요?

    솔직히 말씀드리면, 저도 처음엔 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 방화벽은 세 가지 레벨로 동작합니다.

    1. Datacenter 레벨: 클러스터 전체에 적용되는 공통 규칙 (/etc/pve/firewall/cluster.fw)
    2. Host 레벨: Proxmox 호스트 자체에 적용 (/etc/pve/nodes/[노드명]/host.fw)
    3. 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 기본 설치 가이드와 함께 보시면 더 도움이 될 거예요.