13강 / 20강
NAT — 집 인터넷에는 공인 주소가 없다
사설 대역 · 포트포워딩 · CGNAT
8강에서 이 서버의 주소가 192.168.219.157 이라고 했습니다.
이 주소는 세상 어디에도 없습니다. 정확히는, 세상 곳곳에 수억 개가 있습니다.
사설 대역이기 때문이에요. 우리 집에도 옆집에도 192.168.0.1 이 있습니다.
'우리 집 안에서만 통하는 번호' 니까요.
사설 대역 넷
| 대역 | 주소 개수 | 어디서 보나 |
|---|---|---|
10.0.0.0/8 | 1,677만 | 큰 사내망 |
172.16.0.0/12 | 104만 | 도커 기본값이 여기 삽니다 |
192.168.0.0/16 | 65,536 | 집 공유기 |
100.64.0.0/10 | 419만 | 통신사 CGNAT — 아래 참고 |
나가는 길은 되는데 들어오는 길이 안 된다
공유기는 나가는 요청을 기억해 뒀다가 답장을 제 자리로 돌려줍니다. 그래서 웹 서핑은 잘 되죠.
그런데 밖에서 먼저 두드리면 공유기는 난감합니다 — 집 안 어느 기계에 줘야 할지 알 수 없으니 그냥 버립니다.
이 한 가지 때문에 집 서버를 밖에 내놓기가 어렵습니다.
Python
브라우저에서 실행
고전적인 해법 — 포트포워딩
공유기에 규칙을 하나 적어 둡니다. "바깥 443 으로 온 것은 192.168.219.157 의 443 으로 넘겨라."
되는 조건
공유기가 진짜 공인 IP 를 받고 있어야 합니다.
그리고 그 IP 가 자주 바뀌지 않거나, 바뀔 때마다 A 레코드를 고쳐야 하고요.
안 되는 경우 — CGNAT
통신사가 공유기에도 사설 주소(100.64.x.x)를 줍니다.
NAT 이 두 겹이라 포트포워딩을 아무리 해도 밖에서 닿지 않습니다.
🤔 확인 문제
통신사가 공유기에
100.72.5.9 를 줬습니다. 포트포워딩으로 집 서버를 열 수 있을까요?해설
100.64.0.0/10 은 통신사 CGNAT 대역입니다. 공유기 위에 통신사 NAT 이 한 겹 더 있어 밖에서 내 공유기까지 닿지 못합니다.