(Tailscale + rsync, 재부팅·네트워크 변경에도 끊기지 않는 구조)
1. 구성 배경
현재 홈 서버의 백업 구조는 다음과 같다.
- 메인 스토리지: TrueNAS
- 내부 백업 NAS: Synology DS423+
- 동일 네트워크
- rsync 기반 백업 안정적으로 운용 중
이번에 **회사(외부 네트워크)**에
Synology DS720+ 를 추가 설치하면서,
다음 조건을 만족하는 오프사이트 백업을 구성하고자 했다.
요구사항 정리
- TrueNAS ↔ DS423+ 백업 정책은 변경하지 않음
- DS720+는 **외부 네트워크(회사)**에 위치
- DS720+에도 DS423+와 동일한 데이터를 백업
- DS423+ ↔ DS720+ 직접 연동 없음
- 회사 네트워크의 공유기/방화벽 설정 변경 없음
- 재부팅, 네트워크 단절, 외부 IP 변경에도 장기적으로 안정적일 것
2. 결론 요약
Outbound VPN + rsync 구조가 사실상 정답
이를 위해 Tailscale 을 사용했다.
- 포트포워딩 ❌
- 공인 IP 의존 ❌
- 회사 네트워크 설정 변경 ❌
- 재부팅 / 장소 변경에도 설정 유지 ⭕
- 장기 무인 운용 가능 ⭕
3. 전체 아키텍처


[ TrueNAS (집) ]
├─ rsync 백업 (내부)
│ └─ DS423+
│
└─ rsync 백업 (외부)
└─ Tailscale VPN
└─ DS720+ (회사)
- TrueNAS가 단일 원본(Source of Truth)
- DS423+ / DS720+는 완전히 독립된 백업 타겟
- 내부 백업과 외부 백업이 서로 영향을 주지 않음
4. DS720+ 설정 (회사)
4-1. Tailscale 설치
- DSM 패키지 센터 → Tailscale 설치
- Tailscale 로그인
- 장비 고유의 Tailscale IP 할당
예:
100.90.187.5
이 IP는 공인 IP가 아니라 Tailscale 네트워크 내부의 논리적 고정 IP
4-2. rsync / SSH 준비
- DSM → 파일 서비스 → rsync 활성화
- DSM → 터미널 및 SNMP → SSH 활성화
- rsync 사용자:
- 내부 백업 NAS(DS423+)와 동일하게
관리자 계정songless사용
- 내부 백업 NAS(DS423+)와 동일하게
rsync 전용 계정 + SSH 비로그인은
rsync daemon(Pull) 방식에 적합하며,
이번처럼 Push + 자동화 구조에는 부적합
5. TrueNAS 설정
5-1. Tailscale App 설치
- Apps → Tailscale 설치
- Auth Key 발급 후 입력
- 주요 옵션:
- Auth Once: ON
- Host Network: ON
- 나머지 옵션: 기본값 유지
설치 후 확인:
ip a | grep tailscale
5-2. 네트워크 연결 확인
ping 100.90.187.5
결과:
- 패킷 손실 0%
- 평균 지연 약 10ms
→ 외부 네트워크의 NAS를 내부 NAS처럼 접근 가능
6. SSH 인증 구성 (중요 포인트)
TrueNAS rsync Task는 비대화식 SSH 접속을 사용하므로
SSH 공개키 인증이 필수다.
DSM UI에서는 관리자 계정의 SSH 키 등록 메뉴가 보이지 않아,
다음과 같이 서버 방식으로 처리했다.
ssh songless@ds720+
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
- TrueNAS에 등록된 SSH Keypair의 공개키를
authorized_keys에 추가
7. TrueNAS rsync Task 생성
7-1. 기존 DS423+ rsync Task 참고
- Data Protection → Rsync Tasks
- 내부 백업용 Task를 열어 옵션 그대로 확인
7-2. 외부 백업용 rsync Task 추가
Mode : Push
Transport : SSH
Remote Host : 100.90.187.5
Remote User : songless
Remote Path : /volume1/truenas-backup
옵션:
- Recursive
- Times / Permissions / Ownership
- ACL / Xattrs
- Compression
- Delete 옵션 등
→ DS423+ Task와 동일하게 설정
8. 최초 실행 및 결과
초기 실행 시 다음 오류 발생:
Disconnect Error [error code 14: Permission denied]
원인:
- DS720+에 SSH 공개키 미등록
공개키 등록 후 재실행 결과:
- DS720+ File Station에서
- 디렉토리 구조 생성 확인
- 파일 실시간 유입 확인
- rsync Task 상태: SUCCESS
9. 재부팅·네트워크 변경 시에도 안전한 이유
이 구성에서 가장 중요했던 부분이다.
9-1. Tailscale IP는 변하지 않는다
Tailscale의 100.x.x.x IP는:
- 공인 IP ❌
- 로컬 IP ❌
- 장비 + 계정에 귀속된 논리적 고정 IP
즉, “장소”가 아니라 “장비 정체성”에 붙는 주소다.
9-2. 상황별 동작 정리
▷ NAS 재부팅 (TrueNAS / DS720+)
- Tailscale 데몬 재시작
- 기존 상태(State) 사용
- 동일한 Tailscale IP 유지
→ rsync 스케줄 정상 재개
▷ 인터넷 단절 후 복구
- 일시적으로 rsync 실패 가능
- 다음 스케줄에서 자동 재시도
- 설정 변경 불필요
▷ 외부 IP 변경 (회사 ISP / DHCP)
- DS720+ 공인 IP 변경
- NAT 경로 변경
→ Tailscale은 외부 IP를 직접 사용하지 않음
→ TrueNAS는 여전히 100.90.187.5로 접근
▷ 설치 장소 변경 (회사 → 다른 장소)
- 완전히 다른 네트워크
- 다른 공유기 / 다른 공인 IP
→ Tailscale 로그인 유지 시
→ IP 동일, rsync 설정 그대로 동작
9-3. IP가 바뀌는 예외적인 경우
아래 경우에만 Tailscale IP가 변경된다.
- 장비를 Tailscale 관리자 페이지에서 삭제
- Reset 옵션 사용
- 다른 Tailscale 계정으로 로그인
- 인증 상태(State) 완전 손실
→ 정상 운용에서는 의도적으로 하지 않는 이상 발생하지 않음
10. 최종 구성 요약
- 내부 백업: TrueNAS → DS423+
- 외부 백업: TrueNAS → DS720+
- 두 백업 대상 간 의존성 없음
- 회사 네트워크 무개입
- 포트 노출 없음
- 재부팅 / 네트워크 변경 / 장소 변경에도 안정적
“백업이 한 번 되는 구조”가 아니라
“환경이 바뀌어도 계속 유지되는 구조”
11. 마무리
이번 구성은:
- 3-2-1 백업 원칙에 매우 근접
- 홈서버 환경에서 현실적으로 구현 가능한
- 가장 강건한 오프사이트 백업 구조
라고 정리할 수 있다.
답글 남기기