2021.04.23

다시 돌아보는 기본 : 서브넷의 이해

Michael A. Flowers Sr | Network World
IT 세계, 특히 네트워킹에서 서브네트워크를 만드는 과정을 일컫는 서브넷팅(Subnetting)만큼 감을 잡기 어려운 개념도 드물 것이다. 

서브넷은 네트워크를 논리적으로 분할한 것으로, IP 주소 클래스와 서브넷 마스크, 두 가지로 정의된다. 
 
ⓒ Getty Images Bank

많은 경우 컨설턴트는 기업이 그 시점에 필요한 네트워크를 구축하는 데 도움이 되는 네트워크 설계 서비스를 제공한다. 그러나 비즈니스 성장이나 변경 필요에 따라 초기의 네트워크 구조를 더 이상 사용할 수 없게 되는 경우가 발생한다. 

필자가 현재 작업 중인 프로젝트가 딱 이 상황에 해당한다. 컨설턴트가 네트워크를 구상한 시점에는 네트워크에서 수용해야 하는 디바이스와 사용자 수가 많지 않았다. 이후 비즈니스 요구사항이 증가하면서 최대 254개의 호스트를 수용하는 단일 /24 서브넷은 더 이상 충분하지 않다는 사실이 명백해졌다. 그래서 현재의 모든 디바이스를 디바이스 유형별로 수용할 수 있고 성장을 위한 여유 용량까지 확보한 새로운 네트워크 구조를 구축하는 중이다. 

이는 프린터, 서버, 워크스테이션, AP 등 각 디바이스 그룹별로 별도의 서브넷과 그에 상응하는 VLAN을 구축한다는 의미이다. 이렇게 되면 네트워크를 논리적으로 정리된 상태로 유지하면서 각 그룹에서 미래의 수요를 위한 여유 용량도 확보할 수 있다. 

숙련된 IT 전문가도 서브넷팅에는 겁을 먹는 경우가 많다. 서브넷을 구현하기 위해 필요한 귀찮은 작업이 달갑지 않기 때문이다. 필요한 주소가 몇 개인가? 어떤 IP 체계를 사용할 것인가? DHCP를 부여할 주소는 몇 개이고, 고정 할당되는 주소는 몇 개인가? 디바이스 유형을 별도로 분리할 것인가, 아니면 단순히 범위의 특정 구역에 둘 것인가(예를 들어 모든 서버를 범위의 첫 50개 주소에 배치)? 

그래서 일단 네트워크를 만들고 나면 이후 다시 만들거나 크게 변경하는 경우는 드물다. 그만큼 골치 아프기 때문이다. 그러나 필자 회사의 네트워크에서는 다른 선택안이 없고, 힘든 일을 즐기는 필자 개인적인 성격 탓도 있어서 컨설턴트에게 맡기는 대신 직접 해보기로 했다. 이를 위해 한동안 사용하지 않았던 서브넷팅 지식을 머리속에서 다시 끄집어내고 호스트 계산법도 다시 익혀야 했다. 필자가 아는 서브넷팅의 기본적인 사항을 알아보고 마지막에 몇 가지 고려할 점도 살펴보자. 
 

서브넷을 만드는 방법 

적절한 서브넷을 위해서는 기본적으로 바이너리(base-2) 수와 클래스풀 네트워크(classful network)를 이해해야 한다. 클래스풀 네트워크의 개념은 기본적으로 IPv4 주소는 4개의 옥텟(8개의 바이너리 비트 섹션)으로 분할되고, 옥텟은 다시 수용할 호스트의 수에 따라 클래스로 분류된다는 것이다. 클래스풀 네트워크 개념은 클래스 없는 도메인 간 라우팅을 사용하는 현재의 공용 인터넷에서 더 이상 사용되지 않지만, 서브넷 환경에서는 IP 주소를 네트워크 부분과 호스트 부분으로 나누어 네트워크를 분할하는 개념이 여전히 사용된다. 대다수의 내부 네트워크에는 클래스 A, 클래스 B, 클래스 C, 이렇게 3개의 주 프라이빗 IP 범위가 사용된다. 다음 차트에서 볼 수 있듯이 각 클래스는 특정 수의 비트를 주소의 네트워크 부분으로 사용하고 나머지를 호스트 부분으로 사용한다. 
 
ⓒ  Network World / IDG

네트워크 비트와 호스트 비트를 나누어 보면 특정 네트워크에서 IP 주소의 변경되지 않는 부분을 알 수 있다. 10.0.0.0의 클래스 A 범위를 예로 들면 뒤의 3개 IP 주소 옥텟은 DHCP를 통해 부여되거나 할당되면서 순차적으로 바뀌지만, 첫 번째 옥텟은 바뀌지 않는다. 따라서 이 범위의 마지막 주소는 10.255.255.255가 된다. 
 

서브넷 마스크의 중요성 

서브넷팅에서는 서브넷 마스크를 사용해 주소의 호스트 부분에서 비트를 훔쳐 네트워크 부분에 추가하는 방법으로 수용할 수 있는 호스트의 수를 조정한다. 서브넷 마스크는 IP 주소와 마찬가지로 32비트 수지만 용도는 호스트 주소 지정이 아니고 네트워크/서브넷 비트 및 호스트 비트에 해당하는 네트워크 주소 부분을 송수신하는 데 있다. 서브넷 마스크는 모든 호스트 비트를 0으로 설정하고 모든 네트워크/서브넷 비트를 1로 설정하는 방법으로 구축한다. 

IPv4 주소에는 총 32개의 비트가 있으므로(4개인 각 옥텟에 8개씩) 특정 마스크에서 수용되는 호스트 주소의 수를 찾으려면 32에서 네트워크 비트와 서브넷 비트의 수를 뺀 다음 2를 그 차이만큼 제곱한다. 예를 들어 /22 네트워크의 경우 호스트 주소의 수는 32-22=10, 210 = 1024개가 된다. 다음 차트는 다양한 마스크에 따른 호스트 주소의 수를 보여준다. 
 
ⓒ  Network World / IDG

필요한 호스트 주소의 수를 결정했다면, 각 옥텟에 대해 별도로 네트워크 부분과 서브넷 부분의 바이너리 비트를 더한다. 이렇게 해서 서브넷 마스크가 완료된다. 
 

적절한 서브넷의 수와 크기 

네트워크를 서브넷팅할 때는 네트워크에 x개의 디바이스가 있으므로 그 수를 감당하기에 충분한 정도의 주소가 있는 IP 범위와 서브넷을 선택하면 된다고 생각하기 쉽다. 그러나 이 경우 몇 가지 중요한 고려 사항을 놓치게 된다. 예를 들어 16,777,216개의 주소가 있는 초대형 /8 서브넷에서는 네트워크 혼잡 문제가 발생한다. 각 서브넷에는 자체 브로드캐스트 도메인이 있으므로 스위치가 ARP 브로드캐스트를 전송하거나 어느 시스템이 다른 무언가를 브로드캐스팅할 때마다 브로드캐스트 도메인 내의 모든 디바이스가 그 내용을 수신한다. 결과적으로 브로드캐스트 패킷으로 인해 네트워크가 고갈되어 브로드캐스트가 아닌 실제 트래픽이 움직이지 못하게 된다. 

브로드캐스트 트래픽은 주소 수가 256~1,024개 정도라면 관리가 가능하지만, 그 보다 많은 경우 디바이스의 노이즈 수준에 따라 심각한 문제에 직면할 수 있다. 일반적으로 베스트 프랙티스는 네트워크의 주 디바이스 범주 중 일부를 VLAN으로 자체 서브넷 또는 브로드캐스트 도메인으로 분리하는 것이다. 이렇게 하고 서브넷 간에 트래픽을 라우팅하는 일종의 3계층 디바이스를 두면 필요한 만큼 많은 주소를 확보하면서 네트워크 노이즈는 관리 가능한 수준으로 유지할 수 있다. 

새로운 서브넷 체계를 구현하는 과정은 각자의 환경에 따라 크게 다르지만, 가장 좋은 방법은 점진적으로 진행하는 것이다. 쉬운 부분부터 시작해 개념을 테스트하고 경로가 올바르게 작동하도록 하고 지금 /24 환경의 혼잡함을 덜어낼 수 있는 약간의 여유 공간을 만든다. IPv6 주소를 다루는 경우 몇 가지 큰 차이점이 있지만, 많은 부분에서 동일한 원칙이 적용된다. IPv6 주소는 2자로 구성되는 2진법이 아닌 16자로 구성된 16진법을 사용하며, 모든 내부 주소가 동시에 외부 주소이기도 하다. IPv6는 다음 기회에 좀 더 자세한 살펴보겠다. editor@itworld.co.kr


2021.04.23

다시 돌아보는 기본 : 서브넷의 이해

Michael A. Flowers Sr | Network World
IT 세계, 특히 네트워킹에서 서브네트워크를 만드는 과정을 일컫는 서브넷팅(Subnetting)만큼 감을 잡기 어려운 개념도 드물 것이다. 

서브넷은 네트워크를 논리적으로 분할한 것으로, IP 주소 클래스와 서브넷 마스크, 두 가지로 정의된다. 
 
ⓒ Getty Images Bank

많은 경우 컨설턴트는 기업이 그 시점에 필요한 네트워크를 구축하는 데 도움이 되는 네트워크 설계 서비스를 제공한다. 그러나 비즈니스 성장이나 변경 필요에 따라 초기의 네트워크 구조를 더 이상 사용할 수 없게 되는 경우가 발생한다. 

필자가 현재 작업 중인 프로젝트가 딱 이 상황에 해당한다. 컨설턴트가 네트워크를 구상한 시점에는 네트워크에서 수용해야 하는 디바이스와 사용자 수가 많지 않았다. 이후 비즈니스 요구사항이 증가하면서 최대 254개의 호스트를 수용하는 단일 /24 서브넷은 더 이상 충분하지 않다는 사실이 명백해졌다. 그래서 현재의 모든 디바이스를 디바이스 유형별로 수용할 수 있고 성장을 위한 여유 용량까지 확보한 새로운 네트워크 구조를 구축하는 중이다. 

이는 프린터, 서버, 워크스테이션, AP 등 각 디바이스 그룹별로 별도의 서브넷과 그에 상응하는 VLAN을 구축한다는 의미이다. 이렇게 되면 네트워크를 논리적으로 정리된 상태로 유지하면서 각 그룹에서 미래의 수요를 위한 여유 용량도 확보할 수 있다. 

숙련된 IT 전문가도 서브넷팅에는 겁을 먹는 경우가 많다. 서브넷을 구현하기 위해 필요한 귀찮은 작업이 달갑지 않기 때문이다. 필요한 주소가 몇 개인가? 어떤 IP 체계를 사용할 것인가? DHCP를 부여할 주소는 몇 개이고, 고정 할당되는 주소는 몇 개인가? 디바이스 유형을 별도로 분리할 것인가, 아니면 단순히 범위의 특정 구역에 둘 것인가(예를 들어 모든 서버를 범위의 첫 50개 주소에 배치)? 

그래서 일단 네트워크를 만들고 나면 이후 다시 만들거나 크게 변경하는 경우는 드물다. 그만큼 골치 아프기 때문이다. 그러나 필자 회사의 네트워크에서는 다른 선택안이 없고, 힘든 일을 즐기는 필자 개인적인 성격 탓도 있어서 컨설턴트에게 맡기는 대신 직접 해보기로 했다. 이를 위해 한동안 사용하지 않았던 서브넷팅 지식을 머리속에서 다시 끄집어내고 호스트 계산법도 다시 익혀야 했다. 필자가 아는 서브넷팅의 기본적인 사항을 알아보고 마지막에 몇 가지 고려할 점도 살펴보자. 
 

서브넷을 만드는 방법 

적절한 서브넷을 위해서는 기본적으로 바이너리(base-2) 수와 클래스풀 네트워크(classful network)를 이해해야 한다. 클래스풀 네트워크의 개념은 기본적으로 IPv4 주소는 4개의 옥텟(8개의 바이너리 비트 섹션)으로 분할되고, 옥텟은 다시 수용할 호스트의 수에 따라 클래스로 분류된다는 것이다. 클래스풀 네트워크 개념은 클래스 없는 도메인 간 라우팅을 사용하는 현재의 공용 인터넷에서 더 이상 사용되지 않지만, 서브넷 환경에서는 IP 주소를 네트워크 부분과 호스트 부분으로 나누어 네트워크를 분할하는 개념이 여전히 사용된다. 대다수의 내부 네트워크에는 클래스 A, 클래스 B, 클래스 C, 이렇게 3개의 주 프라이빗 IP 범위가 사용된다. 다음 차트에서 볼 수 있듯이 각 클래스는 특정 수의 비트를 주소의 네트워크 부분으로 사용하고 나머지를 호스트 부분으로 사용한다. 
 
ⓒ  Network World / IDG

네트워크 비트와 호스트 비트를 나누어 보면 특정 네트워크에서 IP 주소의 변경되지 않는 부분을 알 수 있다. 10.0.0.0의 클래스 A 범위를 예로 들면 뒤의 3개 IP 주소 옥텟은 DHCP를 통해 부여되거나 할당되면서 순차적으로 바뀌지만, 첫 번째 옥텟은 바뀌지 않는다. 따라서 이 범위의 마지막 주소는 10.255.255.255가 된다. 
 

서브넷 마스크의 중요성 

서브넷팅에서는 서브넷 마스크를 사용해 주소의 호스트 부분에서 비트를 훔쳐 네트워크 부분에 추가하는 방법으로 수용할 수 있는 호스트의 수를 조정한다. 서브넷 마스크는 IP 주소와 마찬가지로 32비트 수지만 용도는 호스트 주소 지정이 아니고 네트워크/서브넷 비트 및 호스트 비트에 해당하는 네트워크 주소 부분을 송수신하는 데 있다. 서브넷 마스크는 모든 호스트 비트를 0으로 설정하고 모든 네트워크/서브넷 비트를 1로 설정하는 방법으로 구축한다. 

IPv4 주소에는 총 32개의 비트가 있으므로(4개인 각 옥텟에 8개씩) 특정 마스크에서 수용되는 호스트 주소의 수를 찾으려면 32에서 네트워크 비트와 서브넷 비트의 수를 뺀 다음 2를 그 차이만큼 제곱한다. 예를 들어 /22 네트워크의 경우 호스트 주소의 수는 32-22=10, 210 = 1024개가 된다. 다음 차트는 다양한 마스크에 따른 호스트 주소의 수를 보여준다. 
 
ⓒ  Network World / IDG

필요한 호스트 주소의 수를 결정했다면, 각 옥텟에 대해 별도로 네트워크 부분과 서브넷 부분의 바이너리 비트를 더한다. 이렇게 해서 서브넷 마스크가 완료된다. 
 

적절한 서브넷의 수와 크기 

네트워크를 서브넷팅할 때는 네트워크에 x개의 디바이스가 있으므로 그 수를 감당하기에 충분한 정도의 주소가 있는 IP 범위와 서브넷을 선택하면 된다고 생각하기 쉽다. 그러나 이 경우 몇 가지 중요한 고려 사항을 놓치게 된다. 예를 들어 16,777,216개의 주소가 있는 초대형 /8 서브넷에서는 네트워크 혼잡 문제가 발생한다. 각 서브넷에는 자체 브로드캐스트 도메인이 있으므로 스위치가 ARP 브로드캐스트를 전송하거나 어느 시스템이 다른 무언가를 브로드캐스팅할 때마다 브로드캐스트 도메인 내의 모든 디바이스가 그 내용을 수신한다. 결과적으로 브로드캐스트 패킷으로 인해 네트워크가 고갈되어 브로드캐스트가 아닌 실제 트래픽이 움직이지 못하게 된다. 

브로드캐스트 트래픽은 주소 수가 256~1,024개 정도라면 관리가 가능하지만, 그 보다 많은 경우 디바이스의 노이즈 수준에 따라 심각한 문제에 직면할 수 있다. 일반적으로 베스트 프랙티스는 네트워크의 주 디바이스 범주 중 일부를 VLAN으로 자체 서브넷 또는 브로드캐스트 도메인으로 분리하는 것이다. 이렇게 하고 서브넷 간에 트래픽을 라우팅하는 일종의 3계층 디바이스를 두면 필요한 만큼 많은 주소를 확보하면서 네트워크 노이즈는 관리 가능한 수준으로 유지할 수 있다. 

새로운 서브넷 체계를 구현하는 과정은 각자의 환경에 따라 크게 다르지만, 가장 좋은 방법은 점진적으로 진행하는 것이다. 쉬운 부분부터 시작해 개념을 테스트하고 경로가 올바르게 작동하도록 하고 지금 /24 환경의 혼잡함을 덜어낼 수 있는 약간의 여유 공간을 만든다. IPv6 주소를 다루는 경우 몇 가지 큰 차이점이 있지만, 많은 부분에서 동일한 원칙이 적용된다. IPv6 주소는 2자로 구성되는 2진법이 아닌 16자로 구성된 16진법을 사용하며, 모든 내부 주소가 동시에 외부 주소이기도 하다. IPv6는 다음 기회에 좀 더 자세한 살펴보겠다. editor@itworld.co.kr


X