본문으로 바로가기
← 목록으로
Infra홈랩HomeLabNASMikroTik2.5G패치패널IGMPProxyIPTVBTV회선이중화

홈랩 구축기 2탄 - 랙 조립, 회선 이중화, 그리고 IGMP-Proxy로 btv 연동하기

 · 읽는 시간 약 10

홈랩 구축 과정에서 10인치 미니랙용 패치패널 구하기, 랜선 커넥터 교체 등 예상치 못한 문제들을 해결했다. NAS와 Mac mini에 2.5G 랜카드를 추가해 외부 트래픽은 1G, 내부 트래픽은 2.5G로 역할을 분리했다. SK브로드밴드와 KT 회선을 이중화로 구성했으며, IGMP-Proxy 설정으로 IPTV를 정상 작동시켰다.

1탄에서 왜 홈랩을 만들기로 했는지, 무엇으로 무엇을 대체할지 설계를 정리했다면, 이번 2탄은 그걸 실제로 손에 쥐고 조립하면서 부딪힌 이야기다. 계획대로 딱 맞아떨어진 건 거의 없었다.

랙과 배선 — 계획대로 안 됐던 것들

미니랙(9U, 10인치)과 패치패널을 사면 바로 조립이 시작될 줄 알았다. 그런데 정작 10인치 규격 패치패널 재고가 있는 곳이 없어서, 알리를 통해 주문했다. 해외주문이라 주문하고도 1주일을 그냥 기다려야 했다. 미니랙 규격이 흔한 19인치가 아니라 10인치라서 부품 구하는 것부터가 난관이었다.

기다리는 동안 내부 배선도 손을 봤다. 원래는 기존 Cat5e 케이블을 전부 Cat6으로 교체해볼까 하는 욕심이 있었는데, 막상 해보니 무리였다. 결국 Cat6 전면 교체는 포기하고, 대신 단자함 안에 있던 UTP RJ45 커넥터들을 손봤다. 오래돼서 깨지고 부러진 것들이 꽤 있었는데, Cat5e RJ45를 새로 구매해서 부러진 부분을 전부 교체했다. 여기서 미리 사둔 UTP 케이블과 랜툴이 제 몫을 했다.

무선 쪽도 정리했다. 기존에 천장에 달려있던 ipTime 유무선 공유기를 떼어내고, 그 자리에 PoE AP인 EAP720을 그대로 설치했다.

천장에 설치한 EAP720
천장에 설치한 EAP720
기존 ipTime이 있던 자리에 그대로 설치한 EAP720. PoE로 전원이 공급되니 전원 케이블 없이 깔끔하다.

EAP720 배선 정리
EAP720 배선 정리
몰딩을 따라 케이블을 정리해 마감했다.

랙 안쪽도 처음엔 아수라장이었다. UPS 배터리 케이블, 스위치·모뎀 전원선, 각종 랜선이 뒤엉켜서 정리가 쉽지 않았다.

랙 뒤쪽에 UPS를 둔 모습
랙 뒤쪽에 UPS를 둔 모습

SK브로드밴드 모뎀은 랙 옆에 그대로 세워뒀다. 랙 안에 넣기엔 자리가 애매해서, 랙 바로 옆에 붙여서 케이블만 안으로 끌어들이는 방식으로 정리했다.

SK브로드밴드 모뎀
SK브로드밴드 모뎀
단자함이 너무 작아서 랙 옆에 세워둔 SK브로드밴드 모뎀. 여기서 나온 회선이 hEX S로 들어간다.

NAS와 Mac mini 네트워크 구성 — 1G와 2.5G를 나누다

NAS 기본 랜포트는 1G 2포트였다. 이걸 그대로 쓰기엔 2.5G 스위치를 도입한 의미가 없어서, 2.5G USB 랜카드를 추가로 구매해 붙였다.

  • 2.5G 포트: 2.5G 허브에 연결 — 내부 트래픽(Mac mini나 PC와 주고받는 대용량 파일)이 여기로 지나간다.
  • 1G 포트: hEX S에 연결 — 외부에서 들어오는 트래픽은 여기로 받는다.

즉 "밖에서 들어오는 데이터는 1G, 안에서 오가는 데이터는 2.5G"로 역할을 나눈 셈이다. 외부 트래픽이야 어차피 회선 자체가 1G를 넘기 힘드니 병목이 안 되고, 내부에서 자주 오가는 대용량 파일은 2.5G로 빠르게 처리하도록 한 것이다.

Mac mini도 사정은 같았다. 기본 랜포트가 1G라, 여기에도 2.5G 랜카드를 추가로 붙였다. 구성 방식은 NAS와 동일하다 — 1G는 hEX S에 연결해서 외부 트래픽을 받고, 2.5G는 내부에서 NAS나 PC와 데이터를 주고받는 용도로 쓴다. 라이브 서비스와 NAS 사이에 데이터가 자주 오가는 걸 감안하면, 여기 병목이 생기면 의미가 없기 때문이다.

실제 포트 구성

말로만 설명하면 헷갈릴 것 같아서, hEX S와 CRS310의 실제 포트 배치를 정리했다.

hEX S

포트 연결 대상 비고
ether1 SKB 메인 회선
ether2 KT 백업 회선(failover)
ether3 CRS310 2.5G 업링크
ether4 Mac mini 외부 서비스, 포트포워딩
ether5 NAS 외부 서비스, 포트포워딩

CRS310

포트 연결 대상 비고
ether1 hEX S 업링크
ether3 PC, SKB IPTV
ether4 EAP720 AP
ether5 Mac mini 내부(2.5G)
ether7 NAS 내부(2.5G)

원래 IoT 허브(스마트싱스 허브)도 여기 물려있었는데, 스마트싱스 스테이션으로 교체하면서 포트 하나가 비었다. 나중에 뭔가 추가할 때 여유 포트로 쓸 생각이다.

전원 쪽은 UPS 덕분에 한시름 놓았다. 랙 안 장비들이 전부 UPS를 거쳐 전원을 공급받다 보니, 정전이나 순간적인 전압 문제가 있어도 안정적으로 버텨준다.

인터넷 회선 이중화 — KT와 SKB

1탄에서 언급했던 대로, SK브로드밴드를 가족결합으로 저렴하게 쓰고 있지만 간혹 불안정한 순간이 있었다. 그래서 KT 100M을 추가로 붙여서 failover 구성을 진행했다. 메인 회선은 그대로 SKB로 두고, KT는 백업 회선으로 물려뒀다.

방화벽 설정과 btv(IPTV) 연동

이번 구축에서 가장 손이 많이 간 부분이 방화벽과 IPTV 연동이었다.

기본 보안 룰

hEX S의 기본(defconf) 룰은 그대로 유지했다. established/related 연결 허용, invalid 패킷 drop, WAN에서 들어오는 비-dstnat 트래픽 차단 같은 표준 룰이다. 여기에 멀티캐스트 관련 룰(IGMP 허용, 멀티캐스트 forward 허용)을 추가했는데, 기존설정값을 그대로 두면 인터넷은 가능하지만, iptv는 볼 수 없기 때문에 btv를 볼 수 있게 하기 위한 사전 작업이었다.

IGMP Proxy 설정으로 btv 연결하기

IPTV(BTV)를 홈랩 네트워크 안에 그대로 넣으려고 이것저것 찾아보다가, IGMP-Proxy 설정이 필요하다는 걸 알게 됐다. IPTV는 멀티캐스트 스트림으로 오는데, 라우터가 이걸 내부로 프록시해주지 않으면 그냥 안 잡힌다.

[admin@hEX] > /routing/igmp-proxy/interface print detail
Flags: X - DISABLED, I - INACTIVE, D - DYNAMIC; U - UPSTREAM
 0  U interface=ether1 threshold=1 alternative-subnets=0.0.0.0/0 upstream=yes
 1    interface=bridge threshold=1 alternative-subnets="" upstream=no

WAN 쪽 인터페이스(ether1)를 upstream으로 잡고, 내부 bridge를 downstream으로 잡아서 멀티캐스트 스트림이 내부로 넘어오도록 구성했다.

여기에 mangle 규칙으로 IPTV 트래픽을 별도로 마킹해뒀다.

[admin@hEX] > /ip/firewall/mangle print detail
 3    ;;; Mark IPTV Multicast
      chain=forward action=mark-packet new-packet-mark=iptv-packets passthrough=yes dst-address=224.0.0.0/4
 4    ;;; Mark IGMP control
      chain=forward action=mark-packet new-packet-mark=iptv-packets passthrough=yes protocol=igmp

멀티캐스트 목적지(224.0.0.0/4)로 가는 패킷과 IGMP 컨트롤 패킷에 iptv-packets라는 마크를 붙여서, 이 트래픽을 다른 트래픽과 구분해 처리할 수 있게 했다. 이렇게 설정한 뒤로 BTV 연동이 정상적으로 됐다.

정상적으로 보이는 btv
정상적으로 보이는 btv
btv가 정상적으로 연결 된 부분을 확인 할 수 있다

NAT — 포트포워딩과 루프백

외부에서 홈랩 안의 서비스에 접근할 수 있도록 NAT도 구성했다.

[admin@hEX] > /ip/firewall/nat print detail
 0    ;;; defconf: masquerade
      chain=srcnat action=masquerade out-interface-list=WAN ipsec-policy=out,none
 1    ;;; port-forward rule; to WEB
      chain=dstnat action=dst-nat to-addresses=192.168.88.15 protocol=tcp dst-address-list=bridgeLocal dst-port=443,80
 2    ;;; port-forward rule; to NAS
      chain=dstnat action=dst-nat to-addresses=192.168.88.14 protocol=tcp dst-address-list=bridgeLocal dst-port=8100,8443
 3    ;;; nat-loopback rule; to WEB
      chain=srcnat action=masquerade src-address=192.168.88.0/24 dst-address=192.168.88.15
 4    ;;; nat-loopback rule; to NAS
      chain=srcnat action=masquerade src-address=192.168.88.0/24 dst-address=192.168.88.14

WEB 서버(443/80)와 NAS(8100/8443)로 들어오는 외부 트래픽을 각각 포트포워딩했고, 내부망에서 같은 서비스에 접속할 때를 위한 NAT 루프백 규칙도 따로 추가했다. 다만 SSH와 SMB는 여기 포함시키지 않았다 — 이 두 개는 외부에서 직접 열어두지 않고, 앞으로 WireGuard VPN 터널을 통해서만 접속하도록 할 계획이다.

완성된 모습

배선을 다 정리하고 나니 이제야 랙다운 모양이 나왔다. 맨 위에 CRS310 스위치와 패치패널, 그 아래 Mac mini, 맨 아래 시놀로지 NAS(DS918+) 순으로 배치했다.

완성된 랙 내부
완성된 랙 내부
위에서부터 CRS310 스위치, 패치패널, Mac mini, NAS 순으로 자리 잡은 모습.

다음 편에서는

이번 2탄에서 VLAN 설정은 다루지 않았다. 처음엔 같이 해보려 했지만, 이번 구축 범위에서는 보류하고 다음 기회에 다시 시도하기로 했다. 이어서 작성하게 된다면 3탄에서는 WireGuard VPN 구축과 VLAN 재도전 이야기를 다룰 예정이다.

댓글 0

© 2026 Kim Zero. All rights reserved.