집에서 운영하는 서버·NAS에 외부에서 접속할 때 생기는 문제를 연결 경로별로 나눕니다. 먼저 개인 관리용 SSH인지, 공개 웹사이트 접속인지 정한 뒤 해당 경로를 따라 확인하세요.
증상에서 시작하는 홈서버 외부 접속 가이드
- 관리용 SSH에서 policy denied가 나온다: Tailscale SSH의 port 22 grant·OS 사용자·check 규칙을 구분합니다. NAS의 일반 OpenSSH와 Tailscale SSH 서버의 지원 범위도 확인합니다.
- 공개 웹사이트에서 5xx가 나온다: Cloudflare의 edge와 원본 응답을 비교하는 순서와 실제 504 조사를 봅니다. 알림 수신 시각보다 실패 요청 시각과 로그가 우선입니다.
- 공유기를 업데이트할 예정이다: OpenWrt Keep settings의 보존 범위와 호환성을 먼저 확인하고, 접속 복구 경로와 백업을 준비합니다.
- 접속은 되는데 NAS 동기화 경로가 사라졌다: Syncthing의 실제 볼륨·marker 점검으로 넘어갑니다. 네트워크 성공이 저장 경로의 정상 상태를 보장하지 않습니다.
변경 전에 남길 기록
출발 장치와 목적지, 주소·포트, 발생 시각과 시간대, 정확한 오류, 마지막 변경을 기록합니다. SSH 정책·웹 응답·저장장치 상태를 한 번에 바꾸지 말고 실패한 경로부터 확인하세요. 저장장치와 WordPress 운영은 WordPress·NAS 가이드에서 이어집니다.
네트워크·TLS 글 전체
Nginx DNS 변경 반영: 리터럴·변수·upstream resolve 비교
버전별 DNS 재해석 방식과 proxy_pass URI 변환을 함께 확인해, WebSocket 주소 갱신 문제를 경로 변경과 섞지 않습니다.
Cloudflare DKIM TXT: 문자열 분할과 여러 레코드를 구분하기
DKIM selector·응답 상태·TXT 레코드 경계를 분리해 확인하고, 문자열 분할만으로 키 손상을 단정하지 않는 방법입니다.
Nginx WebSocket 연결: 101 응답 전후를 구분하기
루프백 모의 서버에서 Upgrade 전달 여부를 비교하고 101 이후 끊김과 CORS·프록시 timeout의 경계를 구분합니다.
TLS 인증서 오류: 신뢰·호스트 이름·만료를 따로 검사하기
임시 인증서로 신뢰 오류·이름 불일치·만료 오류를 비교하고, 검증을 끄지 않고 원인을 좁히는 순서를 설명합니다.
Nginx 긴 URL 오류: 414·400·502는 왜 다른가
별도 Nginx 1.24.0 검사에서 요청 줄·요청 헤더·업스트림 응답 헤더의 한계를 나눠 확인했습니다.
OpenWrt Passwall에서 IPv6만 우회될 때 DNS·TProxy를 나누는 법
Passwall의 IPv6 필터 옵션과 IPv6 TProxy를 구분하고 DNS AAAA 응답, fw4/nftables 규칙, 실제 IPv6 경로를 순서대로 확인하는 절차입니다.
Cloudflare 5xx: Cf-Ray와 원본 로그로 504 발생 구간 확인
실제 Nginx 504 로그, Search Console 알림 시각과 재크롤 기록을 대조합니다. Cf-Ray와 원본 응답으로 확인 가능한 범위와 미확인 원인을 구분하세요.
oauth2-proxy Nginx auth_request에서 API 401을 유지하는 법
oauth2-proxy와 Nginx auth_request 조합에서 API의 401이 로그인 HTML이나 302로 바뀐다면 먼저 브라우저 경로와 API 경로의 오류 처리를 분리합니다.
Tailscale이 iptables를 찾지 못할 때 firewall mode를 확인하는 순서
Linux나 OpenWrt에서 tailscaled가 iptables를 찾지 못할 때 실제 선택된 firewall 구현, binary, fallback, netfilter 관리 모드를 로그로 구분하는 절차입니다.
Tailscale 이름은 해석되는데 LAN 주소가 안 열릴 때 route를 확인하는 법
MagicDNS 이름 해석은 성공하지만 LAN service에 접속할 수 없을 때 DNS, subnet route 광고·승인·수락, grant를 서로 다른 계층으로 점검하는 절차입니다.
Tailscale Funnel URL이 열리지 않을 때 backend와 공개 조건을 나누는 법
Tailscale Funnel 접속이 끊기거나 열리지 않을 때 로컬 backend, Funnel 상태, MagicDNS와 HTTPS 조건, 허용 port를 순서대로 분리하는 진단 절차입니다.
Tailscale SSH 권한 거부: node 정책과 사용자 규칙 구분
Tailscale SSH의 tailnet policy 오류를 node 거부와 사용자 거부로 구분합니다. port 22 접근, SSH 규칙, OS 계정과 재인증을 순서대로 확인하세요.