반응형

Tailscale은 보통 4주마다 새 버전이 출시되지만 시놀로지(Synology) 패키지 센터는 분기별 한 번 정도로 업데이트가 이뤄지기 때문에 변경사항 반영이 비교적 느린 편이다. 이를 보완하기 위해 스케줄러를 활용하면 매주 또는 원하는 주기마다 Tailscale이 자동으로 갱신되도록 할 수 있다.

 

🔍 아직 Tailscale 패키지를 설치/설정하지 않았다면 이전 포스팅을 참고하자.

 

 

Tailscale 자동 업데이트


① DSM 제어판 > 작업 스케줄러 > 예약된 작업 > [사용자 정의 스크립트] 클릭

 

② [일반] 탭 > [작업] 필드에 원하는 이름 입력, [사용자]는 root 선택

 

③ [스케줄] 탭 > 원하는 실행 날짜 선택

 

④ [작업 설정] 탭 > [사용자 정의 스크립트] 필드에 아래 명령어 입력

 

tailscale update --yes

 

💡 [실행 상세 정보를 이메일로 보내기] 옵션에 체크하고 이메일 주소를 입력하면 스케줄 실행 후 이메일로 결과를 받아볼 수도 있다.

 

 

TUN 활성


Synology DSM 7 버전부터 보안이 강화되면서 인바운드 연결은 허용하지만, 아웃바운드 연결은 기본적으로 차단된다.

 

인바운드 연결은 외부 장치가 Tailscale 네트워크를 통해 NAS로 들어오는 통신을 의미한다. 외부의 스마트폰이나 노트북에서 NAS의 파일 공유(SMB)나 DSM 관리자 페이지에 접속하는 경우 인바운드에 해당한다. 반대로 아웃바운드는 NAS 내부의 애플리케이션(Docker 컨테이너, Plex 미디어 서버 등)이 Tailscale 네트워크를 통해 외부 장치로 나가는 통신을 가리킨다. 예를 들어 NAS의 Plex 서버가 Tailscale로 연결된 다른 위치의 Plex 클라이언트로 미디어 콘텐츠를 스트리밍 한다면 아웃바운드에 해당된다. 

 

이러한 제한은 Tailscale 패키지가 TUN 장치를 생성할 권한이 없어서 발생한다. TUN 장치는 VPN 같은 프로그램이 네트워크 트래픽을 처리하기 위해 사용하는 가상의 인터페이스로, 이 장치가 없으면 NAS 내부 애플리케이션이 외부와 통신할 수 있는 경로를 확보하지 못하게 된다. 

 

💡 TUN 장치 생성 권한이 없으면 서브넷 라우터 같은 기능도 사용할 수 없다

 

이 문제는 TUN 장치 생성 권한을 부여하면 해결할 수 있다. 하지만 DSM을 재부팅하면 해당 권한 설정이 초기화되기 때문에, 스케줄러를 이용해서 부팅할 때마다 권한을 다시 부여하는 설정이 필요하다. 

 

① Tailscale 패키지 버전이 1.22 이상인지 확인

 

② DSM 제어판 > 작업 스케줄러 > 트리거 된 작업 > [사용자 정의 스크립트] 클릭

 

③ [일반] 탭 > [작업] 필드에 원하는 이름 입력, [사용자]는 root 선택

 

④ [작업 설정] 탭 > [사용자 정의 스크립트] 필드에 아래 명령어 입력

 

/var/packages/Tailscale/target/bin/tailscale configure-host; synosystemctl restart pkgctl-Tailscale.service

 

 

Tailscale 업데이트 + TUN 활성 스크립트


Tailscale 패키지를 업데이트하면 TUN 설정도 함께 초기화된다. 업데이트할 때마다 매번 TUN을 수동으로 활성화하기 번거롭기 때문에 패키지 업데이트와 TUN 활성화를 함께 처리하는 스크립트를 만들어두고 스케줄러에 등록하면 더 편리하다.

 

① 나스 SSH 접속 (접속 방법은 가이드 링크 참고)

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

 

② 관리자 권한 획득

# 명령어를 입력하면 DSM 비밀번호를 물어보는 프롬프트가 나온다
sudo -i

 

~/.scripts 폴더에 update_tailscale.sh 파일 생성 후 편집기 열기

# 파일 생성 후 편집기를 여는 명령어
mkdir -p ~/.scripts && vi ~/.scripts/update_tailscale.sh

 

i 눌러서 편집 모드로 진입 → 아래 내용 복사/붙여 넣기 → ESC 누른 후 :wq 입력해서 저장/편집기 종료

#!/bin/sh

# Tailscale 실행 파일의 전체 경로를 변수로 지정
TAILSCALE_BIN="/var/packages/Tailscale/target/bin/tailscale"

# 업데이트 전 Tailscale 버전 확인
version_before=$($TAILSCALE_BIN version | head -n 1)

# 업데이트 시도 (--yes 플래그로 자동 동의)
$TAILSCALE_BIN update --yes

# 업데이트 후 Tailscale 버전 다시 확인
version_after=$($TAILSCALE_BIN version | head -n 1)

# 두 버전이 다른지 비교
if [ "$version_before" != "$version_after" ]; then
  # 버전이 다르다면, 업데이트가 성공한 것이므로 후속 명령어 실행
  echo "Tailscale이 $version_before 에서 $version_after 버전으로 업데이트되었습니다."
  echo "TUN 활성화를 실행합니다..."

  $TAILSCALE_BIN configure-host
  synosystemctl restart pkgctl-Tailscale.service

  echo "작업이 완료되었습니다."

fi

 

⑤ 생성한 스크립트 파일에 실행 권한 추가

# 실행 권한 추가 명령어
chmod +x /root/.scripts/update_tailscale.sh

 

/root/.scripts/update_tailscale.sh 명령어 입력해서 스크립트 실행 테스트

# 로그 출력 예시
already running stable version 1.86.2; no update needed

 

⑦ TUN 활성 스케줄러의 [사용자 정의 스크립트] 경로 변경

 

/root/.scripts/update_tailscale.sh

 

 

레퍼런스


 

Access Synology NAS from anywhere · Tailscale Docs

Install Tailscale on your Synology device. Use this guide to get secure access to your Synology NAS from anywhere.

tailscale.com

 

반응형