홈랩 구축기 2탄 - 랙 조립, 회선 이중화, 그리고 IGMP-Proxy로 btv 연동하기
· 읽는 시간 약 10분
1탄에서 왜 홈랩을 만들기로 했는지, 무엇으로 무엇을 대체할지 설계를 정리했다면, 이번 2탄은 그걸 실제로 손에 쥐고 조립하면서 부딪힌 이야기다. 계획대로 딱 맞아떨어진 건 거의 없었다.
랙과 배선 — 계획대로 안 됐던 것들
미니랙(9U, 10인치)과 패치패널을 사면 바로 조립이 시작될 줄 알았다. 그런데 정작 10인치 규격 패치패널 재고가 있는 곳이 없어서, 알리를 통해 주문했다. 해외주문이라 주문하고도 1주일을 그냥 기다려야 했다. 미니랙 규격이 흔한 19인치가 아니라 10인치라서 부품 구하는 것부터가 난관이었다.
기다리는 동안 내부 배선도 손을 봤다. 원래는 기존 Cat5e 케이블을 전부 Cat6으로 교체해볼까 하는 욕심이 있었는데, 막상 해보니 무리였다. 결국 Cat6 전면 교체는 포기하고, 대신 단자함 안에 있던 UTP RJ45 커넥터들을 손봤다. 오래돼서 깨지고 부러진 것들이 꽤 있었는데, Cat5e RJ45를 새로 구매해서 부러진 부분을 전부 교체했다. 여기서 미리 사둔 UTP 케이블과 랜툴이 제 몫을 했다.
무선 쪽도 정리했다. 기존에 천장에 달려있던 ipTime 유무선 공유기를 떼어내고, 그 자리에 PoE AP인 EAP720을 그대로 설치했다.


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

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

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 연동이 정상적으로 됐다.

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+) 순으로 배치했다.

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