라즈베리 파이5 레시피 #5: 포트포워딩 없이 외부에서 원격 접속하는 법! (feat. Tailscale)

2025. 4. 30. 14:13·Research/Raspberry Pi

 

안녕하세요! 오늘은 라즈베리 파이 클러스터를 연구실 내부뿐만 아니라 외부에서도 자유롭게 접속할 수 있는 방법을 소개해 드리려고 합니다. 특히 학교나 회사처럼 네트워크 방화벽이 엄격하게 설정된 환경에서도 문제없이 원격 접속할 수 있는 Tailscale VPN을 활용한 방법을 알아보겠습니다.

🔍 원격 접속의 필요성과 문제점

라즈베리 파이 클러스터를 구축하면 어디서든 접속해서 작업하고 싶은 욕구가 생기기 마련입니다. 기존에는 연구실 내부에서 165.x.x.x 대역의 네트워크를 통해 SSH로 접속했지만, 집이나 카페 등 외부에서도 편리하게 접속하기 위한 방법이 필요했습니다.

https://t-okk.tistory.com/97

❌ WireGuard는 왜 안됐을까?

처음에는 WireGuard VPN을 사용하려 했지만, 여러 제약 사항으로 인해 적용이 어려웠습니다.

1. 네트워크 방화벽 문제

  • WireGuard는 기본적으로 UDP 51820번 포트를 사용합니다
  • 하지만 연구실 네트워크는 외부에서 들어오는 트래픽을 차단하여 포트포워딩이 불가능했습니다
  • 학교 네트워크 관리자 권한이 필요했지만, 연구실에서 이를 변경할 권한이 없었습니다

2. 연구실 네트워크 구조의 특수성

  • 연구실 네트워크는 일반 가정환경과 달리 공인 IP(165.x.x.x)를 직접 할당받는 구조였습니다
  • 그러나 방화벽이나 CGNAT 환경으로 인해 WireGuard 서버로 직접 연결이 불가능했습니다

✅ Tailscale이 가능했던 이유

여러 VPN 솔루션을 검토한 결과, Tailscale이 완벽한 대안이 될 수 있었습니다. Tailscale이 어떻게 기존 방화벽을 우회하여 연결을 가능하게 했는지 설명해 드리겠습니다.

NAT Traversal 기술

Tailscale이 가능했던 핵심 원리는 NAT Traversal 기술 덕분입니다.

  1. Coordination Server: 각 장치는 Tailscale 중앙 서버에 "나 여기 있어요"라고 먼저 연결을 시도합니다
  2. UDP Hole Punching: 두 장치가 서로 밖으로 나가는 연결을 만들어 NAT와 방화벽을 "뚫지 않고" 우회합니다
  3. 직접 P2P 통신: 일단 연결이 수립되면 트래픽은 서버를 거치지 않고 장치 간 직접 암호화되어 전송됩니다
  4. TURN Relay (필요 시): 만약 NAT 환경이 너무 제한적이라면, Tailscale의 중계 서버를 통해 우회 경로를 만듭니다

이 방식은 기존 네트워크 인프라(방화벽, NAT)를 건드리지 않으면서도 안전한 VPN 연결을 가능하게 합니다.

https://tailscale.com/blog/how-nat-traversal-works

쉬운 비유로 설명하자면

WireGuard와 Tailscale의 차이를 집에 방문하는 상황으로 비유해보겠습니다.

  • WireGuard: "내 집에 놀러 오려면, 내가 먼저 현관문을 열어줘야 해" (포트포워딩 필요)
    • 문제는 연구실(집) 현관문 열쇠가 없어서(방화벽) 문을 열 수 없다는 점입니다
  • Tailscale: "각자 집에서 나와서 카페(중앙 서버)에서 만나자"
    • 양쪽 다 "나가는 길"로 만나므로 현관문(방화벽)이 잠겨있어도 상관없습니다
    • 카페에서 만난 후 비밀 통로(암호화 터널)를 만들어 직접 대화합니다

https://tailscale.com/blog/how-nat-traversal-works

🛠️ 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에서는 더 쉽게 설치할 수 있습니다:

  1. Tailscale 공식 웹사이트에서 Windows 설치 파일을 다운로드합니다
  2. 다운로드한 파일을 실행하여 설치를 진행합니다
  3. 설치가 완료되면 로그인하여 인증을 완료합니다
  4. Windows 시스템 트레이에 Tailscale 아이콘이 나타나며, 여기서 연결 상태를 확인할 수 있습니다

https://tailscale.com/download

 

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을 넘어 다양한 장점을 제공합니다:

  1. Zero Trust Network: 로그인 인증(OAuth, SSO)으로 사용자를 인증하며, 별도 방화벽 규칙 없이도 네트워크가 보호됩니다
  2. 멀티 디바이스 지원: 아래 이미지처럼 여러 기기에 설치하여 모든 기기 간 안전한 통신이 가능합니다
  3. 관리 콘솔: 웹 기반 관리 콘솔(https://login.tailscale.com/admin/machines)에서 연결된 모든 기기를 확인하고 관리할 수 있습니다
  4. 공유 기능: 특정 서비스나 기기를 다른 사용자와 안전하게 공유할 수 있습니다

저는 연구실 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로 접속해서 활용하고 있습니다.

생각보다 훨씬 간단하고, 기대 이상으로 편할 겁니다. 😊

 

참고 자료

  • Tailscale 공식 웹사이트
  • Tailscale 문서: NAT traversal
  • SSH ProxyJump 설정 방법

'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
'Research/Raspberry Pi' 카테고리의 다른 글
  • 라즈베리 파이5 레시피 #7: 개발자를 위한 실시간 전력 모니터링 대시보드 구축기
  • 라즈베리 파이5 레시피 #6: Shelly Plug S로 실시간 전력 모니터링 시작하기
  • 라즈베리 파이5 레시피 #4: 클러스터 확장 - RPi 추가 시 SSH 설정 가이드
  • 라즈베리 파이5 레시피 #3: SSH 키 인증과 ProxyJump 설정으로 클러스터 관리 효율화하기
Ctrl_engineer
Ctrl_engineer
Ctrl 키는 혼자일 때보다 다른 키와 함께할 때 진짜 힘을 발휘합니다. 데이터도, 사람도 마찬가지입니다. 연결되고 흐를 때, 세상은 더 나은 방향으로 움직입니다. 저는 데이터의 흐름을 설계하고, 신뢰를 심는 엔지니어가 되고자 합니다. 이곳은, 그 여정의 작은 흔적들을 기록하는 공간입니다.
  • Ctrl_engineer
    Ctrl the flow
    Ctrl_engineer
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Research (8)
        • Raspberry Pi (8)
      • Data Enginnering (24)
        • Cloud (3)
        • Elastic (6)
        • Database (9)
        • Pipeline (3)
      • CS STUDY (0)
        • Computer Science (0)
        • DataStructure & Algorithm (0)
      • Programming (13)
        • Python (13)
      • Mathematics and Statistics (10)
      • Data Science (3)
        • Data Insight (2)
        • Learning (0)
        • ML & DL (0)
      • DIARY (0)
      • TIL (Today I Learned) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부스트코스
    ssh 비밀번호 없이 접속
    라즈베리파이 네트워크 설정
    점프투파이썬
    Statistics and Probability
    climb-mates
    오블완
    indexing
    티스토리챌린지
    elasticSearch
    py4e
    proxyjump 설정
    linear algebra
    3blue1brown
    Khan Academy
    라즈베리파이5
    Khan
    SQL
    heap size
    spark
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Ctrl_engineer
라즈베리 파이5 레시피 #5: 포트포워딩 없이 외부에서 원격 접속하는 법! (feat. Tailscale)
상단으로

티스토리툴바