집 IP가 또 바뀌었다 - Tailscale exit node로 관리자 자동 로그인까지 끝내고, 출장 노트북 세팅까지

음성으로 듣기 25분
0:00
핵심 요약

집 유동 IP가 또 바뀌어 수십 개 사이트의 관리자 자동 로그인이 풀렸습니다. 고정 IP 서버를 Tailscale exit node로 써서 해결한 과정과 127.0.0.1 DNS 문제, 출장용 노트북 VS Code 확장 한 번에 설치하기까지 정리했습니다.

집 IP가 또 바뀌어서 수십 개 사이트의 관리자 자동 로그인이 한꺼번에 풀렸는데, 이번에는 IP를 고치지 않고 Tailscale의 exit node 기능으로 해결했습니다. 고정 IP를 가진 클라우드 서버를 출구(exit node)로 삼아 인터넷에 나가면, 어느 사이트든 제 접속 IP를 그 서버 IP 하나로 봅니다. 그 IP만 화이트리스트에 한 번 넣어 두니 이제 집 IP가 바뀌어도 할 일이 없습니다.

최종 업데이트: 2026-09-26 · 환경: Windows 11 PC 2대 + 출장용 노트북 1대, 리눅스 서버 2대(클라우드 서버·단독 서버), 공유 호스팅 계정 여러 개, Tailscale 1.102.4

또!!! 집 IP가 바뀌었습니다

열흘 전쯤 집 IP가 바뀌어서 한바탕 고생을 했습니다. 그때 SSH 접속만큼은 Tailscale로 옮겨서, IP가 바뀌어도 서버 접속에는 문제가 없게 해뒀습니다. 그 과정은 지난 글 유동 IP 서버 SSH 접속, Tailscale로 해결한 후기에 정리해 두었습니다.

그런데 그 IP가 또 바뀌었습니다. 가정용 인터넷이 유동 IP라는 건 알고 있었지만 이렇게 자주 바뀔 줄은 몰랐네요 ㅠㅠ

SSH는 멀쩡했습니다. 문제는 제가 운영하는 웹사이트들의 관리자 로그인이었습니다. 수십 개 사이트의 관리자 화면이 전부 "등록된 IP에서 들어오면 비밀번호 없이 바로 로그인, 그 외에는 비밀번호 입력" 방식으로 되어 있거든요. 집 IP가 바뀌니 집에서는 자동 로그인이 전부 풀렸습니다.

예전 같으면 서버마다 들어가서 옛 IP를 새 IP로 바꿨을 겁니다. 이번에는 문득 이런 생각이 들었습니다. "SSH도 Tailscale로 해결했는데, 이것도 Tailscale로 안 되나?"

SSH는 되는데 관리자 로그인은 왜 안 될까?

저도 처음에는 헷갈렸습니다. SSH가 되니까 관리자 화면도 되는 건가 싶어서 물어보면서 알게 됐습니다.

제가 이해하기론 이렇습니다. SSH는 서버의 Tailscale 주소(100으로 시작하는 주소)로 접속하기 때문에 Tailscale 망 안에서만 오갑니다. 그래서 집 IP와 상관이 없습니다. 반대로 관리자 화면은 브라우저에 도메인 주소를 쳐서 들어가죠. 이 연결은 평범한 인터넷을 타고 가기 때문에, 서버 입장에서는 여전히 제 집 공인 IP가 보입니다. 화이트리스트는 바로 이 IP로 판단하고요.

구분어떤 길로 가나서버가 보는 내 IP
SSH·SFTPTailscale 망(100.x 주소)Tailscale 주소 - 집 IP와 무관
관리자 화면(브라우저)일반 인터넷(도메인)집 공인 IP - 바뀌면 화이트리스트에서 빠짐

그러니까 Tailscale을 설치만 해서는 관리자 로그인 문제가 풀리지 않습니다. 여기서 알게 된 게 exit node라는 기능이었습니다.

exit node가 뭐길래 이걸로 해결이 될까?

Tailscale 공식 문서에서는 exit node를 "내 트래픽을 대신 내보내 주는 기기"라고 설명합니다. PC에서 exit node를 켜면 인터넷으로 나가는 모든 트래픽이 그 기기를 거쳐서 나갑니다.

저는 이미 Tailscale로 묶여 있는 클라우드 서버를 exit node로 쓰기로 했습니다. 이 서버는 공인 IP가 고정이거든요. 이렇게 하면 관리자 화면에 접속할 때 모든 사이트가 제 IP를 "그 클라우드 서버의 IP"로 봅니다.

  • 화이트리스트에는 클라우드 서버 IP를 딱 한 번만 넣으면 됩니다
  • 집 IP가 바뀌든, 사무실이든, 출장지 호텔이든 상관없습니다
  • Tailscale 트레이 메뉴에서 켜고 끌 수 있어서, 관리 작업할 때만 켜도 됩니다

대신 이번 IP 교체 작업은 아예 건너뛰기로 했습니다. 어차피 exit node로 갈 거라면 새 집 IP를 넣을 이유가 없으니까요.

주의
켜 둔 동안에는 모든 인터넷 트래픽이 그 서버를 거칩니다. 그리고 그 서버 자체에서 나가는 요청도 화이트리스트 IP로 인정됩니다. 만약 그 서버에 올라간 프로그램이 해킹당하면 다른 사이트 관리자 화면까지 비밀번호 없이 열릴 수 있다는 뜻입니다. 저는 그 서버에 제 사이트만 있어서 받아들였지만, 알고 쓰셔야 합니다.

서버를 exit node로 만드는 과정

작업은 AI 코딩 도구(Claude Code)와 같이 진행했습니다. 서버 쪽 설정은 생각보다 짧았습니다. 리눅스에서는 IP 포워딩을 켜야 exit node가 될 수 있다고 공식 문서에 나와 있습니다. 포워딩을 켜고(재부팅해도 유지되게 설정 파일로), exit node로 쓰겠다고 Tailscale에 알리는 두 단계입니다.

BASH
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-exit-node

이걸로 끝이 아니고, Tailscale 관리 화면에서 승인을 한 번 해줘야 합니다. Machines 목록에서 그 서버 오른쪽 "..." 메뉴를 누르고 exit node 설정 창에서 체크박스를 켠 뒤 Save를 누르면 됩니다.

화이트리스트에 서버 IP 추가하기

다행히 지난번 IP 소동 때 구조를 한번 바꿔 둔 게 있었습니다. 예전에는 사이트마다 설정 파일에 IP를 직접 적어 뒀는데, 지금은 서버마다 허용 IP를 적은 파일이 딱 하나 있고 모든 사이트가 그 파일을 읽어 갑니다. 그래서 이번에도 서버(계정)당 파일 한 개씩만 고치면 됐습니다.

서버고친 파일누가
클라우드 서버중앙 허용 IP 파일 1개AI 도구가 직접
공유 호스팅 계정 6개계정마다 허용 IP 파일 1개AI 도구가 직접
단독 서버중앙 허용 IP 파일 1개(root 전용)제가 PuTTY로 root 접속해서

기존 집·사무실 IP 줄은 지우지 않고, 서버 IP 한 줄만 추가했습니다. 모든 파일은 고치기 전에 백업을 떠 뒀고요.

명령을 두 번 붙여넣어서 IP가 두 줄 들어갔습니다

단독 서버는 제가 직접 명령을 붙여넣었는데, 결과를 보니 서버 IP가 두 번 들어가 있더라고요. 동작에는 문제가 없지만 찜찜했습니다.

파일 시각을 확인해 보니 명령이 7초 간격으로 두 번 실행돼 있었습니다. 붙여넣기가 두 번 된 거였죠 ㅋㅋ 두 번째 실행이 "이미 한 줄 들어간 파일"을 백업으로 삼고 한 줄을 더 붙인 겁니다. 다행히 그 백업 파일이 딱 한 줄만 들어간 올바른 상태여서, 백업 내용을 원래 파일에 그대로 덮어써서 바로잡았습니다.

팁
서버에 명령을 붙여넣을 때는 한 번만 들어갔는지 꼭 확인하세요. 그리고 고치기 전에 백업을 떠 두면 이런 실수도 금방 되돌릴 수 있습니다.

PC에서 exit node 켜기

서버 준비가 끝나면 PC 쪽은 클릭 몇 번입니다. 작업표시줄 오른쪽 아래 Tailscale 아이콘을 우클릭해서 Exit node에서 그 서버를 고르면 됩니다. 같은 메뉴의 Allow local network access도 켜 두세요. 공유기나 프린터 같은 집 안 기기에 계속 접속할 수 있습니다.

Tailscale 트레이 메뉴에서 exit node를 선택하는 화면

켜고 나서 구글에 "내 아이피"를 검색해 보니, 집 IP가 아니라 클라우드 서버 IP가 나왔습니다. 성공입니다.

exit node를 켠 뒤 외부 IP가 서버 IP로 바뀐 검색 결과

그 상태로 사이트 관리자 화면에 들어가 보니 비밀번호 없이 바로 로그인됐습니다. 궁금했던 게 하나 있었는데, exit node로 쓰는 그 서버에 올라간 사이트는 어떻게 보일까 하는 점이었습니다. 자기 자신에게 되돌아오는 경로라서요. 서버 접속 기록을 확인해 보니 그 사이트도 제 IP를 서버의 공인 IP로 기록하고 있었습니다. 따로 손볼 게 없었습니다.

FTP, phpMyAdmin, 서버 관리 패널은?

관리자 로그인 말고도 집 IP로 막아 둔 게 몇 가지 더 있었습니다. 하나씩 따져 보니 할 일이 생각보다 적었습니다.

  • FTP: 저는 SFTP만 씁니다. SFTP는 SSH(22번 포트)로 동작해서 이미 Tailscale 주소로 접속 중이었습니다. 그래서 FTP는 아예 열지 않았습니다. 쓰지 않는 문은 열어 둘 이유가 없으니까요
  • phpMyAdmin(단독 서버): 허용 목록을 열어 보니 서버 IP가 이미 들어 있었습니다. 예전에 비상 접속용으로 넣어 둔 것 같아요. exit node를 켜고 접속하니 root 계정 로그인까지 됐습니다
  • 서버 관리 패널(클라우드 서버): 방화벽에 서버 IP 규칙을 하나 추가했습니다

그런데 관리 패널이 안 열렸습니다.

관리 패널 주소가 내 PC 자신(127.0.0.1)을 가리켰다

증상. 방화벽 규칙까지 넣었는데 관리 패널 주소로 들어가면 접속이 안 됐습니다. 신기하게도 IP 주소로 직접 들어가면 열렸습니다.

원인. 확인해 보니 제 PC에서 관리 패널 도메인이 127.0.0.1, 그러니까 제 PC 자신으로 풀리고 있었습니다. 공식 문서를 보면 exit node를 쓰는 동안에는 exit node가 DNS 서버 역할도 합니다. 도메인 조회까지 서버를 거친다는 뜻이죠. 그런데 그 서버의 hosts 파일에는 서버 관리 프로그램이 넣어 둔 "이 도메인은 127.0.0.1"이라는 줄이 있었습니다. 서버 입장에서는 자기 자신이니 맞는 말인데, 그 답이 제 PC로 그대로 넘어온 겁니다.

첫 시도(실패). Tailscale 관리 화면의 DNS 메뉴에서 공용 DNS(Cloudflare)를 지정하고 Override DNS servers를 켜 봤습니다. 설정은 PC에 내려왔는데 결과는 그대로 127.0.0.1이었습니다. exit node를 쓰는 동안에는 이 설정이 먹지 않았습니다.

해결. 서버 쪽 hosts 파일은 서버 관리 프로그램이 쓰는 거라 건드리지 않았습니다. 대신 제 PC의 hosts 파일에 "이 도메인은 서버 공인 IP"라고 한 줄 넣었습니다. 관리자 권한 PowerShell에서 아래처럼 실행합니다(도메인과 IP는 본인 것으로 바꾸세요).

POWERSHELL
Add-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Value "`r`n서버공인IP panel.example.com"
ipconfig /flushdns

이렇게 하니 관리 패널 로그인 화면이 바로 떴습니다. hosts 파일은 윈도우에 저장된 일반 파일이라 재부팅해도 그대로 남습니다. 다만 PC마다 따로 해줘야 해서, 사무실 PC에서도 한 번 해야 합니다.

내친김에 출장용 노트북까지

여기까지 하고 나니 조만간 있을 출장이 생각났습니다. 저는 컴퓨터를 세 대 씁니다. 집(노트북이지만 거의 고정), 사무실 데스크톱, 그리고 출장 때 들고 다니는 노트북입니다. 앞의 두 대는 설정이 끝났으니 노트북도 똑같이 맞춰 두기로 했습니다.

정리해 보니 노트북에서 할 일은 세 가지였습니다.

  1. Tailscale 설치 후 같은 계정으로 로그인 - 관리 화면 Machines 목록에 노트북이 뜨는지 확인
  2. exit node 선택 + hosts 한 줄 - 집 PC와 똑같이
  3. SFTP·SSH를 쓰려면 이 노트북의 SSH 키를 서버에 등록 - Tailscale은 길만 열어 줄 뿐이고, 들어가는 열쇠는 PC마다 따로입니다

출장지 호텔이나 카페 와이파이에서도 트래픽이 암호화된 채로 서버를 거쳐 나가니, 보안 면에서도 오히려 낫겠다 싶었습니다.

정보
Tailscale은 기본적으로 180일마다 다시 로그인해야 합니다(키 만료). 출장 중에 끊기는 게 걱정이면 관리 화면에서 그 기기만 "Disable key expiry"로 끌 수 있습니다. 대신 노트북을 잃어버리면 관리 화면에서 그 기기를 바로 지워야 합니다. 편의와 안전 중 무엇을 고를지는 각자 판단할 부분입니다.

그런데 노트북에 VS Code가 없었다

노트북으로 코딩 작업을 하려고 보니 VS Code부터 없었습니다. 그래서 설치하고 로그인까지 했는데... 집 PC에 깔아 둔 확장 프로그램이 하나도 없더라고요.

로그인만 하면 알아서 따라오는 줄 알았습니다. 알아보니 VS Code는 로그인과 별개로 설정 동기화(Settings Sync)를 켜야 확장이 따라옵니다. 공식 문서 기준으로 왼쪽 아래 계정(또는 톱니) 메뉴의 "Backup and Sync Settings..."에서 켜고, Microsoft나 GitHub 계정으로 로그인하는 방식입니다. 확장뿐 아니라 설정, 단축키, 표시 언어까지 맞춰 준다고 합니다.

저는 목록 파일로 한 번에 설치했습니다

동기화를 켜는 게 정석이지만, 저는 더 단순한 방법을 썼습니다. 집 PC에서 설치된 확장 목록을 파일로 뽑아 OneDrive에 저장하고, 노트북에서 그 파일을 읽어 한 번에 설치하는 방식입니다. 집 PC에는 확장이 16개 깔려 있었습니다.

집 PC에서 설치된 확장 목록을 파일로 뽑아 OneDrive에 저장한 리스트 화면

집 PC(PowerShell)에서 목록을 뽑고,

POWERSHELL
code --list-extensions | Set-Content "$env:OneDrive\vscode-extensions.txt"

노트북에서 OneDrive 동기화가 끝난 뒤 새로 연 PowerShell에 붙여넣습니다.

POWERSHELL
Get-Content "$env:OneDrive\vscode-extensions.txt" | ForEach-Object { code --install-extension $_ }

이렇게 해서 확장까지 모두 설치를 마쳤습니다. 다만 이 방법은 한 번 복사하고 끝입니다. 나중에 집 PC에 새로 깐 확장은 따라오지 않습니다.

VS Code가 영어로 나올 때

확장까지 깔았는데 화면이 영어였습니다. 한국어 팩은 깔렸는데 표시 언어는 따로 골라야 하더라고요.

  1. Ctrl + Shift + P로 명령 팔레트를 연다
  2. Configure Display Language를 입력해 선택한다
  3. 목록에서 한국어(ko)를 고른다(없으면 설치까지 알아서 해줍니다)
  4. 오른쪽 아래 Restart를 누르면 한글로 바뀐다

놓치기 쉬운 점 다섯 가지

  1. Tailscale을 설치만 해서는 웹 관리자 화면 IP가 바뀌지 않는다. 브라우저 트래픽은 exit node를 켜야 서버를 거쳐 나간다
  2. exit node는 서버 설정(포워딩 + advertise)과 관리 화면 승인, 두 가지가 다 돼야 목록에 나온다
  3. exit node를 쓰는 동안에는 DNS도 그 서버를 거친다. 서버 자신의 도메인이 127.0.0.1로 풀리면 PC hosts 파일로 잡는다
  4. SFTP만 쓴다면 FTP 포트는 열 필요가 없다. 쓰는 것만 연다
  5. VS Code는 로그인과 설정 동기화가 별개다. 동기화를 켜거나 목록 파일로 옮긴다

자주 묻는 질문

Q Tailscale을 설치했는데 왜 웹사이트 관리자 화면은 집 IP로 보이나요? +
A
브라우저로 도메인에 접속하면 일반 인터넷을 타기 때문입니다. Tailscale 망을 타는 건 100으로 시작하는 Tailscale 주소로 접속할 때뿐입니다. 웹 트래픽까지 고정 IP로 보이게 하려면 고정 IP 서버를 exit node로 지정해 켜야 합니다.
Q exit node를 계속 켜 둬야 하나요? +
A
아닙니다. Tailscale 트레이 메뉴에서 켜고 끌 수 있어서 관리 작업할 때만 켜도 됩니다. 켜 둔 동안에는 모든 인터넷 트래픽이 그 서버를 거쳐 나갑니다.
Q exit node를 켰더니 특정 사이트 주소가 127.0.0.1로 나옵니다. 왜 그런가요? +
A
exit node를 쓰는 동안에는 도메인 조회도 그 서버가 대신합니다. 서버의 hosts 파일에 그 도메인이 127.0.0.1로 적혀 있으면 그 답이 PC로 넘어옵니다. PC의 hosts 파일에 올바른 IP를 한 줄 넣으면 해결됩니다. 제 경우 Tailscale 관리 화면에서 공용 DNS를 지정하는 방법은 효과가 없었습니다.
Q PC hosts 파일에 넣은 줄은 재부팅하면 사라지나요? +
A
사라지지 않습니다. hosts 파일은 윈도우에 저장된 일반 파일이라 직접 지우기 전까지 유지됩니다. 다만 PC마다 따로 넣어야 합니다.
Q 새 PC에 VS Code를 깔고 로그인했는데 확장이 안 따라옵니다. +
A
로그인과 설정 동기화는 별개입니다. 계정 메뉴에서 설정 동기화(Backup and Sync Settings)를 켜야 확장이 따라옵니다. 한 번만 옮기면 되는 경우라면 code --list-extensions로 목록을 뽑아 새 PC에서 code --install-extension으로 설치하는 방법도 있습니다.

마무리

시작은 또 바뀐 집 IP였는데, 끝나고 보니 관리자 로그인과 관리 패널, 출장용 노트북, VS Code까지 한 번에 정리가 됐습니다. 이제 집 IP가 바뀌어도 exit node만 켜면 됩니다.

이번에 가장 크게 느낀 건, 막히는 원인이 매번 "어느 길로 가느냐"였다는 점입니다. SSH는 Tailscale 길로, 웹은 인터넷 길로, DNS는 exit node 길로 가고 있었는데 그걸 모르면 엉뚱한 데를 고치게 되더라고요. 다음 할 일은 노트북 SSH 키 등록입니다.

주요 내용 요약

  • 문제: 집 유동 IP가 바뀌어 수십 개 사이트의 관리자 자동 로그인(IP 화이트리스트)이 풀림
  • 해결: 고정 IP 클라우드 서버를 Tailscale exit node로 지정하고, 그 서버 IP를 화이트리스트에 한 번만 추가
  • 시행착오: exit node 사용 중 서버 관리 패널 도메인이 127.0.0.1로 풀림 - PC hosts 파일로 해결
  • 덤: 출장용 노트북 설정 순서 정리, VS Code 확장은 목록 파일로 16개를 한 번에 설치

참고 자료
1. Exit nodes (route all traffic)
  Tailscale Inc., 2026년 9월 확인
  https://tailscale.com/kb/1103/exit-nodes
2. 키 만료(Key expiry) 안내
  Tailscale Inc., 2026년 9월 확인
  https://tailscale.com/kb/1028/key-expiry
3. Settings Sync in VS Code
  Microsoft, 2026년 9월 확인
  https://code.visualstudio.com/docs/configure/settings-sync
4. Display Language(VS Code 표시 언어 변경)
  Microsoft, 2026년 9월 확인
  https://code.visualstudio.com/docs/configure/locales

글 정보
작성일2026년 09월 26일
최종 업데이트2026년 09월 26일
이 글을 쓴 사람 호텔천사
저자 소개 보기
0:00
⌃ 0%