What is 'RFC 1918' about 'Private IP'?
IPv4는 전세계 네트워크의 근간입니다.
하지만, 이 IPv4의 데이터 대역은, 다른 데이터(int등)와 같이, 표현하기 위한 데이터 ‘갯수’에 제한이 있습니다.
Private IP(사설 IP)의 필요성
이 제한을 극복하기 위해, ‘Private IP’개념을 사용하게 됩니다.
‘Private IP’는 사설망(Private Network, 내부망이라고도 합니다)에서 사용하는 IP주소를 의미합니다. Public IP대역의 IP갯수에 제한이 있다보니, 사설망에서는 별도의 IP를 사용합니다.
네트워크를 사용하는 Device(장치)들이 급격하게 늘어나면서, Public IP로 모두 대응하기에는 어려워 지면서, Private IP를 별도로 사용하게 되었습니다.
NAT(Network Address Translator)를 통해 Public Net ←→ Private Net 통신하기
이 Private IP를 사용하는 Device들도, 외부 Network와의 통신이 필요하곤 합니다. 이럴때, Private IP를 사용한다면, Public대역에서는 알지 못하는 IP이기 때문에, 통신이 불가하게 됩니다.
이때 사용하는것이 NAT입니다.
NAT에는 Public Network에서 사용하는 Public IP가 할당되며, 이를 이용해 Private IP가 Public IP로 치환되어 외부로 전송됩니다.
NAT의 역할을 보여주는 이미지. 출처: https://en.wikipedia.org/wiki/Network_address_translation
NAT가 단순히 IP만 치환한다면, Private Network에 있는 여러 Device를 구분하지 못하게 됩니다.
이를 위해, NAT가 외부에 노출하는 ‘Port번호’를 Private IP와 Mapping하여, Private Network에 있는 device가 외부와 Packet을 주고 받을 수 있게 됩니다.
NAT에서 사용하는 외부 Port는 ‘포트 주소 변환(PAT, Port Address Translation)’을 통해 동적으로 할당됩니다.
외부에서 Private Network에 있는 device에 접속하려면, 별도의 포트 포워딩(Port forwarding)혹은 DNAT(Destination NAT)이 필요합니다.
NAT 동작의 핵심이 되는 “Translation Table”과 그 작동방식을 보여주는 이미지. 출처: https://en.wikipedia.org/wiki/Network_address_translation
Private IP에 대한 RFC 1918표준
- 그렇다면, 왜 ‘RFC 1918’로, 별도의 IP대역이 Private 대역으로 할당되어 있을까?
- Private Network가 외부(주로 인터넷)과 연결될때, 해당 Private IP대역과 동일한 Public IP 대역과 충돌할 가능성이 있기 때문입니다.
- 때문에, 별도의 IP대역을 분리하여, Public IP대역과 구분해서 사용하게 되었습니다.
- 이러한 주소는 ISP(Internet Service Provider, 인터넷 회선 제공자)나 IANA(Internet Assigned Numbers Authority, 최상위 도메인 관리자)등에서 별도 승인 없이 누구나 내부 네트워크에 자유롭게 사용할 수 있도록 예약된 범위입니다.
- 공인 인터넷망에서는 이 주소들이 라우팅되지 않도록 관례상 필터링됩니다.
RFC 1918로 할당된 Private IP 대역은 다음과 같습니다.
1
2
3
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
적용
AWS VPC
AWS에서 VPC의 내부망의 IP는 RFC 1918를 따르도록 권장됩니다.
AWS ALB
AWS의 ALB에서 Listener로 사용가능한 IP대역은, RFC 1918를 만족해야 합니다.
즉, RFC 1918에 대응되는 Private IP대역만 사용할 수 있습니다.
References
- RFC 1918
- RFC 1918: Address Allocation for Private Internets
- What Is Network Address Translation (NAT)? [from Cisco]
- What Is Network Address Translation (NAT)?
- NAT (wikipedia)
- NAT (wikipedia)