Tailscale로 Coolify 대시보드 보안 강화하기: 오라클 클라우드에서의 설정 경험
공인 IP로 열린 관리자 페이지, 괜찮은 걸까
Coolify를 오라클 클라우드 위에 올려서 사용하고 있었습니다. 배포 도구로서 편리하게 쓰고 있었지만, 문득 한 가지가 신경 쓰이기 시작했습니다. Coolify 대시보드가 공인 IP의 8000번 포트로 누구나 접근할 수 있는 상태였다는 것입니다.
오라클 클라우드의 보안 목록(Security List)을 확인해보니, 8000번과 6001번 포트가 0.0.0.0/0으로 열려 있었습니다. 즉, 인터넷에 연결된 누구든 Coolify 대시보드에 접근을 시도할 수 있는 상태였습니다.
IP 제한의 한계: 고정 IP가 없다면
가장 먼저 떠오른 방법은 OCI 보안 목록에서 특정 IP만 허용하는 것이었습니다. 하지만 현실적인 문제가 있었습니다.
- 집 인터넷의 IP는 유동적입니다
- 작업은 맥북으로 하는데, 카페나 외부에서도 작업합니다
- 휴대폰으로 확인할 때도 있습니다
매번 IP가 바뀔 때마다 OCI 콘솔에 들어가서 보안 규칙을 수정하는 건 현실적이지 않다는 생각이 들었습니다.
Tailscale이라는 선택지
여러 방법을 검토하다가 Tailscale을 알게 되었습니다. WireGuard 기반의 메시 VPN 서비스인데, 핵심은 간단합니다. Tailscale을 설치한 기기들끼리 100.x.x.x 대역의 내부 네트워크를 형성하고, 기기 간 직접 암호화 통신을 합니다.
기존 VPN과의 차이점이 흥미로웠습니다.
기존 VPN:
기기 → VPN 서버 → 목적지 (모든 트래픽이 서버를 경유)
Tailscale (메시 VPN):
기기 A ←→ 기기 B (직접 P2P 연결, 서버 경유 없음)
Tailscale의 서버는 기기 간 연결을 중개해주는 역할만 하고, 실제 트래픽은 기기 간 직접 전달됩니다. 그리고 무료 플랜에서 100대까지 지원하니 개인 용도로는 충분합니다.
일반 인터넷 사용에 영향이 없다
한 가지 중요한 점은, Tailscale이 100.x.x.x 대역 트래픽만 처리하고 일반 인터넷 트래픽에는 전혀 개입하지 않는다는 것입니다. 백그라운드 리소스 사용도 거의 없어서, 설치해두고 있다는 것을 잊을 정도입니다.
설정 과정
1. 서버에 Tailscale 설치
오라클 클라우드 서버에 SSH로 접속한 후 설치합니다.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
설치 중 커널 업그레이드 안내가 나올 수 있는데, OK를 누르면 됩니다. 즉시 재부팅되는 것이 아니라 "나중에 재부팅을 고려하라"는 안내일 뿐입니다.
tailscale up을 실행하면 로그인 URL이 출력됩니다. 브라우저에서 열어 계정을 만들고, 기기 연결(Connect)을 승인합니다.
2. 맥북에 Tailscale 설치
brew install --cask tailscale
앱을 열면 Network Extension 권한을 요청합니다. 이건 VPN 터널을 만들기 위한 필수 권한이므로 허용합니다. 그 후 서버와 같은 계정으로 로그인하면 됩니다.
3. 연결 확인
Tailscale 관리 페이지에서 두 기기가 모두 Connected 상태로 표시되면 성공입니다. 서버의 Tailscale IP를 확인합니다.
tailscale ip -4
# 예: 100.111.182.8
브라우저에서 http://100.111.182.8:8000으로 접속하면 Coolify 대시보드가 열립니다.
4. OCI 보안 목록에서 포트 닫기
Tailscale을 통한 접속이 확인되면, OCI 보안 목록에서 8000번과 6001번 포트의 0.0.0.0/0 규칙을 삭제합니다. Tailscale 트래픽은 OCI 방화벽을 거치지 않으므로, 포트를 닫아도 Tailscale 경로로는 정상 접속됩니다.
6001번 포트는 Coolify의 WebSocket 포트로, 배포 시 빌드 로그가 실시간으로 올라오거나 서비스 상태가 즉시 반영되는 기능에 사용됩니다. 이것도 함께 닫아줍니다.
결과
설정 후의 상태를 정리하면 이렇습니다.
http://공인IP:8000→ 접속 불가 (외부 차단)http://100.x.x.x:8000→ Tailscale 기기에서만 접속 가능
Wi-Fi, 핫스팟, LTE 어떤 네트워크에 연결되어 있든 Tailscale 앱이 켜져 있으면 항상 접속 가능합니다. SSH 터널처럼 매번 세션을 열 필요도 없고, 휴대폰에서도 동일하게 접근할 수 있습니다.
돌이켜 생각해보면
관리자 도구의 포트를 공인 IP로 열어두는 건, Coolify에 로그인 기능이 있다 하더라도 좋은 습관은 아니라는 생각이 들었습니다. 공격 표면을 줄이는 것이 보안의 기본이니까요.
Tailscale은 설치가 간단하고 무료이면서, 네트워크 지식이 깊지 않아도 VPN 수준의 접근 제어를 구현할 수 있게 해줍니다. 오라클 클라우드뿐 아니라, 관리 도구를 외부에 노출하고 있는 상황이라면 한번 검토해볼 만한 방법이라고 생각합니다.
관련 글
OCI MySQL HeatWave, Bastion 없이 Tailscale로 접속하기
Oracle Cloud MySQL HeatWave는 프라이빗 서브넷에만 배치되어 외부 접속이 번거롭습니다. Bastion Service 대신 Tailscale을 활용해 간편하게 접속하는 방법을 정리했습니다.
Docker가 내 DB 서브넷을 점유하고 있었다 — OCI 네트워크 충돌 삽질기
Tailscale로 HeatWave에 접속하려는데 No route to host 에러가 발생했습니다. 원인은 Docker가 HeatWave와 같은 IP 대역을 점유하고 있었기 때문입니다. Docker 네트워크 대역 변경과 Coolify 재설치까지의 삽질 기록.
macOS에서 OCI HeatWave MySQL 접속하기: Bastion SSH 터널 설정 가이드
Oracle Cloud HeatWave MySQL에 로컬에서 접속하기 위한 OCI CLI 설정과 Bastion SSH 터널 구성 과정을 정리했습니다. API 키 등록부터 터널 스크립트 작성, 트러블슈팅까지 전체 흐름을 다룹니다.