1 라우터 대신 NAS에서 Mihomo를 돌리는 이유
가정용 라우터 펌웨어를 바꾸지 않고도 NAS 프록시 한 대로 Clash 호환 규칙 엔진을 상시 실행할 수 있다는 점이 큰 매력입니다. DSM 7은 패키지 생태가 정돈되어 있고 스냅샷·백업과도 잘 맞아, 설정 파일(config.yaml)만 잘 보관하면 재설치 후에도 빠르게 복구할 수 있습니다. 콘솔·게임기처럼 «기본 경로만 NAS로» 보내고 싶은 시나리오는 콘솔·게이트웨이 가이드와 겹치는 부분이 있으니, 본문은 NAS에 두는 경우에 맞춰 Docker 층과 DSM 방화벽을 추가로 설명합니다.
다만 Mihomo 자체는 주로 HTTP·SOCKS 혹은 TUN 계층에서 동작합니다. LAN 클라이언트가 단순히 기본 게이트웨이만 NAS IP로 바꾼다고 해서 모든 TCP·UDP가 자동으로 프록시 규칙을 타는 것은 아니며, OS가 «프록시 없이 IP 패킷만» 보낼 때는 NAS 쪽에서 포워딩·NAT·리다이렉트 또는 클라이언트 측 시스템 프록시·PAC 같은 추가 장치가 필요합니다. 아래에서는 먼저 가장 검증하기 쉬운 경로(같은 서브넷에서 mixed-port로 프록시 연결)를 확실히 올린 뒤, 필요할 때만 게이트웨이·NAT 이야기로 넓히는 순서를 권합니다.
2 전제 조건과 주소 고정
Container Manager(구 Docker) 패키지를 설치하고, NAS의 LAN IP를 공유기 DHCP 범위 밖이 아니라면 주소 예약 또는 수동 고정으로 바뀌지 않게 맞춥니다. 게이트웨이를 가리킬 대상이 되는 IP가 재부팅마다 달라지면 스마트폰·PC 설정을 매번 고쳐야 합니다. 이중 LAN·VLAN을 쓰는 홈이라면, Mihomo 컨테이너가 붙은 브리지가 클라이언트와 같은 L2 세그먼트인지도 먼저 확인하세요.
구독 URL이 바로 YAML이 아니라면 구독 변환 가이드를 참고해 Mihomo가 읽을 수 있는 프로필로 만든 뒤 아래 config.yaml에 합치면 됩니다. DNS 유출·FakeIP 정책은 환경에 따라 민감하므로 Meta DNS 가이드를 함께 보는 것이 안전합니다.
external-controller는 가능하면 127.0.0.1에만 두고, 대시보드는 SSH 포트 포워딩이나 VPN 안에서만 쓰세요.
3 Docker 이미지·볼륨·포트 매핑
공식 또는 널리 쓰이는 Mihomo 이미지를 골라 컨테이너를 만듭니다. 태그는 배포판마다 다르므로 레지스트리 설명의 최신 태그를 확인하세요. 설정 디렉터리는 호스트 쪽 폴더에 두는 편이 백업하기 좋습니다. 예를 들어 DSM에서 /docker/mihomo 같은 공유 폴더를 만들고 그 안에 config.yaml·Country.mmdb 등을 둡니다. GUI에서 «볼륨»으로 호스트 경로를 /root/.config/mihomo 등 컨테이너 문서에 안내된 경로에 마운트하면 됩니다.
포트는 대표적으로 다음을 열어둡니다(실제 값은 본인 YAML과 일치해야 합니다).
- mixed-port(예:
7890): HTTP·SOCKS를 함께 받는 클라이언트 접속용. - DNS 리스너를 쓰는 경우: YAML에 맞춘 TCP/UDP(예:
1053) 포워딩. - external-controller: 기본적으로 로컬 전용이면 컨테이너 밖에서 쓰지 않을 것이므로 매핑하지 않아도 됩니다.
«호스트 네트워크» 모드를 쓰는 이미지가 있다면 DSM 지원 범위와 보안 정책을 확인하세요. 브리지 네트워크에 두었다면 위 포트를 호스트의 NAS_LAN_IP:7890으로 접근 가능하게 퍼블리시합니다.
# Example only — image name/tag must match your registry
services:
mihomo:
image: meta-mihomo:latest
restart: unless-stopped
volumes:
- /volume1/docker/mihomo:/root/.config/mihomo
ports:
- "7890:7890"
- "1053:1053/udp"
Linux 서버에 바이너리로 올리는 절차와 설정 문법은 Linux Mihomo·systemd 가이드와 동일한 계열이므로, YAML 검증·로그 위치만 Docker 쪽에 맞추면 됩니다.
4 config.yaml: Clash 호환과 allow-lan
LAN의 다른 기기가 NAS의 7890 등으로 직접 붙으려면 allow-lan을 true로 두어야 합니다. 그렇지 않으면 Mihomo가 루프백에만 바인딩되어 스마트폰에서 NAS IP로 연결이 거절됩니다. 모드는 rule을 유지하고, mixed-port를 앞에서 퍼블리시한 포트와 맞춥니다.
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
external-controller: 127.0.0.1:9090
# dns: ...
bind-address를 특정 LAN 대역으로 제한할 수 있는 환경이면 공격 면을 줄이는 데 도움이 됩니다. 대시보드로 프로필을 바꾸려면 외부 컨트롤러·Yacd 글의 접근 방식을 참고하되, NAS에서는 반드시 신뢰 네트워크 안으로 한정하세요.
privileged·cap_add·/dev/net/tun 등이 필요하고 DSM·커널 제약이 큽니다. 초기 구축은 mixed 포트·클라이언트 측 프록시 설정으로 검증한 뒤 진지하게 검토하는 편이 안전합니다.
5 DSM 방화벽과 «최소 개방」
제어판 → 보안 → 방화벽에서 규칙을 추가합니다. 원칙은 «LAN 서브넷에서만 NAS의 Mihomo 포트로 들어오는 것 허용»입니다. 예: 소스를 192.168.1.0/24, 대상 포트 7890, 동의 TCP(및 DNS를 쓴다면 UDP)로 제한합니다. 관리자 웹 DSM 포트와 혼동하지 말고, 불필요한 포트는 열지 않습니다.
공유기에 포트 포워딩으로 Mihomo를 인터넷에 노출하는 구성은 강력히 비권장입니다. NAS 프록시는 가정·사무실 내부망 용도로 두고, 원격 접속이 필요하면 VPN이나 Synology의 안전한 원격 접속 옵션을 먼저 고려하세요.
6 DHCP·수동으로 «NAS를 기본 경로로»
6-1. 가장 먼저 권장: 시스템·Wi-Fi 프록시로 NAS:7890
같은 서브넷에서 스마트폰·Windows·macOS의 HTTP/HTTPS 프록시 또는 SOCKS 서버에 NAS_LAN_IP:7890을 넣으면, 규칙 엔진이 적용된 트래픽을 빠르게 검증할 수 있습니다. 브라우저만 프록시를 쓰게 하거나 OS 전역 프록시를 켜는 방법은 기기마다 다르지만, 이 방식이 디버깅과 롤백이 가장 쉽습니다.
6-2. 공유기 DHCP에서 기본 게이트웨이를 NAS로
일부 공유기는 DHCP 옵션으로 기본 게이트웨이를 NAS IP로 배포할 수 있습니다. 그러면 클라이언트의 IP 패킷은 우선 NAS로 보내지지만, NAS가 실제 인터넷으로 내보내는 라우터 역할을 하려면 IP 포워딩과 NAT(마스커레이드)가 갖춰져야 합니다. 단순히 Docker 컨테이너만 떠 있는 상태에서는 이 경로가 자동으로 완성되지 않을 수 있으므로, «게이트웨이만 바꿨는데 인터넷이 안 된다»면 다음 절을 확인하세요.
6-3. 특정 기기만 수동 정적 라우팅·게이트웨이
테스트용으로 한 대의 PC에만 기본 게이트웨이를 NAS로 두고, 나머지 가족 기기는 공유기 게이트웨이를 유지하는 방법도 있습니다. 운영체제별로 «고급 TCP/IP» 또는 Wi-Fi 세부 정보에서 조정합니다. 실패 시 즉시 원래 게이트웨이로 되돌릴 수 있게 스크린샷이나 메모를 남겨 두세요.
7 진짜 L3 «투명»에 가깝게 가려면(NAT·포워딩)
사이드카 게이트웨이로 NAS를 쓰는 고급 구성에서는, NAS가 LAN에서 온 패킷을 WAN(또는 상위 라우터) 방향으로 다시 내보내며 출발지 주소를 바꾸는 NAT이 필요합니다. 리눅스에서는 net.ipv4.ip_forward=1과 iptables/nftables 규칙으로 구현하는 경우가 많습니다. Synology는 모델·펌웨어에 따라 SSH로의 접근·방화벽·추가 패키지 허용 여부가 다르므로, 여기서는 모든 모델에 동일한 명령을 강요하지 않고 «필요한 개념」만 정리합니다.
또 다른 접근은 상위 라우터의 게이트웨이는 그대로 두고, DNS만 NAS의 DNS 리스너로 보내거나, 특정 도메인만 정책 라우팅하는 방식입니다. 홈 네트워크 정책·가족 구성원의 허용 범위에 맞는 쪽을 선택하면 됩니다.
8 동작 확인과 트러블슈팅
- LAN에서 포트가 안 열림: DSM 방화벽·컨테이너 포트 매핑·
allow-lan세 가지를 다시 맞춥니다. - 규칙은 있는데 특정 사이트만 실패: DNS가 클라이언트 로컬에 고정되어 FakeIP·분기와 어긋나는 경우가 많습니다. DNS 블록을 Mihomo 권장 흐름에 맞춥니다.
- 게이트웨이만 NAS로 바꿨더니 전체 단절: NAT·포워딩 미구성 가능성이 큽니다. 우선 §6-1 방식으로 프록시만 검증한 뒤 단계적으로 올리세요.
- 로그 확인: Container Manager 로거나 마운트한 볼륨의 로그 파일에서 Mihomo 메시지를 확인합니다.
9 정리
Synology DSM 7에서 Docker로 Mihomo를 올리고 Clash 호환 프로필을 쓰면, 라우터를 건드리지 않고도 집 안에서 일관된 규칙 기반 NAS 프록시를 만들 수 있습니다. 핵심은 볼륨에 설정을 두고 mixed-port와 allow-lan을 맞춘 뒤, 방화벽으로 LAN 한정 개방을 하는 것, 그리고 기본 게이트웨이를 NAS로 줄 때는 NAT 필요 여부를 미리 이해하는 것입니다. PC·모바일에서 GUI 클라이언트가 더 편하다면 사이트 Clash 다운로드 페이지에서 플랫폼에 맞는 앱을 고르고, NAS는 가정 공용 출구·실험용 코어로 역할을 나누면 운영이 한결 수월합니다.
다른 도구에 비해 Clash·Mihomo 생태계는 규칙·구독 흐름이 문서와 도구 간에 통일되어 있어, 한 번 설정한 프로필을 여러 환경으로 옮기기 좋습니다. NAS에서 안정적으로 돌아가는 것을 확인한 뒤에도 데스크톱에서는 GUI로 세부 튜닝을 이어가며 쓰면 균형이 잡힙니다.