공인 IP 가 바뀌는 회선
가정용·소규모 회선은 재접속할 때마다 공인 IP 가 바뀝니다. 도메인을 그 IP 로 직접 가리켜 두면, 바뀌는 순간 밖에서 아무것도 안 열립니다. 증상이 타임아웃 하나뿐이라 원인이 잘 안 보입니다.
바뀌는 IP 를 이름이 따라가게 하면 됩니다. 집이나 사무실 회선으로도 서비스를 올릴 수 있습니다 — 저희 자체 서버도 가정용 회선에서 이 방식으로 돌고 있습니다.
먼저, 나에게 공인 IP 가 있나
회선이 CGNAT 이면 통신사가 공인 IP 하나를 여러 가입자에게 나눠 쓰게 하는 방식이라 나에게 배정된 주소가 없습니다. 이름을 따라가게 해도 밖에서 들어올 길이 없습니다.
curl -s https://api.ipify.org # 실제로 인터넷에 보이는 내 공인 IP이 값을 공유기 관리 화면의 WAN IP 와 비교하세요.
| 같다 | 공인 IP 가 있습니다 → DDNS 로 갑니다 |
다르다 (특히 WAN 이 100.64.x.x~100.127.x.x) | CGNAT 입니다 → 터널로 갑니다 |
DDNS 로 이름이 IP 를 따라가게 하기
IP 가 바뀔 때마다 도메인 레코드를 따라 바꿔주는 방식입니다. 둘 중 하나로 합니다.
| 방법 | 어떻게 |
|---|---|
| 공유기 내장 DDNS | 대부분의 공유기에 있습니다. 공유기가 IP 변경을 직접 감지해 갱신하므로 서버에 아무것도 안 깔아도 됩니다. 먼저 여기를 보세요. |
| DDNS 서비스 + 갱신 클라이언트 | 공유기에 기능이 없을 때. 서비스에서 이름을 받고, 서버에 갱신 클라이언트를 띄웁니다. |
어느 쪽이든 결과는 같습니다 — 바뀌는 IP 를 따라가는 이름이 하나 생기고, 실제 서비스 도메인은 그 이름을 CNAME 으로 가리킵니다.
paas.example.com CNAME 내이름.ddns-서비스.net서비스 도메인에 IP 를 직접 박지 마세요
A 레코드 → 공인 IP 로 해두면 IP 가 바뀌는 날 직접 고쳐야 하고, 고칠 때까지 계속 닫혀 있습니다. 한 단계를 CNAME 으로 두면 갱신되는 자리가 한 곳으로 모입니다.
TTL 은 낮게 — 60초 권장
복구에 걸리는 시간은 갱신 주기 + TTL 입니다. TTL 을 "자동" 으로 두면 실제로는 5분쯤 잡히고, 정작 IP 가 바뀐 순간 그 값으로 캐시돼 5분을 기다리게 됩니다.
인증서 갱신도 같이 막힙니다
IP 가 어긋난 동안에는 인증서 갱신도 실패합니다. 발급 확인이 그 주소로 들어오기 때문입니다. 당장은 인증서가 살아 있어서 조용하다가, 갱신 시점에 드러납니다.
CGNAT 이면 터널로
공인 IP 를 아예 쓰지 않는 방법입니다. 서버가 밖으로 나가서 붙기 때문에 공인 IP 가 없어도 되고, 공유기에 포트를 열 필요도 없습니다.
공인 IP 가 있다면 DDNS 쪽이 낫습니다
터널은 접속이 저희 서버를 거치기 때문에 저희 쪽 상태에 묶입니다. 자기 공인 IP 로 직접 서비스하면 그 의존이 없습니다.