인터넷에 연결된 모든 기기는 IP 주소를 통해 다른 기기와 통신하고, 위치를 파악하며, 상호작용합니다. IP 주소는 네트워크상의 각 기기에 할당된 고유한 숫자 조합으로, 마치 도로에서 특정 집의 위치를 나타내고 다른 집들과 구별해 주는 주소와 같습니다.
일반적인 IPv4 가정용 네트워크에는 IP 주소가 많지 않지만 (예: 192.168.0.0/24는 256개의 주소를 제공), IPv6 네트워크에서는 최대 18경 개의 주소를 사용할 수 있습니다.
물론 서브넷팅과 서브넷 마스크 덕분에 그 모든 주소가 가정의 기기에 사용되는 것은 아닙니다. 그렇다면 이런 질문이 남습니다. 서브넷이란 무엇인가? 서브넷 마스크란 무엇인가? IPv4와 IPv6 서브넷팅은 어떻게 작동하는가? 서브넷 치트 시트를 활용해 네트워크를 어떻게 구성하는가? 이 모든 질문에 대한 답을 이 글에서 다루겠습니다.
서브넷 마스크, IPv6 CIDR 프리픽스 길이, 그리고 IPv4 및 IPv6 네트워크 설정 방법을 정리한 치트 시트를 만들었습니다. 글 끝에서 꼭 확인해 보세요. IP 주소와 네트워킹에 관한 유용한 정보도 함께 담겨 있습니다.
서브넷 마스크란 무엇인가?
IPv4 주소는 32비트로 구성되며, 이는 8비트 단위인 '옥텟(octet)'으로 나뉩니다. 각 옥텟은 네트워크 ID 또는 호스트 ID에 할당됩니다. IPv4와 IPv6에 대해 더 알고 싶다면, 아래 블로그 포스트를 읽어보세요: "IPv4 vs. IPv6: IPv6가 IPv4를 대체하는 방법.”
네트워크 ID와 호스트 ID
네트워크 ID(네트워크 주소)는 IP 주소가 속한 네트워크를 정의합니다. 인터넷이나 로컬 네트워크를 통해 데이터 패킷이 전송될 때, 라우터는 네트워크 ID를 기반으로 해당 패킷의 목적지가 같은 네트워크 내에 있는지, 아니면 다른 네트워크로 전달해야 하는지를 판단합니다. 즉, 네트워크 ID는 라우터에게 패킷을 어느 네트워크로 보내야 할지 알려줍니다.
또한 네트워크 ID는 대규모 조직이나 환경에서 서로 다른 서브넷을 구분하는 데도 사용됩니다. 각 서브넷에 고유한 네트워크 ID가 있으면, 기기들은 로컬 서브넷 안에서 통신하거나 라우터를 통해 다른 서브넷에 접근할 수 있습니다. 당연히 같은 네트워크에 속한 모든 기기는 동일한 네트워크 ID를 공유합니다.
다음으로, IP 주소의 호스트 ID 부분이 있습니다. 이 부분은 해당 네트워크 내에서 특정 기기(호스트)를 고유하게 식별하는 역할을 합니다. 호스트 ID는 네트워크 내 기기들을 구별하여, 트래픽이 올바른 기기로 정확하게 전달될 수 있도록 합니다.
서브넷 마스크
이제 서브넷 마스크에 대해 본격적으로 이야기해 봅시다. 서브넷 마스크는 32비트 숫자(IP 주소와 유사)로, 앞서 언급한 옥텟 중 어느 부분이 네트워크 ID에 해당하고 어느 부분이 호스트 ID에 해당하는지를 정의합니다.
IPv4 서브넷 마스크
예를 들어, IPv4 주소가 192.168.1.10이고 서브넷 마스크가 255.255.255.0이라고 가정해 봅시다. 서브넷 마스크에서 반복되는 숫자를 보면, IP 주소의 처음 세 옥텟, 즉 24비트인 192.168.1.0이 네트워크 부분(네트워크 ID)을 나타낸다는 것을 알 수 있습니다.
앞서 설명했듯이, 같은 네트워크에 속한 모든 기기는 동일한 네트워크 ID를 공유하므로 이 값은 네트워크 내 모든 기기에서 동일합니다. 호스트 ID 부분의 경우, 마지막 옥텟이 기기에 할당 가능한 IP 주소의 수를 나타냅니다.
그렇다면 기기에 할당 가능한 IP 주소가 몇 개인지 어떻게 알 수 있을까요? 서브넷 마스크가 호스트 ID에 8비트를 할당하고 있다면, 각 비트 자리에 0 또는 1이 올 수 있는 경우의 수가 8개 있다는 의미입니다.
이는 이 IPv4 주소에서 기기에 할당할 수 있는 IP 주소가 2^8, 즉 256개임을 의미합니다. 단, 이 중 두 개는 항상 네트워크 주소(192.168.1.0)와 브로드캐스트 주소(192.168.1.255)로 예약되어 있습니다.
IPv6 서브넷 마스크
IPv4의 서브넷 마스크에 대해 살펴봤으니, 이번에는 IPv6의 서브넷 마스크를 살펴봅시다. IPv6는 IPv4처럼 점으로 구분된 십진수 표기(255.255.255.0)로 네트워크 ID와 호스트 ID를 구분하는 대신, 프리픽스 길이(prefix length) 방식을 사용합니다. 이는 완전히 새로운 IP 할당 및 표기 체계의 일부입니다.
이 시스템을 클래스리스 도메인 간 라우팅(CIDR)이라고 합니다. 기존의 클래스 기반 IP 할당 방식 대신 가변 길이 서브넷 마스킹(VLSM)을 사용합니다. CIDR의 개념, 동작 방식, 그리고 기존 방식과의 차이점은 여기.
CIDR 표기법에서 네트워크 부분과 호스트 ID 부분을 구분하는 방법은 다음과 같습니다. 일반적으로 IPv6 주소 끝에 /를 붙이고, 그 뒤에 숫자를 적어 네트워크 부분에 할당된 비트 수를 나타냅니다. 이 표기를 프리픽스 길이(prefix length)라고 합니다.
IPv4 주소에서 각 숫자는 8비트(옥텟)를 나타내는 반면, IPv6에서는 두 콜론 사이의 숫자·문자 조합 하나가 16비트를 나타냅니다. 예를 들면 다음과 같습니다.
2001 (십육진법) → 0010000000000001 (이진법)
IPv6 주소의 전체 이진 표현 2001:0db8:85a3:0000:0000:8a2e:0370:7334 입니다:
0010000000000001 0000110110111000 1000010110100011 0000000000000000
0000000000000000 1000101000101110 0000001101110000 0111001100110100
IPv6 주소를 축약할 때는 제로 블록(16비트 전체가 0인 블록)을 모두 표기하는 대신 이중 콜론("::")으로 대체합니다. 생략된 16비트 제로 블록의 수는 IPv6 주소의 전체 블록 수인 8에서 표시된 비제로 블록 수를 빼면 구할 수 있습니다. 예를 들어:
2001:db8:1234::/64 → 2001:db8:1234 → 전체 8블록 – 비제로 블록 3개 = 제로 블록 5개
따라서 전체 주소는 다음과 같습니다. 2001:0db8:1234:0000:0000:0000:0000:0000/64.
기본 개념을 짚었으니, IPv6 서브넷 마스크 예시를 살펴보겠습니다.
IPv6 주소가 다음과 같은 경우: 2001:db8:1234::/64
앞의 64비트는 네트워크 부분에 해당합니다. 2001:db8:1234
나머지 64비트(128-64=64)는 호스트 부분에 해당합니다. 0000.0000.0000.0000.
IPv4 및 IPv6 서브넷 치트 시트
서브넷 마스크와 서브네팅은 비슷한 용어처럼 들리지만, 실제로 하는 역할은 전혀 다릅니다. 서브네팅은 네트워크에 포함된 대량의 IPv4 또는 IPv6 주소를 부서나 장치별로 분리해 관리하기 쉽게 만들고, 보안을 강화하는 작업입니다.
예를 들어, 기업 환경에서는 재무 부서에 별도의 서브넷을 할당해 다른 부서의 무단 접근을 차단할 수 있습니다. 가정 환경에서도 네트워크를 개인 기기용과 스마트 홈 기기·룸바 같은 IoT(사물 인터넷)용으로 나누면 보안과 트래픽 관리에 도움이 됩니다. IoT 기기는 클라우드 서비스와 끊임없이 통신하며 보안에 취약한 경우가 많기 때문입니다.
1993년 이전에는 서브네팅이 클래스 방식으로만 가능했습니다. 네트워크에 할당되는 IP 수가 254개, 65,534개, 또는 1,600만 개 이상으로 고정되어 있었고, 지금처럼 더 작은 네트워크로 쪼갤 수 없었습니다.
하지만 CIDR의 등장으로 이제는 어떤 규모의 네트워크든 원하는 수만큼 더 작은 네트워크로 나눌 수 있습니다. 그러면 IPv4와 IPv6에서 서브네팅을 실제로 어떻게 하는지, 그리고 서브넷 치트 시트를 활용해 네트워크를 구성하는 방법을 알아보겠습니다.
IPv4 서브넷 치트 시트
예를 들어, 호스트 부분에 256개의 IP 주소를 가진 192.168.1.0/24 네트워크가 있다고 가정합니다. 서브넷 마스크(255.255.255.0)로도 확인할 수 있지만, IP 끝의 /24를 통해 네트워크 부분에 24비트가 할당되어 있고, 나머지 8비트, 즉 256개(2^8=256)의 주소가 호스트 부분에 사용된다는 것을 알 수 있습니다.
이 네트워크를 128개짜리 서브넷 두 개로 나누려면, 네트워크 부분에서 비트를 하나 빌려옵니다. 그 결과 설정이 다음과 같이 바뀝니다.
- 새 서브넷 마스크: /25 또는 255.255.255.128
- 서브넷당 호스트 수: 128
- 서브넷 1: 192.168.1.0/25 (192.168.1.1~192.168.1.126, 사용 가능한 주소 126개)
- 서브넷 2: 192.168.1.128/25 (192.168.1.129~192.168.1.254, 사용 가능한 주소 126개)
CIDR을 이용하면 사용 가능한 IP 주소가 최소 두 개 이상인 한(브로드캐스트 주소와 네트워크 주소로 각각 1개씩 제외) 네트워크를 원하는 만큼 분할할 수 있습니다. 예를 들어 사용 가능한 IP가 254개인 /24 네트워크는 최대 64개의 서브넷으로 나눌 수 있으며, 각 서브넷에 사용 가능한 IP가 2개씩 할당됩니다. 다만 이렇게 호스트 수가 적은 구성은 보통 포인트-투-포인트 연결에만 사용됩니다.
IPv6 서브넷 치트 시트
IPv6 서브네팅은 특히 중요합니다. IPv6 주소 공간은 2^128, 즉 340언데실리언(34 뒤에 0이 37개)에 달하는 고유 IP 주소를 제공하기 때문입니다. 일반적인 IPv6 네트워크는 /64 CIDR로 구성되어 64비트를 네트워크 부분에, 나머지 64비트를 호스트 부분에 할당합니다. 이를 통해 2^64, 즉 18퀸틸리언(18 뒤에 0이 18개)개의 고유 주소를 사용할 수 있습니다.
IPv6 주소는 이처럼 방대한 공간을 제공하기 때문에, 일반적인 /64 CIDR 구성에서도 서브네팅을 적용하면 큰 이점이 있습니다. 네트워크 관리자는 장치를 위치, 부서, 기능별로 그룹화해 관리하고, 트래픽을 모니터링하며, 보안 정책을 적용하고, 라우터 설정도 훨씬 수월하게 처리할 수 있습니다.
/64 서브넷이 IPv6 IP 서브네팅에서 가장 널리 쓰이는 이유 중 하나는 SLAAC, 즉 SLAAC(Stateless Address Autoconfiguration) 같은 기능 때문입니다. SLAAC는 DHCP 서버 없이도 장치가 연결된 네트워크를 기반으로 IP 주소를 자동으로 생성할 수 있게 해줍니다. 물론 원하는 수만큼 IPv6 네트워크를 서브넷으로 나누는 것도 얼마든지 가능합니다.
예를 들어, 2001:db8:abcd:1000::/64 같은 일반적인 /64 IPv6 네트워크가 있다고 가정합니다. 네트워크 부분에서 4비트를 빌려오면 네트워크를 16개의 서브넷으로 나눌 수 있으며, 그 결과 설정이 다음과 같이 바뀝니다.
- 원본 서브넷: 2001:db8:abcd:1000::/64
- 새 서브넷: /68
- 서브넷 개수: 2^(네트워크에서 빌린 비트 수) = 2^4 = 16개 서브넷
- 첫 번째 서브넷: 2001:db8:abcd:1000:0000::/68
- 두 번째 서브넷: 2001:db8:abcd:1000:1000::/68
- 세 번째 서브넷: 2001:db8:abcd:1000:2000::/68
- … 까지 2001:db8:abcd:1000:f000::/68
- 2001:db8:abcd:1000: 처음 64비트는 글로벌 라우팅 프리픽스를 정의합니다.
- 0000 – f000: 다음 4비트는 서브넷 분할에 사용됩니다.
- 호스트 부분: 나머지 60비트는 호스트 주소에 사용됩니다. (나머지 "::"는 16비트 블록 세 개를 나타냅니다)
- 각 /68 서브넷은 2^60 = 약 1.15퀸틸리언개의 호스트 주소를 가질 수 있습니다.
마치며
서브네팅은 IPv4든 IPv6든 모든 네트워크에서 반드시 알아야 할 개념입니다. 이 글과 서브네팅 치트 시트 가 네트워크를 구성하고 서브넷을 나누는 데 실질적인 도움이 되길 바랍니다.
자주 묻는 질문
서브넷 마스크란 무엇인가요?
IPv4에서 서브넷 마스크는 32비트 숫자(IP 주소와 형식이 동일)로, 어떤 옥텟이 네트워크 ID에 해당하고 어떤 옥텟이 호스트 ID에 해당하는지를 정의합니다. IPv6에서는 IPv4처럼 서브넷 마스크(예: 255.255.255.0)를 사용하는 대신, 프리픽스 길이 표기법으로 주소에서 네트워크 부분에 사용되는 비트 수를 나타냅니다.
IPv4와 IPv6 서브넷팅은 어떻게 이루어지나요?
CIDR(Classless Inter-Domain Routing)을 활용하면 네트워크 부분에서 비트를 빌려 IPv4 또는 IPv6 네트워크를 원하는 수만큼 서브넷으로 분할할 수 있습니다. 단, IPv4의 경우 브로드캐스트 주소와 네트워크 주소로 예약된 두 IP를 제외하고 최소 두 개의 사용 가능한 IP 주소가 있어야 합니다. 예를 들어 256개의 IP 주소를 가진 네트워크(192.168.1.0/24)를 128개짜리 두 서브넷으로 나누려면 네트워크 부분에서 비트 하나를 빌리면 됩니다. 그 결과 192.168.1.0/25와 192.168.1.128/25 두 서브넷이 만들어집니다.
IPv4와 IPv6용 서브넷팅 치트 시트가 있나요?
네트워크를 서브넷으로 나눌 때 IP 주소 수를 계산하는 것은 꽤 까다롭습니다. 특히 IPv6는 더욱 그렇습니다. 그래서 서브네팅을 더 쉽게 할 수 있도록 서브넷 치트 시트를 정리했습니다. IPv6 치트 시트와 네트워크 치트 시트를 겸하고 있어 꽤 폭넓게 활용할 수 있습니다.