13년차의 서버실

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

[태그:] VLAN 설정

  • [HomeLabs] MikroTik 라우터 1년 사용 회고: 홈랩 네트워크의 장단점 분석

    [HomeLabs] MikroTik 라우터 1년 사용 회고: 홈랩 네트워크의 장단점 분석

    [홈랩] MikroTik 라우터 1년 사용 회고

    MikroTik 라우터를 홈랩 네트워크 중심에 두고 1년 정도 운영해보니, 왜 이 장비가 입문자에게는 어렵고 익숙해지면 꽤 강력하다는 평가를 받는지 몸으로 이해하게 되더라고요. 처음엔 메뉴도 많고 용어도 낯설어서 솔직히 좀 당황했어요. 그런데 VLAN(가상 LAN, 논리적으로 분리된 네트워크), Firewall(방화벽, 트래픽 제어 규칙), Queue(큐, 대역폭 제어) 같은 기능을 하나씩 붙여보니까 홈랩 네트워크를 꽤 정교하게 다듬을 수 있었거든요. 혹시 집에서 서버 몇 대 굴리다가 네트워크가 점점 복잡해진 경험 있으신가요? 그 시점부터는 일반 공유기와는 다른 접근이 필요해지더라고요.

    이번 글은 특정 신제품 소개가 아니라, 제가 실제로 MikroTik RouterOS 환경을 홈랩에 적용하면서 느낀 장단점을 정리한 회고에 가깝습니다. 네트워크 장비 비교 관점에서도 어디가 좋았고 어디서 삽질했는지 솔직하게 적어보겠습니다. 다음 글에서는 스위치와 AP(Access Point, 무선 접속 장치)까지 포함한 전체 홈랩 네트워크 분리 설계를 더 자세히 다룰 예정입니다.

    MikroTik 라우터 중심의 홈랩 네트워크 아키텍처 다이어그램

    홈랩 네트워크에서 MikroTik 라우터가 코어 역할을 하는 전체 구성 예시입니다.

    MikroTik 라우터가 홈랩 네트워크에 잘 맞는 이유

    쉽게 말해 MikroTik 라우터는 공유기처럼 보이지만 운영 방식은 작은 네트워크 장비에 더 가깝습니다. 일반 가정용 장비가 버튼 몇 개로 끝나는 대신, MikroTik은 거의 모든 걸 세세하게 건드릴 수 있게 열어둔 느낌입니다. 처음엔 이게 뭔가 싶었는데, 홈랩처럼 요구사항이 자꾸 늘어나는 환경에서는 이 유연성이 진짜 크게 느껴지더라고요.

    제가 체감한 핵심 개념

    • RouterOS: MikroTik 장비에서 동작하는 네트워크 운영체제입니다. GUI와 CLI를 모두 지원해서 취향대로 작업할 수 있어요.
    • Bridge(브리지): 여러 포트를 하나의 스위치처럼 묶는 개념입니다. VLAN 필터링과 함께 많이 써요.
    • VLAN: 서버, 관리망, IoT 기기를 논리적으로 나누는 데 좋습니다.
    • NAT(Network Address Translation, 주소 변환): 내부 네트워크가 외부 인터넷에 나갈 때 거의 기본으로 들어갑니다.
    • Firewall Filter: 어떤 트래픽을 허용하고 막을지 정하는 핵심 규칙입니다.

    제가 직접 써보니 가장 큰 장점은 한 대로 할 수 있는 범위가 넓다기본값을 이해하지 못한 채 만지면 금방 헷갈린다

    1년 동안 운영하면서 느낀 장점과 단점

    항목 좋았던 점 아쉬웠던 점
    설정 유연성 세부 정책을 직접 설계하기 좋음 초기 진입장벽이 높음
    홈랩 네트워크 분리 VLAN, 방화벽 정책 구성에 유리 개념 이해 없이 설정하면 통신 장애가 남
    운영 도구 CLI, WinBox, Web UI 등 선택지가 있음 메뉴가 많아 처음엔 길을 잃기 쉬움
    문서/커뮤니티 검색하면 사례가 제법 나옴 설정 방식이 다양해서 정답이 하나가 아님
    확장성 VPN, 라우팅, QoS까지 확장 가능 기능이 많아질수록 관리 기준이 필요함

    특히 홈랩 네트워크에서는 서버망, 개인 PC망, IoT망을 나누는 순간부터 MikroTik 라우터의 진가가 나옵니다. 반대로 인터넷만 되면 되는 환경이라면 너무 과할 수도 있어요. 여기서 중요한 포인트! 좋은 장비가 아니라, 요구사항에 맞는 장비가 좋은 장비라는 점입니다.

    실전 구현: 제가 홈랩에서 잡았던 기본 구조

    제 환경에서는 아주 복잡하게 시작하지 않았어요. 처음부터 BGP(Border Gateway Protocol, 경로 제어 프로토콜) 같은 걸 만진 건 아니고요. 아래처럼 단순한 목표부터 잡았습니다.

    1. WAN과 LAN 기본 연결
    2. 관리용 네트워크와 일반 사용자 네트워크 분리
    3. 서버용 VLAN 추가
    4. 인터넷은 허용하되 관리망 접근은 제한
    5. 필요한 서비스만 포트 전달

    실제로 써보니까 처음부터 모든 걸 자동화하려고 하기보다, 기본 연결 → VLAN → 방화벽 → 모니터링 순서가 훨씬 덜 꼬였어요.

    예시 1: 인터페이스와 주소 기본 구성

    /interface bridge
    add name=bridge-lan vlan-filtering=yes
    
    /interface bridge port
    add bridge=bridge-lan interface=ether2
    add bridge=bridge-lan interface=ether3
    add bridge=bridge-lan interface=ether4
    
    /ip address
    add address=192.168.10.1/24 interface=bridge-lan comment=main-lan
    
    /ip pool
    add name=pool-main ranges=192.168.10.100-192.168.10.199
    
    /ip dhcp-server
    add name=dhcp-main interface=bridge-lan address-pool=pool-main
    
    /ip dhcp-server network
    add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1

    이 단계는 말 그대로 뼈대예요. 여기서 DHCP(Dynamic Host Configuration Protocol, 자동 IP 할당)까지 붙여두면 최소한 네트워크는 살아나거든요. 드디어 됐다! 싶은 첫 구간이 바로 여기였습니다.

    예시 2: VLAN 분리

    /interface vlan
    add interface=bridge-lan name=vlan20-servers vlan-id=20
    add interface=bridge-lan name=vlan30-iot vlan-id=30
    
    /ip address
    add address=192.168.20.1/24 interface=vlan20-servers comment=servers
    add address=192.168.30.1/24 interface=vlan30-iot comment=iot

    서버망과 IoT망을 나누고 나면 체감이 커요. NAS(Network Attached Storage, 네트워크 스토리지)나 가상화 호스트가 있는 구간은 좀 더 보수적으로 관리할 수 있고, IoT 기기 쪽은 인터넷만 나가게 제한하는 식으로 설계하기 쉬워지거든요.

    MikroTik RouterOS VLAN 및 인터페이스 구성 개념 이미지

    VLAN과 브리지 포트가 어떻게 연결되는지 한눈에 보이는 설정 개념도입니다.

    예시 3: 기본 방화벽 정책

    /ip firewall filter
    add chain=input action=accept connection-state=established,related
    add chain=input action=drop connection-state=invalid
    add chain=input action=accept protocol=icmp
    add chain=input action=accept src-address=192.168.10.0/24
    add chain=input action=drop
    
    add chain=forward action=accept connection-state=established,related
    add chain=forward action=drop connection-state=invalid
    add chain=forward action=accept src-address=192.168.20.0/24 dst-address=192.168.10.0/24
    add chain=forward action=drop src-address=192.168.30.0/24 dst-address=192.168.10.0/24
    add chain=forward action=accept

    여기서 많이 배우게 돼요. 라우터 자신에게 들어오는 트래픽은 input, 네트워크를 통과하는 트래픽은 forward라는 기본 구조를 이해해야 규칙이 덜 꼬여요. 저도 처음엔 forward만 만지다가 왜 관리 접속이 막히는지 한참 헤맸거든요.

    운영하면서 자주 썼던 점검 명령어

    설정도 중요하지만 검증이 더 중요해요. 홈랩 네트워크는 바뀌는 일이 많아서, 바꿀 때마다 확인 루틴을 만들어두는 게 훨씬 편하더라고요.

    /ip address print
    /interface bridge port print
    /interface vlan print
    /ip route print
    /ip firewall filter print stats
    /ping 8.8.8.8
    /tool traceroute 1.1.1.1

    특히 print stats는 규칙이 실제로 맞고 있는지 확인할 때 유용했어요. 규칙은 예쁘게 써놨는데 카운터가 안 올라가면 방향을 잘못 잡은 경우가 많았거든요.

    ⚠️ 주의사항과 제가 실제로 겪은 트러블슈팅

    MikroTik RouterOS를 1년 정도 굴리면서 가장 많이 한 삽질은 세 가지였어요. 이 부분은 정말 초반에 알았으면 시간을 꽤 아꼈을 겁니다.

    1. VLAN 태깅 방향을 헷갈리기 쉬움

    브리지, 포트, VLAN 테이블 관계를 정확히 안 보면 특정 포트만 통신이 안 되는 일이 생겨요. 처음엔 DHCP가 왜 안 붙지 싶었는데, 실제 원인은 태그드(tagged)와 언태그드(untagged) 포트 구분이 어긋난 경우가 많았습니다.

    • 증상: 특정 장비만 IP를 못 받음
    • 원인: 포트 PVID(기본 VLAN ID)와 브리지 VLAN 항목 불일치
    • 해결: VLAN 설계도를 먼저 그리고 포트 역할을 표로 정리

    2. 방화벽 규칙 순서가 생각보다 중요해요

    Firewall Filter는 위에서 아래로 평가되기 때문에, 넓게 허용하는 규칙을 먼저 두면 뒤쪽 차단 규칙이 사실상 의미가 없어져요. 이거 정말 많이 놓쳐요. 저도 초반엔 규칙은 다 써놨는데 왜 안 막히지? 하고 한참 봤습니다.

    3. 관리 접근 경로를 따로 남겨두는 게 안전해요

    원격에서만 만지다가 규칙 실수로 접속이 끊기면 꽤 난감해요. 가능하면 초기 작업은 로컬에서 하고, 관리망을 따로 두는 편이 좋습니다. 백업(export)도 자주 해두세요.

    /export file=backup-before-firewall
    /system backup save name=router-backup

    백업은 귀찮아도 무조건입니다. 한 번 꼬이면 다시 치는 시간보다 백업 복원이 훨씬 빨라요.

    MikroTik 라우터 방화벽 규칙과 트러블슈팅 흐름도

    입력 체인과 포워드 체인을 구분해 문제를 찾는 트러블슈팅 흐름 예시입니다.

    검증: 1년 운영 후 체감한 결과

    검증은 거창한 벤치마크보다 운영 안정성 관점에서 봤어요. 수치를 지어내고 싶진 않아서, 제가 실제로 중요하게 본 기준만 적겠습니다.

    1. 네트워크 분리 후 실수 전파 범위가 줄었는가
    2. 새 서버를 붙일 때 정책 적용이 쉬운가
    3. 문제 발생 시 원인 추적이 가능한가
    4. 재부팅이나 설정 변경 후 복구가 빠른가

    결론부터 말하면, 홈랩 네트워크 운영 피로도는 줄었어요. 예전에는 장비가 늘어날수록 규칙이 머릿속에서만 관리됐는데, MikroTik 라우터로 옮긴 뒤에는 네트워크 경계가 좀 더 명확해졌거든요. 서버망은 서버망대로, IoT는 IoT대로 성격에 맞는 정책을 적용하기 쉬웠습니다.

    물론 단점도 남았어요. 설정 자유도가 높다는 건, 결국 운영자 책임도 커진다는 뜻이거든요. 대충 만들어도 돌아가는 구성보다는, 명확하게 설계한 구성이 훨씬 잘 버텨요. 이건 RouterOS 자체보다 네트워크 장비 비교 전반에 적용되는 이야기 같아요.

    MikroTik 라우터 기반 홈랩 네트워크 모니터링 대시보드

    분리된 VLAN, 트래픽 흐름, 장비 상태를 확인하는 운영 관점의 결과 이미지입니다.

    네트워크 장비 비교 관점에서 본 MikroTik의 포지션

    많이들 궁금해하시는 포인트가 이거죠. 그래서 일반적인 비교 기준으로 정리해봤습니다.

    비교 기준 MikroTik 라우터 일반 가정용 공유기 소형 x86 방화벽 장비
    초기 난이도 높은 편 낮은 편 중간 이상
    세부 제어 강함 제한적 강함
    홈랩 네트워크 적합성 매우 좋음 단순 환경에 적합 고급 구성에 적합
    학습 가치 높음 낮음 높음
    운영 편의성 익숙해지면 좋음 매우 쉬움 구성에 따라 다름

    제 기준에서는 이런 분께 잘 맞았어요.

    • 집에서 서버, NAS, 가상화 환경을 운영하는 분
    • VLAN과 방화벽을 직접 만져보고 싶은 분
    • CLI와 GUI를 오가며 배우는 걸 싫어하지 않는 분

    반대로 그냥 인터넷 잘 되고 와이파이만 안정적이면 되는 분에게는 과할 수 있어요. 장비의 문제가 아니라 요구사항의 문제죠.

    정리: 1년 써보니 이런 분께 추천합니다

    1년 동안 써본 회고를 한 줄로 줄이면 이렇습니다. MikroTik 라우터는 쉬운 장비는 아니지만, 홈랩 네트워크를 제대로 설계하고 싶은 사람에게는 꽤 오래 가져갈 만한 도구예요. 저도 처음엔 메뉴가 너무 많아서 멈칫했는데, 한 번 구조가 잡히고 나니까 “아, 이래서들 쓰는구나” 싶더라고요.

    특히 MikroTik RouterOS는 네트워크를 공부하면서 운영까지 같이 해볼 수 있다는 점이 좋았어요. 단순히 인터넷 연결 장비가 아니라, 설계하고 검증하는 연습장처럼 느껴졌거든요. 이게 홈랩 재미이기도 하고요.

    다음 단계로는 아래 순서로 확장해보시면 좋습니다.

    1. 기본 LAN 구성부터 안정화
    2. 서버망과 IoT망 VLAN 분리
    3. 방화벽 정책 최소 허용 원칙 적용
    4. VPN과 원격 관리 구성
    5. 모니터링과 백업 자동화

    이전 글에서 다뤘던 홈랩 백업 전략과도 연결되는 주제라, 내부 링크로 묶어보셔도 좋을 것 같아요. 다음 글에서는 AP와 스위치까지 포함한 전체 홈랩 네트워크 설계 흐름을 더 현실적으로 정리해보겠습니다.

    MikroTik 라우터 1년 사용 장단점 요약 인포그래픽

    1년 사용 기준으로 정리한 장점, 단점, 추천 대상 요약 이미지입니다.

    자주 묻는 질문

    Q1. MikroTik 라우터는 초보자에게 너무 어렵지 않나요?

    처음엔 어려워요. 다만 홈랩 네트워크를 배우려는 목적이라면 오히려 배울 게 많습니다. 단, 한 번에 다 하려 하지 말고 기본 연결부터 쌓아가시는 게 좋아요.

    Q2. GUI만으로도 운영 가능한가요?

    가능합니다. 다만 CLI를 조금이라도 같이 보면 설정 구조 이해가 빨라져요. 저는 WinBox로 구조를 보고, CLI로 정리하는 식이 제일 편했습니다.

    Q3. 네트워크 장비 비교 시 가장 먼저 볼 기준은 뭔가요?

    내가 원하는 분리 수준과 운영 방식이에요. VLAN이 필요한지, 방화벽 정책을 직접 관리할지, 추후 확장 가능성이 있는지를 먼저 보시는 게 맞습니다.

  • [HomeLabs] MikroTik 홈랩: VLAN과 방화벽 설정 사례

    [HomeLabs] MikroTik 홈랩: VLAN과 방화벽 설정 사례

    MikroTik 홈랩: VLAN과 방화벽 설정 사례

    MikroTik 홈랩을 조금만 키워도 결국 부딪히는 지점이 있습니다. 처음에는 공유기 하나에 스위치 하나만 붙여도 잘 돌아가지만, 장비와 서비스가 늘어나면 “이 장비를 같은 네트워크에 둬도 되나?”라는 고민이 꼭 생기거든요. 저도 관리용 장비, 서버, IoT, 일반 사용자 PC를 한 네트워크에 몰아넣고 쓰다가 브로드캐스트 트래픽이 늘고, 방화벽 규칙은 꼬이고, 문제 생기면 원인 찾기가 꽤 힘들었습니다. 그래서 MikroTik 홈랩 구조를 다시 짜면서 VLAN 설정과 방화벽 규칙을 정리했는데, 이거 진짜 관리가 훨씬 편해지더라고요.

    이번 글은 이론만 훑는 글이 아니라, 제가 실제로 MikroTik 라우터 기준으로 홈랩 네트워크를 분리하고 보안을 다듬었던 흐름을 정리한 사례입니다. 특히 MikroTik 라우터를 이미 쓰고 있거나, 홈 네트워크 보안을 한 단계 올리고 싶은 분이라면 바로 적용 포인트를 잡는 데 도움이 될 겁니다. 예시는 RouterOS 7 계열 기준으로 봐 주세요.

    MikroTik 홈랩 전체 네트워크 아키텍처 다이어그램

    관리망, 서버망, IoT망, 사용자망으로 분리된 MikroTik 홈랩 전체 구조 예시입니다.

    MikroTik 홈랩에서 VLAN이 왜 중요한가

    쉽게 말해 VLAN(Virtual LAN, 가상 랜)은 물리적으로는 같은 스위치와 케이블을 쓰지만 논리적으로는 다른 네트워크처럼 분리하는 방식입니다. 예를 들어 NAS, Proxmox, 관리용 노트북은 신뢰도가 높은 관리망에 두고, 스마트 플러그나 카메라 같은 IoT 장비는 별도 망으로 빼는 식이죠.

    처음엔 좀 번거로워 보여도, 실제로 나눠 놓으면 장점이 꽤 분명합니다.

    • 보안: IoT 장비에 문제가 생겨도 서버망으로 바로 넘어오기 어렵습니다.
    • 운영 편의성: 장비 성격별로 IP 대역이 나뉘니 장애 범위를 빨리 좁힐 수 있습니다.
    • 정책 적용: VLAN별로 방화벽 규칙, DHCP, DNS 정책을 다르게 줄 수 있습니다.
    • 확장성: 나중에 가상화 서버나 무선 AP를 추가해도 구조가 덜 흔들립니다.

    특히 MikroTik 홈랩에서는 RouterOS가 브리지와 VLAN 필터링을 잘 지원해서, 장비 수가 조금만 늘어나도 체감 차이가 큽니다.

    MikroTik 홈랩 네트워크 구성 사례

    이번 사례는 데이터센터급으로 복잡한 구조는 아니고, 집에서 충분히 따라 할 수 있는 수준입니다. 저는 관리 편의성과 보안 사이에서 균형을 맞추는 방향으로 잡았습니다.

    VLAN 용도 예시 대역 접근 정책
    10 관리망 192.168.10.0/24 라우터 관리, 스위치/AP 관리 허용
    20 서버망 192.168.20.0/24 내부 서비스 운영, 필요한 포트만 허용
    30 IoT망 192.168.30.0/24 인터넷 허용, 내부망 접근 제한
    40 사용자망 192.168.40.0/24 일반 PC/모바일, 서버 일부 접근 허용

    포트 역할은 이렇게 잡았습니다.

    • ether1: WAN(Uplink, 외부 회선 연결)
    • ether2: 관리용 Access 포트
    • ether3: 서버용 Access 포트
    • ether4: IoT용 Access 포트
    • ether5: 무선 AP 또는 관리형 스위치로 가는 Trunk(여러 VLAN 태그를 동시에 전달하는 포트)

    여기서 중요한 포인트는 처음부터 모든 포트를 트렁크로 만들지 않는 것입니다. 홈랩에서는 필요한 포트만 트렁크로 두고, 나머지는 명확하게 Access 포트로 두는 편이 훨씬 덜 헷갈립니다.

    MikroTik 홈랩 VLAN 포트 매핑과 트렁크 구성 이미지

    각 이더넷 포트가 어떤 VLAN에 연결되는지 보여주는 포트 매핑 예시입니다.

    MikroTik 홈랩 VLAN 설정 전에 먼저 정리할 개념

    VLAN 설정에서 많이 헷갈리는 게 Tagged와 Untagged입니다. 저도 여기서 한참 헤맸습니다.

    • Tagged: VLAN 번호 태그를 붙여서 전달합니다. 스위치 간 연결이나 AP 업링크에 주로 씁니다.
    • Untagged: 일반 장비가 그대로 연결되어도 되도록 태그 없이 보냅니다. PC나 프린터 같은 단말 포트에 씁니다.
    • PVID: 포트로 들어오는 언태그드 트래픽을 어느 VLAN에 넣을지 정하는 기본 VLAN ID입니다.

    쉽게 말해, 트렁크 포트는 여러 VLAN 트래픽을 라벨 붙여서 보내는 길이고, 액세스 포트는 한 종류만 받는 문이라고 생각하면 이해가 빠릅니다.

    MikroTik 라우터에서 VLAN 설정하기

    이제 실전입니다. 아래 예시는 RouterOS CLI 기준입니다. 인터페이스 이름과 포트 구성은 장비마다 다를 수 있으니 그대로 붙여 넣기 전에 꼭 확인하세요. 특히 VLAN 필터링은 제일 마지막에 켜는 편이 안전합니다.

    1. 브리지를 만들고, 처음에는 VLAN 필터링을 끈 상태로 구성합니다.
    2. 각 포트를 브리지에 넣고 PVID를 지정합니다.
    3. 브리지 위에 VLAN 인터페이스를 만들고 IP를 할당합니다.
    4. 브리지 VLAN 테이블을 작성합니다.
    5. 마지막에 VLAN 필터링을 켭니다.
    /interface bridge
    add name=br-lan vlan-filtering=no comment="HomeLab bridge"
    
    /interface bridge port
    add bridge=br-lan interface=ether2 pvid=10 comment="Mgmt access"
    add bridge=br-lan interface=ether3 pvid=20 comment="Server access"
    add bridge=br-lan interface=ether4 pvid=30 comment="IoT access"
    add bridge=br-lan interface=ether5 comment="Trunk to AP or managed switch"
    
    /interface vlan
    add interface=br-lan name=vlan10-mgmt vlan-id=10
    add interface=br-lan name=vlan20-server vlan-id=20
    add interface=br-lan name=vlan30-iot vlan-id=30
    add interface=br-lan name=vlan40-user vlan-id=40
    
    /ip address
    add address=192.168.10.1/24 interface=vlan10-mgmt
    add address=192.168.20.1/24 interface=vlan20-server
    add address=192.168.30.1/24 interface=vlan30-iot
    add address=192.168.40.1/24 interface=vlan40-user
    
    /interface bridge vlan
    add bridge=br-lan vlan-ids=10 tagged=br-lan,ether5 untagged=ether2
    add bridge=br-lan vlan-ids=20 tagged=br-lan,ether5 untagged=ether3
    add bridge=br-lan vlan-ids=30 tagged=br-lan,ether5 untagged=ether4
    add bridge=br-lan vlan-ids=40 tagged=br-lan,ether5
    
    /interface bridge
    set br-lan vlan-filtering=yes

    여기서 중요한 건 CPU 포트 역할을 하는 브리지 자체를 tagged에 넣는 것입니다. 이걸 빼먹으면 라우터가 해당 VLAN 트래픽을 제대로 처리하지 못해서, 설정은 맞는 것 같은데 IP도 안 붙고 DHCP도 안 되는 상황이 나올 수 있습니다.

    DHCP까지 같이 구성하려면 이렇게 이어가면 됩니다. RouterOS에서는 DHCP 서버가 기본적으로 비활성 상태로 추가되므로, 예시처럼 disabled=no를 넣어 주는 편이 확실합니다.

    /ip pool
    add name=pool-mgmt ranges=192.168.10.100-192.168.10.199
    add name=pool-server ranges=192.168.20.100-192.168.20.199
    add name=pool-iot ranges=192.168.30.100-192.168.30.199
    add name=pool-user ranges=192.168.40.100-192.168.40.199
    
    /ip dhcp-server
    add name=dhcp-mgmt interface=vlan10-mgmt address-pool=pool-mgmt disabled=no
    add name=dhcp-server interface=vlan20-server address-pool=pool-server disabled=no
    add name=dhcp-iot interface=vlan30-iot address-pool=pool-iot disabled=no
    add name=dhcp-user interface=vlan40-user address-pool=pool-user disabled=no
    
    /ip dhcp-server network
    add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1
    add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=192.168.20.1
    add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1
    add address=192.168.40.0/24 gateway=192.168.40.1 dns-server=192.168.40.1
    
    /ip dns
    set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8

    여기서 한 가지 더 챙길 부분이 있습니다. DHCP에서 각 VLAN의 게이트웨이 주소를 DNS 서버로 내려줄 거라면, 라우터 자체 DNS 리졸버도 같이 켜줘야 합니다. 이걸 빼먹으면 방화벽은 멀쩡한데 웹 접속만 안 되는 묘한 상황이 생기더라고요.

    MikroTik 라우터 VLAN 설정 작업 장면

    브리지, VLAN 인터페이스, 포트 PVID를 설정하는 실제 구성 흐름을 보여주는 장면입니다.

    MikroTik 홈랩 방화벽 규칙 설계: 막을 건 막고, 열 건 열기

    VLAN만 나눠 놓으면 끝이 아닙니다. 진짜 핵심은 방화벽 규칙입니다. VLAN을 나눠도 라우터가 그 사이를 라우팅해 주기 때문에, 규칙을 안 잡으면 서로 통신이 됩니다. 이 부분이 초보 때 가장 많이 놓치는 포인트였습니다.

    저는 아래 원칙으로 갔습니다.

    • 라우터 자체 관리 접근은 관리망에서만 허용
    • IoT망은 인터넷만 허용하고 내부망 접근은 기본 차단
    • 사용자망은 필요한 서버 서비스만 접근 허용
    • Established/Related 연결은 먼저 허용
    • 마지막에는 명시적 Drop 규칙으로 정리

    그리고 일반적인 가정용 회선이라면 인터넷 연결을 위해 NAT(srcnat/masquerade)도 같이 필요합니다. 이 규칙이 빠지면 VLAN 분리는 됐는데 외부 인터넷이 안 되는 경우가 많습니다.

    /interface list
    add name=WAN
    add name=LAN
    
    /interface list member
    add interface=ether1 list=WAN
    add interface=vlan10-mgmt list=LAN
    add interface=vlan20-server list=LAN
    add interface=vlan30-iot list=LAN
    add interface=vlan40-user list=LAN
    
    /ip firewall address-list
    add list=internal-nets address=10.0.0.0/8
    add list=internal-nets address=172.16.0.0/12
    add list=internal-nets address=192.168.0.0/16
    
    /ip firewall filter
    add chain=input action=accept connection-state=established,related comment="Allow established, related"
    add chain=input action=drop connection-state=invalid comment="Drop invalid"
    add chain=input action=accept protocol=icmp in-interface-list=LAN comment="Allow ICMP from LAN"
    add chain=input action=accept in-interface=vlan10-mgmt src-address=192.168.10.0/24 comment="Allow router management from mgmt VLAN"
    add chain=input action=drop in-interface-list=WAN comment="Drop all input from WAN"
    add chain=input action=drop in-interface-list=LAN comment="Block router access from non-mgmt VLANs"
    
    add chain=forward action=accept connection-state=established,related comment="Allow established, related forward"
    add chain=forward action=drop connection-state=invalid comment="Drop invalid forward"
    add chain=forward action=accept src-address=192.168.10.0/24 comment="Mgmt VLAN full access"
    add chain=forward action=accept src-address=192.168.40.0/24 dst-address=192.168.20.0/24 protocol=tcp dst-port=80,443,22 comment="User VLAN to selected server services"
    add chain=forward action=drop src-address=192.168.30.0/24 dst-address-list=internal-nets comment="Block IoT to internal networks"
    add chain=forward action=accept src-address=192.168.30.0/24 out-interface-list=WAN comment="IoT to internet only"
    add chain=forward action=accept in-interface-list=LAN out-interface-list=WAN comment="Allow LAN to internet"
    add chain=forward action=drop in-interface-list=LAN out-interface-list=LAN comment="Default deny inter-VLAN"
    
    /ip firewall nat
    add chain=srcnat out-interface-list=WAN action=masquerade comment="Home internet NAT"

    여기서 실무적으로 중요한 건 순서입니다. 방화벽 규칙은 위에서 아래로 평가되기 때문에, 허용 규칙보다 Drop을 먼저 올려버리면 열어 둔 줄 알았던 서비스가 전부 막혀 버릴 수 있습니다. 저도 SSH 하나 열겠다고 손봤다가 왜 안 되지 싶어서 한참 들여다본 적이 있습니다.

    추천하는 방화벽 접근 방식

    1. 먼저 Established/Related 허용
    2. 그다음 라우터 자체 보호용 input 규칙 정리
    3. 서비스별 예외 허용 추가
    4. 마지막에 기본 차단(Default Deny)

    이 구조로 가면 나중에 규칙이 늘어나도 덜 망가집니다. MikroTik 홈랩을 오래 굴릴 생각이면 이게 꽤 중요합니다.

    ⚠️ 실제로 겪었던 문제와 해결법

    여기서는 제가 실제로 많이 헷갈렸던 부분만 적어보겠습니다. 문서만 보면 간단해 보이는데, 현장에서는 꼭 한 번씩 걸리더라고요.

    1. VLAN 필터링을 너무 빨리 켠 경우

    증상: 설정하다가 갑자기 접속이 끊깁니다.

    원인: 브리지 VLAN 테이블이 덜 잡힌 상태에서 vlan-filtering=yes를 먼저 켠 경우입니다.

    해결: Safe Mode에서 작업하거나, 콘솔 접속 가능한 상태에서 마지막 단계에 켜는 게 안전합니다.

    2. 트렁크 포트인데 상대 장비가 태그를 못 받는 경우

    증상: AP나 관리형 스위치 뒤쪽 VLAN이 전부 안 뜹니다.

    원인: 반대편 장비 포트가 Access로 되어 있거나 Native VLAN 설정이 다를 때가 많습니다.

    해결: 양쪽 장비에서 Tagged/Untagged 정책을 맞추고, 필요한 경우 관리 VLAN을 따로 지정합니다.

    3. IoT는 막았는데 Chromecast류 장비 검색이 안 되는 경우

    이건 꽤 자연스러운 현상입니다. 멀티캐스트나 브로드캐스트 기반 탐색은 VLAN 경계에서 그대로 끊기는 경우가 많거든요. 그래서 mDNS Repeater나 별도 예외 정책이 필요할 수 있습니다. 저는 보안 우선으로 두고 꼭 필요한 장비만 따로 예외를 넣었습니다.

    4. 방화벽은 맞는데 DNS 때문에 인터넷이 안 되는 경우

    의외로 자주 만납니다. 포워드 규칙은 열었는데 DNS 질의가 막혀 있거나, DHCP에서 DNS를 잘못 내려주면 사용자는 그냥 “인터넷 안 됨”으로 느낍니다. 이럴 땐 핑과 DNS 조회를 분리해서 보는 게 훨씬 빠릅니다.

    5. NAT를 빼먹어서 외부 인터넷이 안 되는 경우

    이것도 많이 나옵니다. 특히 집에서 MikroTik 라우터가 인터넷 경계 장비 역할을 한다면, 일반적으로 masquerade 규칙이 필요합니다. 상위 장비가 각 VLAN 대역으로 되돌아오는 정적 라우트를 알고 있지 않다면 NAT 없이 바로 인터넷이 되긴 어렵습니다.

    MikroTik 홈랩 방화벽 규칙과 트래픽 흐름 시각화

    관리망, 서버망, IoT망 사이에서 허용되는 경로와 차단되는 경로를 한눈에 보여주는 이미지입니다.

    검증 방법과 실제 결과

    설정을 끝냈다면 반드시 검증을 해야 합니다. 저는 보통 아래 순서로 확인합니다.

    1. 각 VLAN 포트에 장비를 하나씩 연결해서 DHCP 주소가 제대로 나오는지 확인
    2. 게이트웨이 핑이 되는지 확인
    3. 인터넷 접근이 필요한 VLAN은 외부 접속 확인
    4. 차단해야 하는 VLAN 간 접근이 실제로 막히는지 확인
    5. 허용해야 하는 서비스 포트만 열리는지 확인
    # 클라이언트 측 점검 예시
    ping 192.168.10.1
    ping 192.168.20.1
    nslookup example.com
    curl http://192.168.20.10
    ssh [email protected]

    제가 이 구조로 옮긴 뒤 가장 크게 느낀 변화는 두 가지였습니다. 첫째, 문제 원인을 찾는 시간이 확실히 줄었습니다. “이 장비는 VLAN 30 IoT망”이라고 딱 정리되어 있으니 문제 범위가 바로 좁혀지더라고요. 둘째, 홈 네트워크 보안이 눈에 띄게 안정됐습니다. 적어도 IoT 장비 하나 이상해졌다고 NAS나 하이퍼바이저까지 바로 노출되는 구조는 아니게 된 거죠.

    물론 단점도 있습니다. VLAN이 늘어나면 규칙 관리가 귀찮아집니다. 다만 초반 설계를 잘해 두면 이 불편은 꽤 줄어듭니다. 주소 대역 규칙, 인터페이스 리스트, Address List를 적극적으로 쓰면 나중에 정말 편합니다.

    정리: MikroTik 라우터로 홈랩을 나눌 때 기억할 것

    • VLAN 분리만으로 끝나지 않습니다. 방화벽 규칙이 같이 가야 진짜 분리입니다.
    • 관리망은 별도로 두는 게 좋습니다. 라우터, 스위치, AP 관리는 한 구역으로 모아 두면 운영이 편합니다.
    • IoT망은 기본 차단이 안전합니다. 필요할 때만 예외를 여는 방식이 덜 위험합니다.
    • 트렁크와 액세스 개념을 명확히 구분해야 합니다. 여기서 대부분 꼬입니다.
    • 인터넷 연결 검증에는 DNS와 NAT까지 같이 봐야 합니다. 이 둘이 빠지면 원인 파악이 더 어려워집니다.

    혹시 지금 MikroTik 홈랩을 운영 중인데 네트워크가 점점 복잡해지고 있다면, 가장 먼저 VLAN 2~3개만 나누는 것부터 시작해 보세요. 한 번 구조가 잡히면 이후에 무선 AP, Proxmox, NAS, 리버스 프록시 같은 요소를 붙일 때 훨씬 편합니다. 다음 글에서는 MikroTik 라우터와 무선 AP를 연동해서 SSID별 VLAN을 태우는 방법도 다뤄볼 예정입니다. 이전 글의 홈랩 IP 설계 원칙 글과 함께 보면 흐름이 더 잘 잡힐 겁니다.

    MikroTik 홈랩 VLAN 분리 전후 비교 인포그래픽

    VLAN과 방화벽 적용 전후의 차이를 요약한 비교 인포그래픽입니다.

    자주 묻는 질문

    Q1. 집에서 VLAN까지 꼭 해야 하나요?

    장비가 5~6대 이하이고 성격이 비슷하면 당장은 아닐 수도 있습니다. 하지만 서버, NAS, CCTV, IoT, 재택근무 PC가 섞이기 시작하면 분리해 두는 게 확실히 편합니다.

    Q2. MikroTik 라우터가 초보자에게 너무 어렵지 않나요?

    솔직히 쉽지는 않습니다. 저도 처음엔 메뉴 구조와 용어 때문에 꽤 헷갈렸습니다. 그래도 한 번 브리지, VLAN, 방화벽 흐름을 이해하면 아주 세밀하게 제어할 수 있다는 장점이 큽니다.

    Q3. 방화벽 규칙은 얼마나 세분화해야 하나요?

    처음에는 너무 잘게 나누지 않는 편이 낫습니다. 관리망 전체 허용, IoT망 인터넷만 허용, 사용자망에서 서버 특정 포트 허용 정도로 시작한 뒤 점진적으로 다듬는 방식이 현실적입니다.

  • [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 기본 설치 가이드와 함께 보시면 더 도움이 될 거예요.