안녕하세요! 오늘은 라즈베리 파이 클러스터를 연구실 내부뿐만 아니라 외부에서도 자유롭게 접속할 수 있는 방법을 소개해 드리려고 합니다. 특히 학교나 회사처럼 네트워크 방화벽이 엄격하게 설정된 환경에서도 문제없이 원격 접속할 수 있는 Tailscale VPN을 활용한 방법을 알아보겠습니다.
🔍 원격 접속의 필요성과 문제점
라즈베리 파이 클러스터를 구축하면 어디서든 접속해서 작업하고 싶은 욕구가 생기기 마련입니다. 기존에는 연구실 내부에서 165.x.x.x
대역의 네트워크를 통해 SSH로 접속했지만, 집이나 카페 등 외부에서도 편리하게 접속하기 위한 방법이 필요했습니다.
❌ WireGuard는 왜 안됐을까?
처음에는 WireGuard VPN을 사용하려 했지만, 여러 제약 사항으로 인해 적용이 어려웠습니다.
1. 네트워크 방화벽 문제
- WireGuard는 기본적으로 UDP 51820번 포트를 사용합니다
- 하지만 연구실 네트워크는 외부에서 들어오는 트래픽을 차단하여 포트포워딩이 불가능했습니다
- 학교 네트워크 관리자 권한이 필요했지만, 연구실에서 이를 변경할 권한이 없었습니다
2. 연구실 네트워크 구조의 특수성
- 연구실 네트워크는 일반 가정환경과 달리 공인 IP(165.x.x.x)를 직접 할당받는 구조였습니다
- 그러나 방화벽이나 CGNAT 환경으로 인해 WireGuard 서버로 직접 연결이 불가능했습니다
✅ Tailscale이 가능했던 이유
여러 VPN 솔루션을 검토한 결과, Tailscale이 완벽한 대안이 될 수 있었습니다. Tailscale이 어떻게 기존 방화벽을 우회하여 연결을 가능하게 했는지 설명해 드리겠습니다.
NAT Traversal 기술
Tailscale이 가능했던 핵심 원리는 NAT Traversal 기술 덕분입니다.
- Coordination Server: 각 장치는 Tailscale 중앙 서버에 "나 여기 있어요"라고 먼저 연결을 시도합니다
- UDP Hole Punching: 두 장치가 서로 밖으로 나가는 연결을 만들어 NAT와 방화벽을 "뚫지 않고" 우회합니다
- 직접 P2P 통신: 일단 연결이 수립되면 트래픽은 서버를 거치지 않고 장치 간 직접 암호화되어 전송됩니다
- TURN Relay (필요 시): 만약 NAT 환경이 너무 제한적이라면, Tailscale의 중계 서버를 통해 우회 경로를 만듭니다
이 방식은 기존 네트워크 인프라(방화벽, NAT)를 건드리지 않으면서도 안전한 VPN 연결을 가능하게 합니다.
쉬운 비유로 설명하자면
WireGuard와 Tailscale의 차이를 집에 방문하는 상황으로 비유해보겠습니다.
- WireGuard: "내 집에 놀러 오려면, 내가 먼저 현관문을 열어줘야 해" (포트포워딩 필요)
- 문제는 연구실(집) 현관문 열쇠가 없어서(방화벽) 문을 열 수 없다는 점입니다
- Tailscale: "각자 집에서 나와서 카페(중앙 서버)에서 만나자"
- 양쪽 다 "나가는 길"로 만나므로 현관문(방화벽)이 잠겨있어도 상관없습니다
- 카페에서 만난 후 비밀 통로(암호화 터널)를 만들어 직접 대화합니다
🛠️ Tailscale 설치 및 구성 방법
이제 실제로 Tailscale을 설치하고 구성하는 방법을 알아보겠습니다.
1️⃣ 라즈베리 파이(pi1)에 Tailscale 설치하기
외부 접속 게이트웨이 역할을 할 pi1에만 Tailscale을 설치합니다:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
설치 후 터미널에 표시되는 링크를 통해 웹 브라우저에서 로그인하고 인증을 완료합니다.
# Tailscale IP 확인
tailscale ip
# 부팅 시 자동 실행 설정
sudo systemctl enable tailscaled
2️⃣ Windows PC에 Tailscale 설치하기
Windows에서는 더 쉽게 설치할 수 있습니다:
- Tailscale 공식 웹사이트에서 Windows 설치 파일을 다운로드합니다
- 다운로드한 파일을 실행하여 설치를 진행합니다
- 설치가 완료되면 로그인하여 인증을 완료합니다
- Windows 시스템 트레이에 Tailscale 아이콘이 나타나며, 여기서 연결 상태를 확인할 수 있습니다
3️⃣ SSH 설정 구성하기
기존 내부 네트워크 접속과 함께 외부에서도 접속할 수 있도록 SSH 설정을 추가합니다:
# Windows의 경우
notepad $HOME\.ssh\config
# Linux/Mac의 경우
nano ~/.ssh/config
아래와 같이 설정 파일을 작성합니다:
# 연구실 내부 접속 설정 (기존 방식)
Host pi1
HostName 165.x.x.xx
User ubuntu
IdentityFile ~/.ssh/id_rsa
Host pi2
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1
IdentityFile ~/.ssh/id_rsa
Host pi3
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1
IdentityFile ~/.ssh/id_rsa
Host pi4
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1
IdentityFile ~/.ssh/id_rsa
# 연구실 외부 접속 설정 (Tailscale VPN 사용)
Host pi1-vpn
HostName 100.XXX.XX.XXX # pi1의 Tailscale IP
User ubuntu
IdentityFile ~/.ssh/id_rsa
Host pi2-vpn
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1-vpn
IdentityFile ~/.ssh/id_rsa
Host pi3-vpn
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1-vpn
IdentityFile ~/.ssh/id_rsa
Host pi4-vpn
HostName 165.x.x.xx
User ubuntu
ProxyJump pi1-vpn
IdentityFile ~/.ssh/id_rsa
🚀 접속 방법
이제 두 가지 방식으로 라즈베리 파이 클러스터에 접속할 수 있습니다:
연구실 내부에서 접속 (기존 방식)
ssh pi1 # 직접 접속
ssh pi2 # pi1을 통해 점프
연구실 외부에서 접속 (Tailscale VPN)
ssh pi1-vpn # Tailscale을 통해 직접 접속
ssh pi2-vpn # pi1-vpn을 통해 점프
![SSH 외부 접속 성공 화면]
💡 Tailscale의 추가 장점
Tailscale은 단순한 VPN을 넘어 다양한 장점을 제공합니다:
- Zero Trust Network: 로그인 인증(OAuth, SSO)으로 사용자를 인증하며, 별도 방화벽 규칙 없이도 네트워크가 보호됩니다
- 멀티 디바이스 지원: 아래 이미지처럼 여러 기기에 설치하여 모든 기기 간 안전한 통신이 가능합니다
- 관리 콘솔: 웹 기반 관리 콘솔(https://login.tailscale.com/admin/machines)에서 연결된 모든 기기를 확인하고 관리할 수 있습니다
- 공유 기능: 특정 서비스나 기기를 다른 사용자와 안전하게 공유할 수 있습니다
저는 연구실 PC, 집 PC, 노트북 등 여러 장치에 Tailscale을 설치하여 어디서든 라즈베리 파이 클러스터에 접속할 수 있도록 구성했습니다. 덕분에 외부에서도 마치 연구실에 있는 것처럼 작업할 수 있어 정말 편리합니다.
저는 실제로 pi1에 Tailscale을 설치한 후, 약 한 달 동안 외부에서 문제없이 접속하고 있습니다.
📊 WireGuard vs Tailscale 비교
항목 | WireGuard | Tailscale |
---|---|---|
포트포워딩 | 필요 (UDP 51820) | 필요 없음 (NAT Traversal) |
방화벽 통과성 | 약함 | 강함 |
초기 설정 | 복잡함 | 간단함 (명령어 몇 개로 가능) |
통신 경로 | 고정 터널 | 유동적 P2P 터널 (필요시 Relay 사용) |
관리 편의성 | 수동 구성 필요 | 웹 콘솔에서 쉽게 관리 |
🎯 결론
Tailscale은 기존 네트워크 인프라를 건드리지 않고도 안전한 원격 접속을 가능하게 해주는 혁신적인 VPN 솔루션입니다. NAT Traversal 기술 덕분에 연구실 네트워크 방화벽을 우회하여 언제 어디서나 라즈베리 파이 클러스터에 접속할 수 있게 되었습니다.
특히 pi1만 Tailscale에 연결해도 ProxyJump 기능을 통해 다른 모든 라즈베리 파이에 접속할 수 있어 매우 효율적입니다.
라즈베리 파이 클러스터뿐만 아니라 회사나 학교의 제한적인 네트워크 환경에서도 여러분이 원하시는 환경에 따라 적용할 수 있을 것 같습니다. 저도 집PC에서 연구실PC로 접속해서 활용하고 있습니다.
생각보다 훨씬 간단하고, 기대 이상으로 편할 겁니다. 😊
참고 자료
'Research > Raspberry Pi' 카테고리의 다른 글
라즈베리 파이5 레시피 #7: 개발자를 위한 실시간 전력 모니터링 대시보드 구축기 (0) | 2025.05.27 |
---|---|
라즈베리 파이5 레시피 #6: Shelly Plug S로 실시간 전력 모니터링 시작하기 (0) | 2025.05.26 |
라즈베리 파이5 레시피 #4: 클러스터 확장 - RPi 추가 시 SSH 설정 가이드 (1) | 2025.04.29 |
라즈베리 파이5 레시피 #3: SSH 키 인증과 ProxyJump 설정으로 클러스터 관리 효율화하기 (1) | 2025.04.29 |
라즈베리 파이5 레시피 #2 : PCIe & SSD 초고속 튜닝 (0) | 2025.03.21 |