왜 RFC 1918 을 정리했나?
사설망에 대해서 하나 궁금했던 것이 있다. 바로 사설망에 위치하는 호스트들의 IP 주소 형식이었는데 이 주소 공간이 특정 범위 내에 존재하는 것 같다는 생각이 들었고 왜 그런가에 대해서 찾아보다가 RFC1918을 발견하게되었다.
해당 문서에서는 사설망 IP 주소 공간 범위를 정리해두었고, 사설망으로 네트워크를 분리했을 때의 장단점, 마이그레이션 가이드 등이 간단하게 설명되어있다.
정리는 기본적으로 번역을 기본으로 하되 매끄럽지 않은 부분은 의역을 하였다. 너무 디테일하거나 개인적으로 중요하지 않다고 생각하는 부분은 생략하였다.
RFC 1918 정리
원문은 여기에서 살펴볼 수 있다.
1. Introduction
여러 조직들이 자신들의 TCP/IP 네트워크를 구축하고자하는데 자신의 네트워크에서 어떻게 IP 주소를 붙여야하는가에 대해서 고민을 하고 있습니다. 이 문서는 사설망(private internets)에서 어떻게 IP 주소를 붙이면 좋은지에 대해서 설명하고자 합니다.
2. Motivation
전 세계적으로 TCP/IP 기술이 확산되면서 독립적인 조직들이 IP 주소 부여 체계를 자신들만의 규칙을 정해서 네트워크를 운영하고 있습니다.
인터넷은 어느 누구도 예상할 수 없을 정도로 성장했습니다. 이러한 급격한 성장 때문에 새로운 문제들이 계속 나타나고 있는데 그 중 하나는 전 세계적으로 고유한 주소 공간(address space)이 고갈될 것이라는 우려입니다. 또한 트래픽 라우팅 오버헤드 양이 인터넷 서비스 제공자(ISP)들이 감당할 수 있는 수치를 넘어설 것이라는 것입니다. 이러한 문제들과 함께 우리는 인터넷 주소 할당 절차와 이러한 절차가 라우팅 시스템에 미치는 영향을 검토할 필요가 있습니다.
인터넷의 현재 크기와 그 성장 속도를 봤을 때 특정 조직에서 네트워크를 구축하고자할 때 네트워크 내에 존재하는 모든 호스트들이 인터넷에 연결되어있는 다른 모든 호스트들과 연결할 수 있는 고유한 IP 주소를 가져야한다는 가정은 더 이상 현실적이지 않습니다.
이제까지는 모든 호스트들이 글로벌하게 고유한 IP 주소를 가져야한다는 것이 일반적이었습니다. 하지만 조직들이 또한 점점 글로벌한 IPv4 IP 주소를 인터넷 레지스트리(Internet registry)로부터 얻기가 힘들어진다는 것도 사실입니다 [RFC1466].
IP 주소를 사용하는 기업 내 호스트는 세 가지 카테고리로 분류할 수 있습니다:
- Category 1: 다른 기업들이나 인터넷에 연결될 필요가 없는 호스트들이 있습니다. 이러한 호스트들은 각 기업 내에서는 서로 구별되어야하지만 다른 기업들 간에는 구분될 필요가 없습니다.
- Category 2: 제한된 서비스를 이용하기 위해서 외부 인터넷과 연결되어야하는 호스트들이 있습니다. 이러한 서비스들의 예시로는 E-mail, FTP, 원격 로그인 등이 있을 수 있습니다. 이 범주에 속한 호스트들은 제한되지 않은 외부 액세스는 불필요할 수 있으며 개인 정보 보호나 보안상의 이슈로 인해 바람직하지 않을 수 있습니다. 이러한 호스트들의 범주도 첫 번째와 마찬가지로 기업 내에서는 서로 구분되는 IP 주소를 가져야하지만 다른 기업들 간에는 구분될 필요가 없습니다.
- Category 3: 다른 기업의 네트워크에 접근이 필요한 호스트들이 있습니다. 이러한 호스트들은 글로벌에 고유한 IP 주소가 필요합니다.
우리는 위의 세 가지 카테고리 중에 첫 번째와 두 번째에 속하는 호스트들을 “private”하다고 부를 것이며 세 번째 카테고리에 속한 호스트들을 “public”하다고 부를 것입니다.
대부분의 어플리케이션은 한 기업 내에서만 연결이 필요하며 대부분의 한 기업 내의 호스트들은 외부 연결이 필요하지 않습니다. 대기업에서는 기업 외부의 네트워크 레이어 연결이 필요 없는 TCP/IP를 사용하여 대부분의 호스트를 식별하기가 쉽습니다.
기업 외부와 연결이 필요하지 않은 예시들은 다음과 같은 것이 있습니다:
- 큰 공항에서 출발/도착 시간에 대한 정보를 기업 내 TCP/IP 네트워크를 통해 전달할 수 있지만 이러한 정보가 다른 기업의 네트워크 레이어에 접근할 필요는 없을 것입니다.
- 은행과 같은 기업에서는 내부 통신을 위해 TCP/IP로 전환하고 있습니다. 해당 기업들의 금전 출납기, 사무직에 있는 장비들의 데이터는 외부 기업 네트워크와 연결될 필요는 없을 것입니다.
- 보안상의 이유로 많은 기업들이 어플리케이션 계층의 게이트웨이를 사용하여 내부 네트워크를 인터넷과 연결합니다. 내부 네트워크는 일반적으로 인터넷에 직접 접근하지 않으므로 인터넷의 입장에서는 게이트웨이만 식별할 수 있으면 됩니다. 따라서 내부 네트워크에서는 인터넷과는 무관하게 IP 주소를 부여할 수 있습니다.
- 내부 네트워크의 라우터 인터페이스들은 외부 기업들에서 직접적으로 연결될 필요가 없습니다.
3. Private Address Space
Internet Assigned Numbers Authority(IANA)에서는 다음과 같은 세 개의 IP 주소 공간들을 private 네트워크를 위해서 할당했습니다.
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)
위의 세 블럭 중 첫 번째 블럭을 “24-bit block”, 두 번째 블럭을 “20-bit block” 그리고 세 번째 블럭을 “16-bit block”이라고 부를 것입니다. 위의 세 블럭을 살펴보면 CIDR 표기법에서 첫 번째 블럭은 클래스 A에 속하는 주소 범위이고 두 번째 블럭은 연속된 16개의 클래스 B의 주소 범위를 나타내고 마지막 블럭은 연속된 256개의 클래스 C 주소 범위를 나타냅니다.
이 문서에서 정의된 주소 공간에 따라 IP 주소를 사용하기로 결정한 기업은 IANA 또는 인터넷 레지스트리와 아무 협의 없이 위의 범위의 IP 주소를 사용할수 있습니다. 따라서 모든 기업들은 해당 주소 범위를 사용할 수 있으며 이 “private” 주소 공간의 IP 주소들은 하나의 기업 안에서는 고유한 값을 가져야합니다. 만약 서로 다른 기업들이 같은 “private” 네트워크 내에서 통신하기로 결정하였다면 두 기업들은 위의 주소 범위 내에서 서로 겹치지 않는 IP 주소를 가져야합니다.
이전과 마찬가지로 글로벌하게 고유한 IP 주소 공간이 필요한 모든 기업은 인터넷 레지스트리에서 주소를 얻어야합니다. 외부 연결을 위해 IP 주소를 요청하는 기업에서는 위의 세 블럭에 해당하지 않는 주소를 할당받습니다.
“private”한 주소 공간을 사용하기 위해서는 기업 내에서 앞으로 어떤 호스트들이 외부 인터넷과 연결을 가지지 않아도되는지 판단하고 이러한 호스트들을 “private” 주소 공간의 IP 주소를 할당할 수 있습니다. 해당 호스트들은 위에서 언급된 세 종류의 블럭들에 해당되는 IP 주소를 할당받습니다. “private” 호스트는 기업 내의 “private” 주소 공간 내의 있는 다른 모든 호스트들과 통신할 수 있습니다. 그러나 기업 외부의 어떤 호스트에도 IP 연결을 할 수 없습니다. 그렇지만 게이트웨이를 통해서 “private” 호스트들은 외부 인터넷 서비스와 연결할 수 있습니다.
“private” 호스트들이 아닌 다른 모든 호스트(“public”한 호스트)들은 인터넷 레지스트리에서 할당한 글로벌한 고유 주소 공간을 사용합니다. “public” 호스트들은 다른 기업의 “public” 호스트들과 “private” 호스트들과 통신할 수 있습니다. “public” 호스트들은 기업 외부의 “public” 호스트들과 연결을 맺을 수 있지만 기업 내의 “private” 호스트들과는 직접적으로 연결은 맺을 수 없습니다.
호스트를 “private” 주소 공간에서 “public” 주소 공간으로 옮기는 작업에는 IP 주소 변경, DNS 설정 변경 해당 호스트의 IP를 참조하는 다른 호스트들의 설정 파일 수정 등이 포함됩니다.
“private” 주소는 글로벌한 주소가 아니기 때문에 “private” 네트워크에 대한 라우팅 정보는 기업 간의 링크에 전파되지 않아야 하며 “private” 네트워크의 호스트가 패킷의 출발지나 도착지라면 마찬가지로 외부 링크에 포워딩되지 않아야 합니다. “public” 네트워크의 ISP와 같은 라우터들은 “private” 네트워크로부터의 패킷들을 받는다면 해당 패킷들을 필터링해야 합니다. 만약에 “public” 네트워크의 라우터가 “private” 네트워크로부터의 패킷을 수신한다면 해당 패킷들을 필터링하는 것을 프로토콜 오류로 처리하지 않아야 합니다.
4. Advantages and Disadvantages of Using Private Address Space
일반적으로 인터넷을 위해 “private”한 주소 공간을 사용하는 것의 이점은 굳이 인터넷 연결이 필요 없는 호스트들에게 IP 주소를 할당하지 않으면서 전세계적으로 고유한 주소 공간을 확보하는 것입니다.
기업들도 “private” 주소 공간을 사용하면 서 다음과 같은 이점을 얻고 있습니다: 기업들은 이전과 달리 “private” 주소 공간에 해당하는 IP 주소들을 마음껏 사용할 수 있어 네트워크 설계에 있어 많은 유연성을 확보할 수 있게되었습니다. 이를 통해 기업 내 주소 체계 관리가 더욱 편해졌습니다.
인터넷은 다양한 이유로 인터넷에 연결되지 않은 기업들이 자신들의 호스트에 IP 주소를 부여해서 사용하고 있는 상황에 직면했습니다. 이 상황의 핵심은 호스트에 부여한 IP 주소가 사실은 IANA에서 발급받지 않은 IP 주소 공간이라는 점입니다. 일부 경우에는 이런 IP 주소 공간의 몇몇 주소는 이미 다른 기업에 할당되어 있는 경우도 있습니다. 이러한 상황은 잠재적으로 심각한 문제를 야기할 수 있는데, 만약에 IANA에서 IP 주소를 발급받은 기업의 호스트가 인터넷에 연결된다면 IP 라우팅 기능이 전세계적으로 제대로 동작하지 않을 수도 있습니다. 원칙적으로 ISP들은 이러한 상황을 라우트 필터를 통해 미연에 방지해야 하지만 이러한 문제가 100% 없다는 것을 보장하는 것은 아닙니다. 그런데 만약 IP 주소를 충분하게 할당받지 못한 기업에서 “private” 주소 공간을 사용한다면 충분한 IP 주소 공간을 얻을 수 있고 꼭 인터넷 연결이 필요한 호스트만 기존 IP 주소를 부여하여 더욱 안전한 선택권을 제공합니다.
“private” 주소 공간 사용의 주요 단점은 기업들의 인터넷 접속에 대한 유연성을 감소시킬 수 있다는 점입니다. 한번 기업에서 “private” 주소 공간을 사용하기로 결정한다면 기존 네트워크에 존재하는 호스트들의 IP 주소를 변경해야하고 어떤 호스트를 외부 인터넷에 연결시킬지 결정해야합니다.
“private” 주소 공간 사용의 또다른 단점은 여러 “private” 네트워크를 하나로 합쳐야할 때 다시 모든 호스트들의 IP 주소를 부여해야할 수도 있다는 점입니다. 서로 다른 두 “private” 네트워크의 호스트들이 고유한 주소를 가지고 있지 않을 수도 있기 때문입니다.
새로 쉽게 IP 주소를 변경할 수 있게 해주는 DHCP(Dynamic Host Configuration Protocol)과 같은 기술의 개발로 새롭게 IP 주소를 부여하는 비용이 절감될 수 있습니다.
5. Operational Considerations
“private” 주소 공간으로 이전하는 한 가지 전략은 네트워크의 “private” 한 부분을 먼저 설계하고 해당 부분에 대해서 “private” IP 주소 공간 영역을 사용하도록 결정합니다. 그런 다음 필요한 지역에 “public” 서브넷을 만들고 외부 연결을 설계합니다.
이렇게 설계를 한 번 해놓으면 영구적으로 수정할 필요가 없습니다. 왜냐하면 하나 이상의 호스트 그룹이 나중에 “private”에서 “public”으로 바꾸거나 그 반대의 상황이 오는 경우에는 관련 호스트들만 다시 IP 주소를 수정하면 됩니다. 주요 네트워크의 중단을 방지하기 위해서 유사한 연결을 가진 서브넷들을 하나의 그룹으로 만들어 관리하는 것이 좋습니다 (그룹 중 하나의 서브넷에서 장애가 발생할 경우 다른 서브넷으로 대체하기 위함인 것 같음).
적절하게 서브넷이 설계될 수 있고 장비들이 갖추어져있다면 24-bit block 주소 영역을 이용하여 주소 지정 계획을 세우는 것이 좋습니다. 만약 서브넷에 문제가 있는 경우 16-bit block이나 20-bit block의 주소 영역을 사용할 수 있습니다.
기업 외부 인터넷과 연결되는 라우터들에 적절한 패킷 필터와 라우팅 필터를 설치하는 것이 좋습니다. 이를 통해 외부 인터넷으로 패킷 및 라우팅 정보 유출을 방지할 수 있습니다. 또한 기업은 “private” 주소의 호소트 패킷이 직접적으로 외부 인터넷을 가리키고 있다면 섹션 4에서 언급한 모호한 라우팅 상황으로부터 보호하기 위해서 해당 패킷들을 필터링 해야합니다.
어떤 다른 “private” 주소 공간에 존재하는 두 사이트가 서로 “public” 인터넷을 통해 통신을 하려고 할 수 있습니다. 이런 경우, 이것을 가능하게하기 위해서 각 “private” 네트워크 경계에서 캡슐화의 방법을 사용하여 자신의 “private” 주소를 감춰야 합니다.
두 개 이상의 기업내 조직이 별 규칙 없이 이 문서에서 명시된 주소 할당을 따른 다음에 나중에 서로 IP 연결을 설정하려면 서로 IP 주소가 침해될 수 있습니다. 이러한 위험을 최소화하기 위해 각 조직에서는 내부적으로 주소를 할당할 때 자신에게 부여된 주소 공간의 풀에서 임의로 할당해야합니다.
기업이 “private” 주소 공간과 “public” 주소 공간을 함께 사용하는 경우, 기업 외부의 DNS 클라이언트는 해당 기업의 호스트 주소가 모호하므로 기업에서는 “private” 주소 공간의 주소를 표시하지 않아야합니다. 이를 보장하는 한 가지 방법은 두 개의 authority 서버를 운영하는 것인데 각각의 DNS zone은 모두 기업의 “private” 주소 공간과 “public” 주소 공간을 포함하고 있습니다. 하나의 서버에서는 “public” 주소 공간에서 볼 수 있고 해당 서버는 “public” 주소 영역의 호스트들에 대한 주소 정보만 가지고 있습니다. 다른 서버는 “private” 네트워크에서만 접근 가능하며 전체 호스트의 주소 정보를 가지고 있습니다. 두 서버의 일관성을 보장하기 위해서 같은 데이터 셋에 대한 정보를 통해 구성해야합니다.
6. Conclusion
이 문서에 언급된 체계를 통해 많은 대기업들은 비교적 적은 수의 글로벌 IP 주소만 가지면 됩니다. 인터넷은 불필요한 IP 주소 할당을 없앰으로써 글로벌 IP 주소를 효과적으로 절약하여 IP 주소 체계의 수명을 연장시켰습니다. 기업들은 비교적 큰 “private” 주소 공간을 통해 좀 더 유연하게 네트워크를 설계할 수 있게 되었습니다. 하지만 “private” 네트워크를 사용하기 위해서는 조직 내의 호스트의 일부 혹은 전체에 대한 IP 주소 할당을 새롭게 해야 합니다.