반응형

Tailscale의 서브넷 라우터 기능을 시놀로지 NAS에 설정하면 Tailscale을 설치할 수 없는 구형 기기도 원격으로 접속할 수 있다.

서브넷(Subnet)은 같은 네트워크에 연결된 기기들의 그룹을 의미한다. 우리가 흔히 사용하는 인터넷 공유기는 통신사(ISP)에서 받은 공인 IP 주소를 이용해, 집 안의 여러 기기가 인터넷을 함께 쓸 수 있도록 별도의 내부 네트워크(사설망)를 구성한다. 이 내부 네트워크에 속한 기기들은 공유기로부터 192.168.1.x 같은 내부 IP 주소를 할당받는데, 192.168.1.x 대역 전체를 하나의 서브넷으로 볼 수 있다.

서브넷 라우터(Subnet Router)는 말 그대로 특정 서브넷에 접근할 수 있도록 통로 역할을 하는 장치다. 시놀로지 NAS를 서브넷 라우터로 설정하면 외부에서 스마트폰이나 노트북으로 Tailscale에 접속했을 때 NAS는 물론 NAS와 같은 서브넷(예: 192.168.1.x)에 있는 다른 모든 기기에도 접근할 수 있다. 예를 들어 공유기 관리자 페이지의 내부 주소가 192.168.1.1 이라면, 어디서든 Tailscale을 통해 해당 주소에 접속할 수 있다.

Tailscale을 이용하면 서브넷 라우터 설정도 간편하게 할 수 있다. NAS의 로컬 네트워크 정보를 Tailscale 네트워크에 광고(Advertise)하면, 외부 기기들은 이 정보를 바탕으로 로컬 네트워크에 있는 어떤 장치와도 통신할 수 있게 된다. 시놀로지 NAS가 Tailscale 가상 네트워크와 집 안의 로컬 네트워크를 서로 연결해 주는 다리(게이트웨이) 역할을 수행하는 것이다.

 

 

사전 준비


  • 시놀로지 나스에 Tailscale이 설치되어 있어야 한다 — 참고 포스팅
  • 서브넷 라우터를 구성하려면 TUN 설정이 활성화된 상태여야 한다 — 참고 포스팅

 

 

IP 포워딩 활성화


먼저 시놀로지 나스에 SSH로 접속한 뒤 관리자 권한을 획득한다. SSH를 처음 사용한다면 가이드 포스팅을 참고하자.

# 나스 SSH 접속 명령어 형식
# 예: myuser@192.168.1.50 -p 2222
ssh [사용자명]@[호스트 주소] -p [포트 번호]

# 관리자 권한 획득 (비밀번호 입력 필요)
sudo -i

 

그런 다음 NAS의 IP 포워딩을 활성화한다. 이렇게 하면 NAS가 라우터처럼 작동하여, 서로 다른 네트워크 인터페이스들의 데이터를 중계(전달)할 수 있게 된다.

# IPv4 포워딩 설정 추가
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
# IPv6 포워딩 설정 추가
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
# 설정 파일 적용
sysctl -p /etc/sysctl.conf

 

 

서브넷 네트워크에 광고


이제 NAS가 연결된 로컬 네트워크 대역(서브넷)을 Tailscale에게 알려줘야 한다. 아래 명령어에서 192.168.1.0/24 부분을 본인의 내부 네트워크 대역에 맞게 수정한 후 명령어를 입력한다. 필자가 사용하는 공유기는 192.168.1.x 형식의 내부 IP를 할당하므로 192.168.1.0/24으로 입력했다.

tailscale set --advertise-routes=192.168.1.0/24

 

(배경지식) IP주소

우리가 흔히 사용하는 IP 주소(IPv4)는 총 32비트(bit)로 구성되며, 점(.)으로 구분된 4개의 8비트 숫자로 표현한다. 8비트는 0부터 255(11111111)까지의 값을 가질 수 있으므로, IPv4 주소는 0.0.0.0 부터 255.255.255.255 까지의 범위를 갖는다.

 

 

(배경지식) 서브넷 마스크

192.168.1.0/24 형식의 주소에서 /24는 서브넷 마스크를 의미한다. 서브넷 마스크는 IP 주소에서 네트워크 영역과 호스트 영역을 구분하는 기준으로, 앞의 24비트가 네트워크 주소임을 나타낸다. IPv4는 총 32비트이므로 남은 8비트는 호스트 주소로 사용된다.

 

  • 네트워크 영역(Network ID): 해당 네트워크에 속한 기기들이 공통으로 사용하는 고정 주소
  • 호스트 영역(Host ID): 같은 네트워크 내에서 개별 기기를 구분하기 위한 숫자

 

서브넷 마스크(Subnet Mask) 이름 그대로 네트워크 영역(고정)은 1로 마스킹하고, 호스트 영역(가변)은 0으로 마스킹한다고 이해하면 된다.

 

 

호스트 영역에서 0(예: 192.168.1.0)은 네트워크 주소, 255(예: 192.168.1.255)는 브로드캐스트 주소로 예약되기 때문에 실질적으로 사용할 수 있는 호스트 주소는 1부터 254까지(예: 192.168.1.1~192.168.1.254) 총 254개가 된다(2⁸-2=254).

 

  • 네트워크 주소: 해당 네트워크 대역(서브넷)의 대표 주소
  • 브로드캐스트 주소: 같은 네트워크에 있는 모든 기기로 메시지 전송 시 사용하는 주소

 

정리하면, 네트워크 대역은 서브넷 마스크를 기준으로 구분된다고 볼 수 있다. 앞에서 서브넷 마스크는 IP 주소에서 어디까지가 네트워크 ID(네트워크 영역)이고, 어디부터가 호스트 ID(개별 장치 식별 영역) 인지 결정한다고 했다. 가장 흔히 쓰이는 /24 표기법을 기준으로 IP 주소의 앞 3자리가 네트워크 ID가 된다. 따라서 192.168.1.x와 192.168.0.x는 다른 네트워크 대역이다.

 

/24 처럼 서브넷 마스크를 슬래시와 비트 수로 간결하게 표시하는 방식을 CIDR(Classless Inter-Domain Routing) 표기법이라고 부른다.

 

 

서브넷 네트워크 활성화


Tailscale 콘솔 > Machines 페이지를 보면 방금 설정한 시놀로지 NAS 기기에 파란색 Subnets 배지가 표시된 걸 확인할 수 있다.

 

 

우측 점 세 개 클릭 > Edit route settings 클릭 > 서브넷 대역 체크 > Save 버튼을 클릭하면 설정이 완료된다.

 

 

 

Access Rule 설정 (선택)


Tailscale 콘솔 > Access control 규칙을 별도로 수정하지 않았다면 기본적으로 Tailscale 네트워크 내의 모든 장치와 포트에 자유롭게 접근할 수 있다. Tailscale을 혼자 사용한다면 큰 문제가 되지 않지만, 여러 명이 함께 사용한다면 보안을 위해 적절한 규칙을 설정해 주는 게 좋다.

 

필자는 본인이 소유한 디바이스에만 접근할 수 있도록 제한하고, admin 그룹만 서브넷을 포함한 모든 디바이스에 접근할 수 있도록 설정했다.

 

{
  "groups": {
    // admin 그룹 정의
    "group:admin": ["hello@gmail.com"]
  },

  "tagOwners": {
    "tag:server": ["group:admin"]
  },

  "acls": [
    // Tailnet에 있는 모든 장치들끼리 접근 허용 (기본값)
    // { "action": "accept", "src": ["*"], "dst": ["*:*"] }

    // 모든 사용자가 자신의 디바이스에만 접근 가능
    {
      "action": "accept",
      "src": ["autogroup:member"],
      "dst": ["autogroup:self:*"]
    },
    // admin 그룹은 모든 디바이스 접근 가능
    {
      "action": "accept",
      "src": ["group:admin"],
      "dst": ["*:*"]
    }
  ]

  // ... 생략
}

 

 

접속 테스트


서브넷 라우터가 올바르게 구성됐다면 외부에서도 집에 있는 네트워크 장치에 접속할 수 있다. Tailscale이 연결된 기기에서 시놀로지 NAS의 내부 IP 주소(예: 192.168.1.x)로 ping을 보내보자. n bytes from … 메시지가 연속적으로 표시된다면 연결이 성공적으로 이루진 것이다.

ping 192.168.1.2
# PING 192.168.1.2 (192.168.1.2): 56 data bytes
# 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=36.396 ms
# 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=14.177 ms

 

아수스 공유기

ASUS Router App은 [WAN을 통한 웹 액세스 사용]을 로 설정해야만 외부에서 접속할 수 있지만(로컬 네트워크에선 가능), 서브넷 라우터를 설정했으므로 아니오로 설정해도 Tailscale이 연결된 상태에서 ASUS Router App에 접속할 수 있다.

 

 

맥북 타임머신

타임머신 최초 설정 시 백업 디스크를 NAS의 로컬 IP 주소로 지정해 두면, 외부에서도 Tailscale을 통해 타임머신 백업을 할 수 있다. 또한, Tailscale의 VPN On Demand 설정을 활용하면, 집 Wi-Fi에 접속 중일 땐 Tailscale이 자동으로 비활성화되도록 구성할 수 있다. 이렇게 하면 집에서는 로컬 네트워크를 통해 빠른 속도로 백업하고, 외부에서는 Tailscale 네트워크를 통해 원격으로 백업할 수 있다.

 

 

레퍼런스


 

Subnet routers · Tailscale Docs

Use subnet routers to give devices outside your local network access to services within specific subnets. Extend your private network with Tailscale.

tailscale.com

 

반응형