Okojyo Soft서브넷 계산기

IPv4·IPv6 서브넷 계산기

CIDR, 서브넷 마스크, 와일드카드 마스크, 주소 범위 중 어느 형식으로 입력해도 입력하는 즉시 결과가 나옵니다. 모든 값은 클릭 한 번으로 복사할 수 있습니다.

  • 모든 계산은 브라우저 안에서
  • 광고·쿠키·회원 가입 없음
  • 특수 용도 주소는 IANA 레지스트리 기준
  • IPv4·IPv6
192.168.1.10 255.255.255.0이나 10.0.0.5 - 10.0.0.90도 입력할 수 있습니다
예시
사용 가능 호스트 수
전체 주소 수
사용 가능 범위
네트워크 비트호스트 비트경계비트를 클릭하면 그 위치로 경계를 옮깁니다.

주소

종류

표기

이름 확인

분할

블록을 나누고 눈으로 확인합니다.

위의 결과를 기점으로 블록을 절반으로 나누거나 이웃한 블록을 다시 합칠 수 있습니다. 주소 공간이 어떻게 배분되는지 한눈에 보입니다. 웹 버전은 64블록까지.

기점 블록
#블록사용 가능 범위호스트 수이름조작

여기서 붙인 이름은 탭을 닫으면 사라집니다. SubnetDeck에서는 거점별 설계(세그먼트 이름, 크기, VLSM 할당)를 고객이나 프로젝트별 폴더에 남길 수 있습니다.

SubnetDeck 보기

표

서브넷 마스크 표

IPv4의 모든 프리픽스에 대한 마스크, 와일드카드 마스크, 호스트 수와 실무에서 자주 보는 IPv6 크기를 정리했습니다. 행을 클릭하면 그 값으로 계산합니다.

IPv4의 /8~/32. 사용 가능 호스트 수는 네트워크 주소와 브로드캐스트 주소를 뺀 수입니다(/31·/32 제외).
프리픽스서브넷 마스크와일드카드주소 수사용 가능 호스트 수/24와의 관계대표적인 용도
/00.0.0.0255.255.255.2554,294,967,2964,294,967,294/24 × 16,777,216
/1128.0.0.0127.255.255.2552,147,483,6482,147,483,646/24 × 8,388,608
/2192.0.0.063.255.255.2551,073,741,8241,073,741,822/24 × 4,194,304
/3224.0.0.031.255.255.255536,870,912536,870,910/24 × 2,097,152
/4240.0.0.015.255.255.255268,435,456268,435,454/24 × 1,048,576
/5248.0.0.07.255.255.255134,217,728134,217,726/24 × 524,288
/6252.0.0.03.255.255.25567,108,86467,108,862/24 × 262,144
/7254.0.0.01.255.255.25533,554,43233,554,430/24 × 131,072
/8255.0.0.00.255.255.25516,777,21616,777,214/24 × 65,53610.0.0.0/8 사설 공간
/9255.128.0.00.127.255.2558,388,6088,388,606/24 × 32,768
/10255.192.0.00.63.255.2554,194,3044,194,302/24 × 16,384
/11255.224.0.00.31.255.2552,097,1522,097,150/24 × 8,192
/12255.240.0.00.15.255.2551,048,5761,048,574/24 × 4,096172.16.0.0/12 사설 공간
/13255.248.0.00.7.255.255524,288524,286/24 × 2,048
/14255.252.0.00.3.255.255262,144262,142/24 × 1,024
/15255.254.0.00.1.255.255131,072131,070/24 × 512
/16255.255.0.00.0.255.25565,53665,534/24 × 256캠퍼스·대규모 거점, 192.168.0.0/16
/17255.255.128.00.0.127.25532,76832,766/24 × 128
/18255.255.192.00.0.63.25516,38416,382/24 × 64
/19255.255.224.00.0.31.2558,1928,190/24 × 32대규모 거점·클라우드 네트워크
/20255.255.240.00.0.15.2554,0964,094/24 × 16대규모 거점·클라우드 네트워크
/21255.255.248.00.0.7.2552,0482,046/24 × 8
/22255.255.252.00.0.3.2551,0241,022/24 × 4중규모 사무실(유선+무선)
/23255.255.254.00.0.1.255512510/24 × 2단말이 많은 무선
/24255.255.255.00.0.0.255256254/24에 1개표준 LAN 세그먼트
/25255.255.255.1280.0.0.127128126/24에 2개/24의 절반
/26255.255.255.1920.0.0.636462/24에 4개서버·장비 관리(62대까지)
/27255.255.255.2240.0.0.313230/24에 8개프린터 등 작은 세그먼트
/28255.255.255.2400.0.0.151614/24에 16개작은 DMZ
/29255.255.255.2480.0.0.786/24에 32개라우터·방화벽 사이
/30255.255.255.2520.0.0.342/24에 64개점대점 링크(기존 방식)
/31255.255.255.2540.0.0.122/24에 128개점대점 링크(RFC 3021)
/32255.255.255.2550.0.0.011/24에 256개단일 호스트·루프백

IPv4의 /8~/32. 사용 가능 호스트 수는 네트워크 주소와 브로드캐스트 주소를 뺀 수입니다(/31·/32 제외).

해설

왜 그 숫자가 나오는가.

SubnetDeck 해설 탭 11편 중 10편을 전문으로 싣습니다. 외워야 할 규칙이 아니라 원리를 설명합니다.

01

마스크와 프리픽스 길이같은 경계의 두 가지 표기

서브넷 마스크와 프리픽스 길이는 같은 경계를 두 가지 방식으로 적은 것이다. 255.255.255.0과 /24는 같은 것을 가리킨다. 이 경계가 무엇을 나누는지, 왜 정수로만 나타낼 수 있는지는 32비트의 배열로 돌아가 보면 알 수 있다.

서브넷 마스크와 프리픽스 길이는 같은 경계를 두 가지 방식으로 적은 것이다. 255.255.255.0과 /24는 같은 것을 가리킨다. 이 경계가 무엇을 나누는지, 왜 정수로만 나타낼 수 있는지는 32비트의 배열로 돌아가 보면 알 수 있다.

IPv4 주소는 32비트의 수이다. 이 32비트 가운데 어디까지가 네트워크를 나타내고 어디부터가 그 안의 기기를 나타내는지는 주소 자체에 적혀 있지 않다. 경계의 위치를 따로 알려 주는 것이 서브넷 마스크이다.

서브넷 마스크는 주소와 같은 32비트 배열로, 네트워크 쪽 비트를 1, 호스트 쪽 비트를 0으로 한다. 255.255.255.0을 2진수로 쓰면 1이 24개 이어진 뒤 0이 8개 이어진다. 이 '1이 24개'를 하나의 수로 나타낸 것이 프리픽스 길이이며, /24로 쓴다. 둘은 같은 경계를 다른 표기법으로 쓴 것이며, 가리키는 위치는 같다.

마스크의 1은 왼쪽부터 연속되어야 한다. RFC 1812(1995년 6월)가 이를 요건으로 정하고 있으며, 사이에 0이 끼어 있는 배열은 오늘날의 라우팅에서 다룰 수 없다. 이유는 비교 방식에 있다. 어떤 목적지가 그 네트워크에 속하는지는 상위 n비트가 일치하는지를 한 번 비교하여 판정한다. 1이 연속되어 있으면 경계를 n이라는 하나의 수로 나타낼 수 있고, 비교는 프리픽스 일치로 끝난다. 띄엄띄엄한 배열에서는 어느 비트를 비교할지를 따로 전달해야 하고, 여러 경로가 일치할 때 어느 것을 택할지 정할 수 없으며, 여러 대역을 하나로 묶을 수도 없다.

따라서 프리픽스 길이는 0부터 32까지의 정수이며, 비트 중간에 경계가 위치할 수는 없다. 호스트 쪽에 남는 비트 수는 32에서 프리픽스 길이를 뺀 값으로 정해진다.

요점

  • 255.255.255.0과 /24는 같은 경계를 다르게 표기한 것이다. 어느 형식으로 입력해도 얻어지는 네트워크는 같다.
  • 와일드카드 마스크는 0과 1의 역할이 서브넷 마스크와 반대인 배열이다. 0인 비트는 일치해야 하는 위치를, 1인 비트는 값을 따지지 않는 위치를 가리킨다. 서브넷 마스크와는 다른 것이다.
  • IPv6에는 점으로 구분하는 마스크 표기가 없으며, 경계는 프리픽스 길이로만 나타낸다.
  • 프리픽스 길이만으로는 네트워크를 특정할 수 없다. /24라는 표기가 가리키는 것은 경계의 위치뿐이며, 어느 네트워크인지는 주소와 함께 있어야 정해진다.
02

네트워크 주소와 브로드캐스트 주소두 개가 빠지는 이유

모든 서브넷에는 기기에 할당할 수 없는 주소가 두 개 있다. 네트워크 주소와 브로드캐스트 주소이다. 이 두 개가 제외되므로 사용 가능 호스트 수는 전체보다 두 개 적다. 왜 하필 이 두 개인지는 호스트 부분의 비트 배열을 보면 알 수 있다.

모든 서브넷에는 기기에 할당할 수 없는 주소가 두 개 있다. 네트워크 주소와 브로드캐스트 주소이다. 이 두 개가 제외되므로 사용 가능 호스트 수는 전체보다 두 개 적다. 왜 하필 이 두 개인지는 호스트 부분의 비트 배열을 보면 알 수 있다.

서브넷 안의 두 주소는 기기에 할당되지 않는다. 호스트 부분의 비트가 모두 0인 것과 모두 1인 것이다.

호스트 부분이 모두 0인 주소는 네트워크 주소라고 불리며, 그 서브넷 자체를 가리키는 식별자로 쓰인다. 라우팅 테이블에 적히는 192.168.10.0/24 같은 표기가 이 형태이다. 만약 이 주소를 기기 한 대에 할당하면, 네트워크 전체를 가리키는 배열과 그 안의 한 대를 가리키는 배열이 같아진다. 둘을 구별할 방법이 없어지므로 할당 대상에서 제외되어 있다.

호스트 부분이 모두 1인 주소는 브로드캐스트 주소라고 불리며, 그 서브넷의 모든 기기를 목적지로 지정하는 데 쓰인다. RFC 919와 RFC 922(모두 1984년 10월)가 이 형식을 정하고 있다. 여러 상대에게 동시에 전달하기 위한 배열이므로 특정한 한 대에 할당할 수는 없다.

이 두 개가 빠진 결과, 사용 가능 호스트 수는 전체 주소 수에서 2를 뺀 값이 된다. /24라면 256 − 2로 254, /26이라면 64 − 2로 62이다.

덧붙여 '가장 작은 주소와 가장 큰 주소'라는 기억법은 결과를 바꿔 말한 것이다. 정의는 호스트 부분의 비트 배열에 있으며, 수치상의 크고 작음은 거기서 도출된다.

요점

  • 네트워크 주소와 브로드캐스트 주소는 호스트 부분의 비트가 모두 0인지 모두 1인지로 정해진다. 수치상의 최소·최대는 그 결과로 나타나는 것이다.
  • 같은 주소라도 프리픽스 길이가 바뀌면 역할이 바뀐다. 192.168.10.64는 /26에서는 네트워크 주소이지만, /24에서는 기기에 할당할 수 있는 주소이다.
  • IPv6에는 브로드캐스트가 없다. 모든 노드로 보내는 통신은 멀티캐스트로 이루어지므로 마지막 주소를 뺄 필요가 없다.
  • /31과 /32에서는 이 뺄셈이 그대로 들어맞지 않는다. 그대로 빼면 /31은 0, /32는 음수가 되어 실제 처리와 맞지 않는다.
03

/31과 /32뺄셈이 들어맞지 않는 이유

서브넷의 사용 가능 호스트 수는 전체 주소에서 네트워크 주소와 브로드캐스트 주소 두 개를 빼서 구한다. 이 계산을 그대로 /31에 적용하면 0이 되고, /32에서는 음수가 된다. 그러나 실제로 /31은 2, /32는 1로 취급된다. /31과 /32에는 뺄셈의 전제가 들어맞지 않기 때문이다.

서브넷의 사용 가능 호스트 수는 전체 주소에서 네트워크 주소와 브로드캐스트 주소 두 개를 빼서 구한다. 이 계산을 그대로 /31에 적용하면 0이 되고, /32에서는 음수가 된다. 그러나 실제로 /31은 2, /32는 1로 취급된다. /31과 /32에는 뺄셈의 전제가 들어맞지 않기 때문이다.

호스트 수를 '전체 주소 − 2'로 구할 수 있는 것은, 호스트 부분이 모두 0인 주소가 네트워크 주소를 가리키고 모두 1인 주소가 브로드캐스트 주소로 예약되어 있기 때문이다. 이 두 주소는 특정 기기에 할당되지 않는다.

/30에서는 주소 4개 중 2개가 이 역할에 쓰이고, 남은 2개가 호스트에 할당된다. 점대점 링크(기기 두 대만 서로 마주 보는 구간)를 /30으로 나타내면, 그 구간이 차지하는 주소는 4개이고 그중 기기에 할당되는 것은 2개이다.

RFC 3021(2000년 12월)은 이 구간을 /31로 나타내는 경우에 한해 뺄셈을 적용하지 않도록 정했다. 점대점 링크에서는 한쪽이 보낸 패킷을 언제나 다른 쪽이 받는다. 목적지를 '이 서브넷의 모두'로 지정할 필요가 없으므로 브로드캐스트 주소를 둘 이유가 없다. 호스트 부분이 모두 0인 주소도 예전 형식의 브로드캐스트 목적지로 쓰이던 것이며, 지금은 그 역할이 없다. RFC 3021은 이 두 주소를 모두 호스트 주소로 해석하도록 정하고 있다. 그 결과 /31의 주소 2개는 모두 호스트에 할당되고, 사용 가능 호스트 수는 2가 된다. 이 규정의 목적은 주소 공간의 소비를 줄이는 데 있다.

다만 /31을 해석할 수 있는지는 구현에 따라 다르다. RFC에 정해져 있다는 것과 모든 기기가 지원한다는 것은 별개이다.

/32는 이유가 다르다. 폭이 주소 1개뿐이어서 네트워크 주소와 브로드캐스트 주소로 나눌 대상 자체가 없다. 이 1개는 단일 주소만 가리키는 경로(호스트 경로)나, 물리적인 포트가 없는 루프백 인터페이스를 나타내는 데 쓰인다. 사용 가능 호스트 수는 1이다.

요점

  • /31의 사용 가능 호스트 수가 2인 것은 점대점 링크에서 브로드캐스트 주소가 필요한 경우가 없기 때문이다. 주소가 2개 있으니 2라고 세는 것이 아니다.
  • /32의 1은 뺄셈의 결과가 아니다. 나눌 대상이 없으므로 규칙이 적용되지 않은 채 1개가 남는다.
  • 서브넷 계산 도구 중에는 /31과 /32를 모두 0으로 표시하는 것이 있다. 전체 주소에서 2를 빼는 규칙을 모든 길이에 일률적으로 적용하기 때문이다.
  • RFC 3021이 대상으로 하는 것은 점대점 링크이다. 기기가 세 대 이상 연결되는 구간은 대상에 포함되지 않는다.
04

사설 주소와 예약 대역용도가 정해진 대역

32비트 주소 공간 가운데 몇몇 대역은 용도가 미리 정해져 있다. 조직 내부에서 자유롭게 쓸 수 있는 사설 주소도 그중 하나이며, 인터넷에서는 경로가 광고되지 않는다. 대역을 정한 문서는 여러 개이고, 대역끼리 겹겹이 포함되는 경우도 있다.

32비트 주소 공간 가운데 몇몇 대역은 용도가 미리 정해져 있다. 조직 내부에서 자유롭게 쓸 수 있는 사설 주소도 그중 하나이며, 인터넷에서는 경로가 광고되지 않는다. 대역을 정한 문서는 여러 개이고, 대역끼리 겹겹이 포함되는 경우도 있다.

IPv4 주소 공간에는 통상의 할당에서 제외된 대역이 있다. 용도가 미리 정해져 있기 때문이며, 대표적인 것이 사설 주소이다.

RFC 1918(1996년 2월)은 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16의 세 대역을 조직 내부용으로 정했다. 이 대역은 인터넷에서 경로가 광고되지 않는다. 따라서 서로 다른 조직이 같은 주소를 동시에 쓰더라도 서로 영향을 주지 않는다. 뒤집어 말하면, 서로 다른 조직의 네트워크를 직접 연결하면 같은 주소가 양쪽에 나타날 수 있다.

용도가 정해진 대역은 이 밖에도 있다. 127.0.0.0/8은 자기 자신을 가리키는 루프백, 169.254.0.0/16은 주소 자동 설정에 쓰이는 링크 로컬, 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24는 문서의 예시 전용, 100.64.0.0/10은 통신사 측에서 주소를 공유하는 용도에 배정되어 있다. 이 대역들을 정리하는 틀은 RFC 6890(2013년 4월)이 정하고 있다.

대역은 겹겹이 포함될 수 있다. 240.0.0.0/4는 향후 사용을 위해 예약된 넓은 대역이지만, 그 안에 있는 255.255.255.255/32는 제한 브로드캐스트로 따로 정해져 있다. 어떤 주소가 어느 대역에 속하는지 판정할 때는 일치한 대역 중 프리픽스 길이가 가장 긴 것을 택한다. 짧은 쪽을 먼저 찾은 시점에 확정하면 결과가 달라진다.

요점

  • RFC 1918의 세 대역은 크기가 다르다. 10.0.0.0/8은 16,777,216개, 172.16.0.0/12는 1,048,576개, 192.168.0.0/16은 65,536개의 주소를 포함한다.
  • 172.16.0.0/12가 가리키는 대역은 172.16.0.0부터 172.31.255.255까지이다. 172.32.0.0은 이 대역에 포함되지 않는다.
  • 169.254.0.0/16의 주소는 자동 취득에 실패한 기기가 스스로 붙이는 경우가 있다. 설정으로 주어진 주소라고 단정할 수 없다.
  • 용도가 정해진 대역은 추가될 수 있다. 100.64.0.0/10은 2012년 RFC 6598로 추가된 대역이다.
05

도메인 외부 도달과 라우터 전달특수 용도 주소의 두 가지 속성

용도가 정해진 주소 대역에는 이름과 근거 문서 외에도 다루는 방식을 나타내는 속성이 등록되어 있다. 인터넷까지 도달해도 되는가, 라우터가 전달해도 되는가. 이 두 속성은 대역마다 조합이 다르며, 이름으로는 정해지지 않는다.

용도가 정해진 주소 대역에는 이름과 근거 문서 외에도 다루는 방식을 나타내는 속성이 등록되어 있다. 인터넷까지 도달해도 되는가, 라우터가 전달해도 되는가. 이 두 속성은 대역마다 조합이 다르며, 이름으로는 정해지지 않는다.

IANA는 용도가 정해진 주소 대역을 '특수 용도 주소 레지스트리'에 정리해 두고 있다. 각 대역에는 이름과 근거가 되는 RFC 외에, 출발지나 목적지로 쓸 수 있는지 등 다섯 가지 속성이 붙는다. 속성의 틀은 RFC 6890이 정하고 RFC 8190(2017년 6월)이 개정했다. 이 가운데 설계와 운용 판단에 직접 쓰이는 것이 라우터 전달과 도메인 외부 도달이다.

라우터 전달은 그 대역을 목적지로 하는 패킷을 라우터가 한 인터페이스에서 다른 인터페이스로 넘겨도 되는지를 나타낸다. 169.254.0.0/16의 링크 로컬은 '전달하지 않음'이며, 같은 세그먼트 밖으로 나가지 않는다. 이 대역의 주소로 통신할 수 있는 상대는 같은 세그먼트 안으로 한정된다.

도메인 외부 도달은 패킷이 조직이 관리하는 범위(관리 도메인)의 경계를 넘어도 되는지를 나타낸다. RFC 1918의 세 대역은 전달은 '전달 가능', 도달은 '도달하지 않음'이다. 조직 안에서는 경로에 실어도 되지만, 밖으로 내보내려면 주소 변환이 필요하다. 100.64.0.0/10도 같은 조합이며, RFC 1918에 포함되지 않더라도 다루는 방식은 같다.

조합은 이름으로 정해지지 않는다. 특수 용도이면서도 외부로 도달하는 대역이 있다. 192.31.196.0/24(AS112)는 사설 주소 등의 역방향 조회 질의를 받아 내기 위해 인터넷에서 쓰이고 있다. 경계에서 특수 용도 대역을 일률적으로 버리면 이런 대역까지 막게 된다. 2002::/16(6to4)처럼 도달이 레지스트리에 규정되어 있지 않은 대역도 있다.

요점

  • 두 속성은 그 대역을 목적지로 쓸 때의 취급을 나타낸다. 출발지로 쓸 수 있는지는 별도의 속성으로 등록되어 있다.
  • '도달하지 않음'은 조직 안에서 쓸 수 없다는 뜻이 아니다. RFC 1918의 대역은 조직 안에서는 전달해도 된다.
  • 경계에서 버릴 대역을 정할 때는 대역의 이름이 아니라 도메인 외부 도달의 값을 본다. 그러면 외부로 도달하는 대역을 잘못 막지 않는다.
  • 속성은 대역의 추가나 재검토에 맞춰 갱신될 수 있다. 판단의 근거로 삼을 때는 레지스트리의 최종 갱신일을 확인한다.
06

CIDR과 집약경계를 자유롭게 둘 수 있게 된 결과

예전에 IPv4 주소는 앞쪽 비트에 따라 경계의 위치가 정해졌다. 쓸 수 있는 구분은 세 종류뿐이었다. CIDR은 이 고정을 없애고, 경계를 프리픽스 길이로 명시하는 방식으로 바꾸었다. 그 결과 여러 대역을 하나로 묶는 집약이 가능해졌다.

예전에 IPv4 주소는 앞쪽 비트에 따라 경계의 위치가 정해졌다. 쓸 수 있는 구분은 세 종류뿐이었다. CIDR은 이 고정을 없애고, 경계를 프리픽스 길이로 명시하는 방식으로 바꾸었다. 그 결과 여러 대역을 하나로 묶는 집약이 가능해졌다.

1993년 이전에 IPv4 주소는 클래스라는 틀로 다루어졌다. 주소의 앞쪽 비트를 보면 어느 클래스에 속하는지 알 수 있고, 클래스가 정해지면 경계의 위치도 정해졌다. 인터넷용으로 할당되는 단위는 네트워크 부분이 8비트, 16비트, 24비트 중 하나로 한정되어 있었다.

이 방식에서는 할당 단위가 거칠어진다. 기기 500대를 수용하려는 조직에는 주소 256개짜리 대역으로는 부족하고, 다음 선택지는 65,536개짜리 대역이 된다. 또 조직마다 개별 대역이 할당되므로 라우팅 테이블의 항목 수가 할당 수에 비례해 늘어난다.

RFC 1518과 RFC 1519(모두 1993년 9월)가 정한 CIDR은 클래스에 따른 경계의 고정을 없애고, 프리픽스 길이를 명시하는 방식으로 바꾸었다. 경계는 0부터 32 사이 어디에든 둘 수 있다.

경계가 자유로워지면서 여러 대역을 하나의 표기로 묶을 수 있게 되었다. 이것이 집약이다. 192.168.0.0/24와 192.168.1.0/24는 합쳐서 192.168.0.0/23으로 쓸 수 있다. 다만 조건이 있다. 묶을 대역이 연속되어 있을 것, 합친 크기가 2의 거듭제곱일 것, 그리고 앞쪽 주소가 합친 뒤 크기의 배수일 것이다. 192.168.1.0/24와 192.168.2.0/24는 서로 이웃하지만, 192.168.1.0이 /23의 경계에 있지 않으므로 하나로 묶을 수 없다.

요점

  • 집약할 수 있는지는 대역이 이웃해 있는지만으로 정해지지 않는다. 앞쪽 주소가 합친 뒤 크기의 경계에 놓여 있어야 한다.
  • 라우팅 테이블에서 여러 항목이 같은 목적지에 일치하면 프리픽스 길이가 가장 긴 것이 선택된다. 그래서 집약한 대역과 그 안쪽 일부를 가리키는 항목은 함께 존재할 수 있다.
  • 클래스라는 표현은 문서에 남아 있지만, 경계를 정하는 데는 쓰이지 않는다. /24를 클래스 C라고 부르는 것은 크기가 같다는 대응일 뿐이다.
  • 집약은 표기를 묶는 조작이며, 주소의 수는 변하지 않는다. /24 두 개는 512개, /23도 512개이다.
07

중복의 다섯 가지 분류절반만 겹치는 일이 없는 이유

두 CIDR 블록의 관계는 반드시 다섯 가지 중 하나에 들어간다. 동일, 포함, 피포함, 인접, 분리이다. 절반만 겹치는 상태는 나타나지 않는다. 이는 블록이 만들어지는 방식에서 정해지는 것이며, 판정의 편의를 위해 뺀 것이 아니다.

두 CIDR 블록의 관계는 반드시 다섯 가지 중 하나에 들어간다. 동일, 포함, 피포함, 인접, 분리이다. 절반만 겹치는 상태는 나타나지 않는다. 이는 블록이 만들어지는 방식에서 정해지는 것이며, 판정의 편의를 위해 뺀 것이 아니다.

CIDR 블록에는 두 가지 제약이 있다. 크기가 2의 거듭제곱일 것, 그리고 앞쪽 주소가 자신의 크기의 배수일 것이다. 경계에 놓이지 않은 대역은 애초에 프리픽스 표기로 쓸 수 없다.

이 제약 때문에 두 블록의 관계는 한정된다. 크기가 같으면 대역이 완전히 일치하거나 전혀 겹치지 않거나 둘 중 하나이다. 크기가 다른 경우를 보자. 큰 쪽을 A, 작은 쪽을 B라고 한다. A는 자신의 크기의 배수에서 시작하고, 그 크기는 B의 크기로 나누어떨어진다. 둘 다 2의 거듭제곱이고 B가 A보다 작기 때문이다. 따라서 A의 안쪽은 B와 같은 크기의 구획으로 깔끔하게 나뉜다. B도 경계에 놓여 있으므로 A 안쪽 구획 중 하나와 완전히 일치하거나, A의 바깥에 있거나 둘 중 하나가 된다. A의 경계 밖으로 비어져 나오는 위치에는 놓일 수 없다.

결과적으로 가능한 관계는 다음 다섯 가지가 된다. 대역이 완전히 같으면 동일. 한쪽이 다른 쪽을 완전히 포함하면 포함 또는 피포함. 겹치지 않으면서 한쪽의 끝과 다른 쪽의 시작이 맞닿아 있으면 인접. 맞닿아 있지도 않으면 분리이다.

절반만 겹치는 상태를 만들려면 한쪽의 시작을 경계에서 어긋나게 해야 한다. 어긋난 대역은 프리픽스 표기로 나타낼 수 없으므로 CIDR 블록으로서 존재하지 않는다.

요점

  • 인접은 겹치지 않는 관계 중 하나이다. 분리와의 차이는 한쪽의 마지막 주소 바로 다음이 다른 쪽의 첫 주소인지 아닌지뿐이다.
  • 인접해 있어도 하나로 묶을 수 있다고는 할 수 없다. 둘을 합친 크기가 2의 거듭제곱이 되고, 시작이 새 경계에 놓이는 경우에만 묶을 수 있다.
  • 프리픽스 길이가 같은 두 블록은 일치하거나 겹치지 않거나 둘 중 하나이다. 둘 사이에 포함 관계는 생기지 않는다.
  • 이 다섯 가지 분류는 IPv6에서도 같다. 제약이 크기와 경계의 성질에서 오는 것이어서 주소의 길이에 좌우되지 않기 때문이다.
08

VLSM과 FLSM같은 길이로 나눌 것인가, 필요한 양으로 나눌 것인가

하나의 대역을 여러 개로 나눌 때는 모두 같은 크기로 자르는 방법과, 필요한 크기에 따라 바꾸는 방법이 있다. 앞의 것을 FLSM, 뒤의 것을 VLSM이라고 한다. 둘의 차이는 수고가 아니라, 나눈 결과로 무엇이 남느냐에 있다.

하나의 대역을 여러 개로 나눌 때는 모두 같은 크기로 자르는 방법과, 필요한 크기에 따라 바꾸는 방법이 있다. 앞의 것을 FLSM, 뒤의 것을 VLSM이라고 한다. 둘의 차이는 수고가 아니라, 나눈 결과로 무엇이 남느냐에 있다.

FLSM은 원래 대역을 같은 크기로 나누는 방법이다. 프리픽스 길이를 1비트 늘릴 때마다 구획의 수가 2배가 되므로, 분할 수는 2, 4, 8과 같은 2의 거듭제곱으로 한정된다. 모든 구획이 같은 크기가 되므로, 가장 많은 주소가 필요한 구획에 맞춰 크기가 정해진다. 다른 구획에도 같은 크기가 할당된다.

VLSM은 구획마다 다른 프리픽스 길이를 쓰는 방법이다. 필요한 대수에 네트워크 주소와 브로드캐스트 주소 두 개를 더한 수를 각각 2의 거듭제곱으로 올림한다. 큰 것부터 차례로 경계를 따라 배치하면 각 구획의 시작이 항상 자신의 크기의 배수에 놓이므로, 사이에 쓸 수 없는 빈틈이 생기지 않는다. 작은 것을 먼저 두면, 나중에 오는 큰 구획을 경계에 맞추기 위해 그 앞이 비는 경우가 있다.

VLSM을 쓰려면 경로 정보에 프리픽스 길이가 포함되어 있어야 한다. 구획마다 길이가 달라서 주소만 전달해서는 경계를 복원할 수 없기 때문이다. 길이를 전달하지 않는 방식의 경로 제어에서는 하나의 대역 안에서 길이를 섞어 쓸 수 없었다.

나눈 결과로 남는 것이 다르다. FLSM에서는 요구가 작은 구획에 남는 주소가 생긴다. VLSM에서는 남는 주소가 잘 생기지 않는 대신, 구획마다 경계의 위치가 달라진다.

요점

  • FLSM의 분할 수는 2의 거듭제곱으로 한정된다. 세 개로 나누고 싶을 때는 네 개로 나누고 하나를 쓰지 않는 형태가 된다.
  • VLSM에서 큰 구획부터 차례로 두는 것은 빈틈 없이 경계에 맞추기 위해서이다. 요구하는 크기가 모두 같다면 순서를 바꿔도 결과는 달라지지 않는다.
  • 할당할 크기는 필요한 대수에 2를 더한 뒤 2의 거듭제곱으로 올림하여 정한다. 100대라면 102를 올림해 주소 128개, 130대라면 132를 올림해 주소 256개를 포함하는 구획이 된다.
  • 구획의 크기가 정해져도 그 안에 넣을 수 있는 대수는 주소 수보다 두 개 적다. 네트워크 주소와 브로드캐스트 주소가 빠지기 때문이다.
09

클라우드의 예약 주소원리

가상 네트워크에서 서브넷을 만들면 사용 가능 호스트 수가 일반적인 계산보다 적어지는 경우가 있다. 플랫폼이 일부 주소를 자체 기능을 위해 확보해 두기 때문이다. 빠지는 수와 만들 수 있는 최소 크기는 서로 연동된다.

가상 네트워크에서 서브넷을 만들면 사용 가능 호스트 수가 일반적인 계산보다 적어지는 경우가 있다. 플랫폼이 일부 주소를 자체 기능을 위해 확보해 두기 때문이다. 빠지는 수와 만들 수 있는 최소 크기는 서로 연동된다.

물리 네트워크에서 빠지는 것은 네트워크 주소와 브로드캐스트 주소의 두 개이다. 가상 네트워크에서는 여기에 더해 플랫폼이 사용하는 주소가 확보된다.

확보되는 것은 대부분 서브넷의 앞쪽에 연속된 몇 개와 맨 끝의 1개이다. 앞쪽은 그 서브넷의 기본 게이트웨이나 이름 해석 질의를 받는 주소처럼 플랫폼이 제공하는 기능의 주소에 쓰인다. 향후 기능 추가를 위해 비워 둔 것도 있다. 맨 끝의 1개는 브로드캐스트 주소에 해당하는 위치이기 때문에 확보된다. 가상 네트워크 안에서 브로드캐스트가 실제로 전달되는지와는 별개로, 할당 대상에서 제외된다.

확보되는 수가 고정되어 있으므로 서브넷 크기에는 하한이 생긴다. 예를 들어 네트워크 주소와 맨 끝의 1개를 포함해 5개가 확보되는 경우, 주소가 16개인 서브넷에서는 11개가 남지만 주소가 8개인 서브넷에서는 3개밖에 남지 않는다. 서브넷이 작을수록 확보분이 차지하는 비율이 커진다. 플랫폼은 남는 수가 실제로 쓰기에 부족해지지 않는 선에서 만들 수 있는 최소 크기를 정해 두고 있다.

상한도 정해져 있다. 하한과 달리 상한은 확보되는 수와 관계없이 정해진다.

확보되는 수, 최소 크기, 최대 크기는 플랫폼마다 다르다.

요점

  • 빠지는 수가 같아도 서브넷이 작을수록 영향이 크다. 5개가 빠지는 경우, 주소가 256개인 서브넷에서는 2퍼센트 미만이지만 16개인 서브넷에서는 30퍼센트를 넘는다.
  • 확보되는 주소의 위치는 앞쪽과 맨 끝에 몰려 있다. 서브넷 중간이 비는 일은 보통 없다.
  • 만들 수 있는 최소 크기가 확보 수에서 기계적으로 정해진다고는 할 수 없다. 남는 주소 수에 여유가 있도록 정해진 경우가 있다.
  • 가상 네트워크 밖에서 보이는 주소 공간은 확보 여부와 관계없이 변하지 않는다. 줄어드는 것은 할당할 수 있는 주소이지, 대역 자체가 아니다.
10

IPv6의 사고방식뺄셈이 사라진다

IPv6는 주소 길이가 128비트로 늘어났을 뿐인 확장이 아니다. 브로드캐스트라는 구조 자체가 없어졌고, 사용 가능 호스트 수를 구하는 뺄셈도 사라졌다. 세는 방법과 표기도 자릿수의 크기에 맞춰 바뀌었다.

IPv6는 주소 길이가 128비트로 늘어났을 뿐인 확장이 아니다. 브로드캐스트라는 구조 자체가 없어졌고, 사용 가능 호스트 수를 구하는 뺄셈도 사라졌다. 세는 방법과 표기도 자릿수의 크기에 맞춰 바뀌었다.

IPv6 주소는 128비트이며, 16진수 4자리로 된 16비트 그룹 8개를 콜론으로 구분해 쓴다. 각 그룹 앞쪽의 0은 생략할 수 있고, 모두 0인 그룹이 이어지는 부분은 이중 콜론으로 한꺼번에 생략할 수 있다. 다만 이중 콜론은 한 곳에만 쓸 수 있다. 두 곳에 쓰면 각각이 몇 그룹분인지 복원할 수 없게 되기 때문이다.

IPv6에는 브로드캐스트 주소가 없다. 모든 노드에 보내고 싶을 때는 그 용도의 멀티캐스트 주소를 목적지로 한다. 멀티캐스트에서는 그 주소를 받기로 한 노드만 처리하므로 용도별로 전달 대상을 좁힐 수 있다. 이 변화로 서브넷의 마지막 주소를 확보해 둘 이유가 없어졌다.

네트워크 주소에 해당하는 배열도 브로드캐스트를 위해 빼 둘 필요가 없다. IPv4에서 당연했던 '2 빼기'는 IPv6에서는 하지 않는다. 다만 인터페이스 ID가 모두 0인 주소는 그 서브넷의 라우터를 가리키는 용도로 RFC 4291(2006년 2월)이 예약하고 있다.

주소 수의 자릿수도 달라진다. /64 서브넷 하나가 18,446,744,073,709,551,616개의 주소를 포함한다. IPv4 전체가 약 43억인 것과 비교하면 자릿수의 차이를 알 수 있다. 이 값은 부호 없는 64비트 정수로 나타낼 수 있는 최댓값보다 1 크므로, 다룰 때는 자릿수가 넘치지 않는 표현을 골라야 한다.

용도별 대역도 정해져 있다. fe80::/10은 같은 링크 안에서만 유효한 링크 로컬, fc00::/7은 조직 내부용, 2001:db8::/32는 문서의 예시 전용이다. 조직 내부용으로 실제로 할당되는 것은 fc00::/7 가운데 fd00::/8 쪽이다.

요점

  • 이중 콜론은 한 곳에만 쓸 수 있다. 두 곳에 있으면 생략된 그룹 수를 복원할 수 없어 다른 주소와 구별되지 않는다.
  • IPv6에서는 브로드캐스트를 위한 뺄셈을 하지 않는다. 다만 인터페이스 ID가 모두 0인 주소는 서브넷의 라우터를 가리키는 용도로 예약되어 있다.
  • /64가 포함하는 주소 수는 18,446,744,073,709,551,616이다. 부호 없는 64비트 정수로 나타낼 수 있는 최댓값보다 1 크므로 자릿수가 넘치지 않는 표현이 필요하다.
  • 브로드캐스트가 없어진 대신 모든 노드를 대상으로 하는 멀티캐스트 주소가 마련되어 있다. 용도는 이어지고 구조만 바뀌었다.

앱에서는 클라우드 플랫폼별 예약 주소를 다루는 1편을 포함해 11편 모두를 무료로, 오프라인에서도 읽을 수 있습니다. 해설의 예시 값은 그대로 계산 탭에서 열 수 있습니다. SubnetDeck 보기

정석

IP 주소 설계 정석

자주 만나는 상황별 주소 할당 방법을 9개 분류, 69개로 정리했습니다. 무료 13개는 여기서 전문을 읽을 수 있습니다.

10/8·172.16/12·192.168/16의 사용 구분과 어디서부터 나눌지

10/8의 최상위를 무엇으로 나눌 것인가
10.0.0.0/8
무료

상황

이제 사내 주소 공간을 처음부터 정한다. 거점이 150곳, 공장이 16곳 있고, 클라우드의 가상 네트워크도 같은 공간에 둔다. 사업부는 몇 년마다 재편되고, 거점의 담당 지역도 바뀐다. 10/8의 어디에 무엇을 둘지 가장 먼저 정하는 단계다.

전제

10/8을 자사에서 자유롭게 나눌 수 있을 것. 향후 통합으로 다른 회사의 주소 공간과 섞일 가능성은 지금은 고려하지 않아도 될 것. 용도의 종류를 나중에 추가할 수 있을 것. 경계를 참조하는 필터의 행 수를 셀 수 있을 것.

할당

세그먼트대수블록
데이터센터 서버3,000
전사 관리·모니터링1,000
원격 접속 풀1,000
경계·연계500
전사 공통 예비250

이유

10/8에서 가장 먼저 정할 것은 두 번째 옥텟에 어떤 의미를 부여할지다. 후보는 세 가지로, 용도로 나누거나, 조직으로 나누거나, 지리로 나누는 것이다.

결론부터 말하면 용도로 나눈다. 조직과 지리는 바뀌지만 용도는 바뀌지 않기 때문이다. 사업부는 몇 년마다 재편되고, 담당 지역도 바뀐다. 반면 공장이 사무 거점으로 바뀌는 일은 없고, 검증 환경이 운영 환경이 되는 일도 없다.

조직으로 나누면 재편할 때마다 경계를 옮기거나, 이름과 실제가 어긋난 채로 두거나 둘 중 하나를 골라야 한다. 거의 언제나 후자가 선택되고, 몇 년 뒤에는 영업의 영역에 다른 부서가 들어와 있게 된다. 그렇게 되면 설계서의 구분과 실제 장비의 내용이 맞지 않게 된다.

최상위 경계는 옮길 수 없다. 10.16.0.0/12는 공장이라는 전제로 필터가 작성되어 있기 때문이며, 경계가 움직이면 이를 참조하는 행을 모두 다시 검토해야 한다. 150개 거점과 16개 공장, 클라우드를 갖고 있다면 수백 행이 되고, 게다가 한꺼번에 전환하지 않으면 한쪽 방향 통신만 통과하는 시간이 생긴다.

그래서 처음에 정하는 양을 최소로 한다. 10/8을 /12로 나누면 용도에 줄 수 있는 블록은 16개가 된다. 용도 4개로 시작하고, 부족해지면 블록을 하나 늘린다. 블록은 추가만 하므로 기존 경계는 움직이지 않는다. 16개 블록 중 4개만 쓰는 것은 낭비처럼 보이지만, 아무것도 옮기지 않아도 된다는 것이 더 가치 있다.

확장 여지

/12 블록은 16개다. 전사 공통, 거점, 공장, 클라우드로 4개를 쓰고 12개가 빈다. 용도를 추가할 때는 10.64.0.0/12처럼 비어 있는 블록을 하나 주고, 기존 경계는 움직이지 않는다. 검증이나 IoT처럼 나중에 생기는 용도도 기존 블록을 쪼개지 않고 새 블록을 받는다. 다음에 어느 블록을 줄지는 필요해진 시점에 정한다.

함정

  • 두 번째 옥텟을 조직으로 나눈다. 조직은 몇 년마다 재편되는데 경계는 옮길 수 없으므로, 이름과 실제가 어긋난 채로 남는다. 나누는 기준은 용도로 한다.
  • 용도의 종류를 처음부터 세세하게 만든다. 쓰이지 않는 블록이 늘어날 뿐 아니라, 새 요구가 어느 용도에 해당하는지 매번 판단해야 한다. 4개 정도로 시작하고 필요해지면 추가한다.
  • 부족해진 용도를 위해 옆 블록의 일부를 빌린다. 블록 중간에 경계가 생기고, 이후 그 블록만 두 용도가 섞인다. 부족하면 블록을 하나 준다.
  • 나눈 결과만 남기고 이유는 남기지 않는다. 다음 담당자는 어느 블록이 무엇인지는 읽을 수 있지만 왜 용도로 나눴는지는 읽을 수 없으므로, 조직으로 다시 나누자는 제안이 주기적으로 나온다.
  • 전사 공통 영역을 마지막에 잡는다. 쓰기 좋은 블록이 먼저 배정되고, 전사 공통이 멀리 떨어진 블록에 흩어진다. 전사 공통은 첫 번째 블록에 잡는다.
192.168/16은 자사만의 것이 아니다
192.168.0.0/16
무료

상황

100명 규모의 회사가 현장 장비와 검증용 기기를 192.168 대역에 두고 있다. 거래처나 위탁업체와 거점 간을 연결하는 이야기가 나올 때마다 상대 구내의 주소와 충돌해 조정이 필요해진다. 재택근무 접속에서도 직원이 가져온 무선 공유기와 충돌하는 경우가 있다.

전제

상대 구내에서 쓰는 주소를 항상 사전에 알 수 있는 것은 아닐 것. 외부와 경로를 잇는 기기와 잇지 않는 기기를 나눌 수 있을 것. 장비의 주소를 나중에 바꾸려면 입회와 재설정이 필요할 것. 10/8도 쓸 수 있는 상태일 것.

할당

세그먼트대수블록
현장 장비(외부와 경로를 잇지 않음)200
검증 중·반출 전 기기200
개별 시험대100
예비(쓰는 쪽 절반의 안쪽)250

이유

192.168.0.0/16은 자사만의 것이 아니다. 가정용 기기, 직원이 가져온 무선 공유기, 거래처와 위탁업체의 구내가 같은 공간을 쓰고 있다. 기본값이 192.168.0과 192.168.1에 몰린다는 것은 잘 알려져 있지만, 문제는 그것만이 아니다. 소형 기기의 기본값은 192.168.10이나 192.168.100 등에도 흩어져 있고, 상대가 무엇을 쓰는지는 대개 사전에 알 수 없다.

충돌한 블록을 그때그때 피하는 방식으로 하면 피한 기록이 계속 늘어난다. 10년쯤 운용하면 피한 블록이 수십 개가 되고, 새 상대가 생길 때마다 목록과 대조해야 한다. 대조는 사람이 하므로 빠뜨린다.

그래서 거꾸로 한다. 쓰는 범위를 상위 비트로 고정하고, 세 번째 옥텟이 128 이상인 쪽만 자사의 것으로 한다. 절반을 버리게 되지만 판단은 한 번으로 끝난다. 100명 규모라면 쓰는 블록은 10개도 안 되므로 128개면 충분히 남는다.

두는 것도 제한한다. 이 공간에 두어도 되는 것은 다른 회사나 다른 거점과 경로가 이어지지 않는 것뿐이다. 충돌을 피할 수 없는 공간임을 알고 있다면, 충돌해도 곤란하지 않은 것만 두면 된다. 거점 간 연결의 반대편에서 보이는 것, 상호 접속으로 나가는 것은 10.0.0.0/8에서 가져온다.

확장 여지

자사가 쓰는 것은 세 번째 옥텟이 128 이상인 쪽뿐이며, 128개 블록 중 4개를 쓴다. 나머지 절반인 192.168.0.0/17은 비워 두고, 상대가 늘어도 블록별 대조는 하지 않는다. 판단은 세 번째 옥텟이 128 이상인지 한 번 확인하는 것으로 끝난다. 외부와 경로를 이어야 하는 것이 생기면 이 공간에 두지 않고 10.0.0.0/8에서 가져온다. 장비가 늘어도 쓰는 쪽 절반으로 충분하다.

함정

  • 192.168 전체를 자사 공간으로 쓰는 전제로 나눈다. 상호 접속할 때마다 충돌이 생기고, 그때마다 블록을 피하는 식으로 대응하게 되어 피한 기록이 흩어진다. 쓰는 범위를 상위 비트로 고정한다.
  • 충돌한 블록의 목록을 만들어 피한다. 상대가 늘 때마다 대조가 필요하고, 사람이 하므로 빠뜨린다. 판단이 상위 비트 한 번으로 끝나는 형태로 한다.
  • 외부에서 보이는 장비를 이 공간에 둔다. 상대 구내와 충돌했을 때 피할 수 있는 것은 자사 쪽뿐이므로 장비의 주소를 바꾸게 된다. 외부로 나가는 것은 10.0.0.0/8에서 가져온다.
  • 절반을 버리는 것이 아깝다는 이유로 쓰지 않는 쪽도 쓰기 시작한다. 쓰기 시작한 블록은 되돌릴 수 없고, 얻는 것 없이 판단의 단순함만 잃는다. 100명 규모라면 128개 블록으로 충분히 남는다.

SOHO부터 대규모까지, 한 거점의 주소 설계

100명 규모의 단일 거점 사무실
10.20.0.0/22
무료

상황

직원 100명 안팎, 1개 층 또는 2개 층을 쓰는 본사·지사. 유선과 무선을 모두 사용하고, 파일 서버와 NAS를 사내에 두고 있는 가장 전형적인 구성이다.

전제

L3 스위치 또는 VLAN을 지원하는 라우터가 1대 이상 있을 것. DHCP는 네트워크 장비와 서버 중 어느 쪽에 두어도 될 것. 향후 3년 안에 인원이 1.5배로 늘어날 가능성을 감안할 것.

할당

세그먼트대수블록
클라이언트(유선)150
서버20
네트워크 장비 관리30
프린터·복합기15
무선 클라이언트200
2단계용(향후 확장 예약)200

이유

100명 규모에서 가장 먼저 고민하는 것은 ‘/24 하나로 충분한가’인데, 답은 유선만이라면 충분하지만 /24 하나로 나누어서는 안 된다는 것이다. 유선 클라이언트만이라면 /24에 들어간다. 그러나 업무용 스마트폰과 노트북의 무선 연결까지 세면 1인당 단말은 실제로 2~3대가 되고, /24의 254개는 금방 찬다.

그래서 /22를 확보하고 내부를 /24와 /26으로 나눈다. 유선 클라이언트와 무선을 각각 독립된 /24로 하는 것은 DHCP 풀의 고갈이 다른 쪽으로 번지지 않게 하기 위해서다. 서버와 관리를 /26에 머물게 하는 것은 이 규모에서는 60대를 넘는 일이 거의 없고, 크게 잡으면 세 번째 옥텟의 가독성을 잃기 때문이다.

세 번째 옥텟에 의미를 부여한 것도 의도적이다. 0=유선, 1=고정 IP 기기, 2=무선, 3=2단계용으로 대응시켜 두면, 패킷 캡처나 로그를 보는 순간 어느 세그먼트인지 알 수 있다. 이 가독성은 장애 대응 속도와 직결된다.

확장 여지

10.20.3.0/24를 통째로 비워 두었으므로, 인원이 1.5배가 되어도 무선을 /23으로 넓히거나 부서별 세그먼트를 하나 추가할 수 있다. 서버의 /26이 비좁아지면 10.20.1.128/27의 프린터를 10.20.1.192/27로 옮기고, 비게 된 10.20.1.128/26으로 기기 관리를 옮기면 10.20.1.0/25로 서버를 두 배로 늘릴 수 있다. 거점을 하나 더 늘릴 때는 10.21.0.0/22, 10.22.0.0/22로 이어 가고 10.20.0.0/14로 집약한다.

함정

  • 192.168.1.0/24나 192.168.0.0/24를 사내망에 써 버린다. 가정용 공유기의 기본값과 충돌하기 때문에 재택근무 VPN 접속에서 경로가 깨진다. 10/8에서 잘라 쓰는 것이 무난하다.
  • 무선과 유선 클라이언트를 같은 세그먼트에 묶는다. 나중에 방문자용 SSID를 추가하고 싶을 때 주소 설계부터 다시 해야 한다. 처음부터 나누어 두는 비용은 거의 없다.
  • 네트워크 장비의 관리 주소를 클라이언트 세그먼트에 섞는다. ACL로 관리 접근만 따로 제한할 수 없게 되고, 감사에서 반드시 지적받는다.
  • 예비 /24를 ‘비어 있으니까’라며 눈앞의 용도에 써 버린다. 예비는 쓰지 않는 데 가치가 있으므로, 이름을 ‘예비’가 아니라 ‘2단계용’으로 붙여 두면 지켜지기 쉽다.
재석 인원을 예측할 수 없는 자율좌석제 거점
10.16.8.0/21
무료

상황

좌석을 고정하지 않는 100석 규모의 거점. 재직 인원 120명에 대해 출근율이 날마다 40%에서 80%까지 오르내린다. 모두가 노트북을 들고 다니며, 유선 포트는 회의실과 일부 고정석에만 남아 있다. 파견이나 상주 협력업체 같은 단기 체류자가 늘 10명 안팎 있다.

전제

무선이 거점 전체를 덮고, 직원이 단말을 무선만으로 써서 업무를 할 수 있을 것. DHCP 임대 시간을 세그먼트별로 바꿀 수 있을 것. 출입 기록 등에서 날마다의 실제 재석 인원을 나중에 꺼낼 수 있을 것. 좌석 예약 제도는 도입하지 않은 상태일 것.

할당

세그먼트대수블록
직원 단말 무선 풀300
풀 병합용 예약(확장 시 무선 풀에 편입)400
유선(회의실·고정석)50
단기 체류자·방문자 단말40
서버·공유 기기20
프린터·복합기12
네트워크 장비 관리12
2층 증설 대비 예약200

이유

풀의 크기를 정할 때 가장 먼저 나오는 숫자는 좌석 수 100과 재직 인원 120이다. 먼저 좌석 수는 제외한다. 다음으로 생각할 것은 최대 재석 시의 단말 수로, 출근율 80%라면 96명이고 1인이 노트북과 업무용 스마트폰을 가지므로 192대가 된다. 여기까지라면 /24의 254개에 들어간다.

어긋나는 것은 그다음이다. 자율좌석제에서는 오늘 누가 올지 정해지지 않는다. 임대 시간을 24시간으로 해 두면, 어제 오고 오늘 오지 않은 사람의 단말 주소가 아직 살아 있다. 출근율이 40%와 80% 사이를 오간다는 것은, 이틀 연속으로 오는 사람이 적은 날이 있다는 뜻이다. 40%(48명) 다음 날이 80%(96명)이고 얼굴이 거의 겹치지 않으면, 이틀 동안 온 사람은 재직 인원 120명에 가까워지고 살아 있는 임대는 최대 240대가 된다. /24의 254개 중 94%로, 남는 것은 14개뿐이다. 고갈은 가장 붐비는 날이 아니라 얼굴이 바뀌는 날에 일어난다. 세어야 할 것은 최대 재석 인원이 아니라 임대 시간 동안 올 수 있는 인원, 즉 재직 인원에 가까운 수다.

그렇다면 임대를 짧게 하면 되느냐 하면, 하한이 있다. 점심시간과 오후 회의로 노트북을 덮으면 3~4시간은 통신이 없고, 임대를 2시간으로 하면 복귀할 때 다른 주소를 받는 단말이 나온다. 임대 시간의 상한은 풀의 크기가, 하한은 일하는 방식이 정한다. 둘 다 충족하려면 풀에 /23을 잡을 수밖에 없다. 510개가 있으면 240대여도 53%가 남는다.

/23을 잡는 시점에서 세 번째 옥텟과 세그먼트의 대응은 무너지지만, 이 거점에서는 가독성보다 고갈 회피를 우선한다. 또한 늘 이동하면서 통신하는 단말을 같은 풀에 넣을 때는 별도의 판단이 필요하다.

확장 여지

옆의 10.16.10.0/23을 비워 둔 것은 장래를 위해서가 아니라 풀을 하나의 서브넷으로 넓히기 위해서다. 풀은 나누어 덧붙일 수 없으므로, /23을 /22로 만들려면 인접한 /23이 통째로 비어 있어야 한다. 판단 시점을 재직 인원 210명으로 둔 것은, 이틀 동안 거의 전원이 오면 420대가 되어 /23의 510개 중 82%에 이르기 때문이다. 그때 인접 블록을 합쳐 10.16.8.0/22로 하고, 임대 시간은 그대로 둔다. 이 제약 때문에 유선도 서버도 10.16.12.0/24로 밀려나 있다. 비워 둔 공간을 풀어도 되는 조건을 먼저 정해 두지 않으면, 빈 공간은 반드시 다른 용도에 쓰이게 된다.

함정

  • 좌석 수로 풀을 정한다. 100석이니까 /25를 잘라 두면, 1인 2대와 단기 체류자를 세는 순간 부족해져 운용을 시작한 주에 고갈된다. 세는 것은 좌석이 아니라 단말이다.
  • 고갈을 피하려고 임대 시간을 줄여 회전을 높인다. 점심시간이나 회의 뒤에 복귀한 단말이 다른 주소를 받아 통신이 끊기지만, 끊기는 것이 복귀하는 순간뿐이라 재현되지 않고 보고도 올라오지 않는다.
  • 단기 체류자의 단말을 직원과 같은 풀에 넣는다. 재직 인원으로 추정한 대수와 실제가 계속 어긋나, 증원할 때마다 주소가 몇 개 부족했는지 설명할 수 없게 된다. 수를 예측할 수 있는 쪽과 없는 쪽은 나눈다.
  • 유선 포트에 고정 IP를 나눠 주는 운용을 남겨 둔다. 자율좌석제에서는 같은 포트에 날마다 다른 사람이 앉으므로 주소와 사용자의 대응이 금방 무너지고, 주소 대장만 남는다. 유선도 DHCP로 나눠 준다.

거점 번호와의 대응, 그리고 경로 집약을 전제로 한 할당

경로 집약이 되도록 150개 거점에 번호를 붙인다
10.0.0.0/8
무료

상황

본사 1곳, 지역 허브 8곳, 영업소와 창고 141곳으로 모두 150개 거점. 각 거점은 지역 허브를 거쳐 본사에 연결되고, 경로는 지역 허브에서 집약해 상위로 넘긴다. 거점 번호는 이미 자산 관리와 장표에 쓰이고 있으며, 개설 순서대로 붙어 있다. 해마다 몇 곳이 열리고 몇 곳이 닫힌다.

전제

지역 허브가 산하 거점을 하나로 집약해 광고할 수 있을 것. 거점 번호 체계가 이미 있고, 주소 설계 사정으로는 다시 붙일 수 없을 것. 한 거점의 단말이 1,000대를 넘지 않을 것. 거점이 어느 지역에 속하는지가 몇 년 단위로는 바뀌지 않을 것.

할당

세그먼트대수블록
대표 거점(지역 3, 거점 12) 유선 클라이언트200
대표 거점 무선 클라이언트250
대표 거점 서버·복합기50
대표 거점 네트워크 장비 관리60
대표 거점 거점 내 예비250
거점 간 링크와 루프백(전 거점 공통 블록)250

이유

150개 거점을 상위로 150개 경로로 넘기지 않으려고 집약한다. 그런데 집약에 필요한 것은 주소 블록이 연속되는 것이지, 거점 번호가 연속되는 것이 아니다. 이것을 혼동하면 설계 전체가 헛수고가 된다.

거점 번호는 이미 있다. 자산 관리와 장표에 쓰이고, 개설 순서대로 붙어 있으며, 지역과는 대응하지 않는다. 이 번호를 그대로 두 번째 옥텟에 옮기면, 지역 3의 허브가 맡는 것은 거점 3, 17, 42, 88처럼 띄엄띄엄한 집합이 된다. 띄엄띄엄한 블록은 하나로 묶이지 않으므로 상위로 나가는 경로는 150개 그대로 남는다. 집약을 위해 번호를 다시 붙일 수도 없다. 번호는 장표와 호칭에 박혀 있다.

그래서 순서를 거꾸로 한다. 집약 단위, 즉 지역 허브에 먼저 블록을 할당하고, 거점 번호는 그 블록 안에서 식별자로 나눠 준다. 지역 8곳에 두 번째 옥텟을 하나씩, 거점에는 /22 블록을 하나씩 준다. 한 지역에는 64개 거점까지 들어간다. 150개 거점이면 가장 큰 지역도 24개뿐이라 모두 들어가고, 상위로 나가는 경로는 8개가 된다. 거점이 두 배인 300개로 늘어도 8개 그대로다.

대가는 주소에서 거점 번호를 읽을 수 없게 된다는 점이다. 읽을 수 있게 하려면 지역의 연속성을 버려야 한다. 장애 대응에 필요한 것은 번호 규칙이 아니라 거점 번호와 블록의 대응표 한 장이다.

확장 여지

지역 블록은 두 번째 옥텟 1부터 8이고, 0은 전사 공통으로 쓴다. 9부터 15까지 7개 블록은 비워 두고, 지역 증설과 64개 거점을 넘은 지역에 주는 두 번째 지역 블록에 쓴다. 이 번호는 연속되지 않으므로 대응표에서 찾는다. 10.16.0.0/12 위로는 손대지 않고, 인수나 다른 사업의 수용을 위해 남긴다.

함정

  • 거점 번호를 그대로 주소에 대응시킨다. 번호는 개설 순서로 정해져 지역과 대응하지 않으므로, 같은 허브 산하가 띄엄띄엄해지고 상위로 나가는 경로가 거점 수만큼 남는다. 번호는 지역 블록 안에서 나눠 준다.
  • 거점 간 링크의 주소를 그 거점의 블록에서 가져온다. 상대가 다른 지역의 거점이면 이 지역 블록의 주소가 다른 지역에 놓이고, 그만큼 세분화된 경로가 상위로 나간다. 링크는 거점 블록 밖의 공통 블록에서 가져온다.
  • 거점 안의 세그먼트를 거점 블록의 경계를 넘어 추가한다. 넘친 부분은 집약에 포함되지 않아 그 거점만 세분화된 경로가 상위로 나간다. 추가는 블록 안에서만 하고, 넘으면 두 번째 블록을 준다.
  • 주소에서 거점 번호를 읽을 수 있어야 한다는 것을 요건으로 삼는다. 읽을 수 있게 하면 지역의 연속성을 버리게 되어 집약이 성립하지 않는다. 필요한 것은 번호 규칙이 아니라 대응표다.
  • 한 거점만 지리적 사정으로 다른 지역 허브에 수용한다. 주소는 원래 지역 블록 그대로이므로 상위에는 지역 블록과 그 거점만의 경로가 나란히 선다. 수용처를 바꾸려면 주소째 옮긴다.

/30·/31 링크와 루프백 /32의 풀 설계

점대점 링크를 /30으로 할지 /31로 할지
10.161.0.0/16
무료

상황

점대점 링크를 300개 이상 가진 망에서 링크의 프리픽스 길이를 정한다. 기기는 세대가 섞여 있어, 오래된 장치와 특정 용도 장치, 가상 기기가 함께 있다. 주소를 절약하고 싶다는 이유로 /31로 통일하자는 제안이 나와 있다.

전제

링크 양 끝에 있는 기기의 모델과 세대를 목록으로 만들 수 있을 것. 기기가 /31을 처리할 수 있는지 미리 확인할 수 있을 것. 할당을 한곳에서 하고 있을 것. 링크 주소를 나중에 바꾸면 설정과 모니터링을 고쳐 써야 하는 환경일 것.

할당

세그먼트대수블록
/30으로 자르는 링크 대역(기본)2,000
/31로 자르는 링크 대역(지원을 확인한 구간)250
루프백250
링크 예비2,000

이유

/30은 주소 4개 중 2개만 쓸 수 있고, /31은 2개 모두 쓸 수 있다. 필요한 주소 수는 절반이 된다.

하지만 절약으로서는 의미가 없다. 링크가 352개라면 /30으로 1,408개, /31로 704개다. 차이인 704개는 링크용으로 잡은 /16 블록의 약 1퍼센트에 불과하다. 이 정도 차이 때문에 판단을 바꿀 이유는 없다.

결정적인 것은 기기가 모두 지원하느냐다. /31은 모든 기기가 처리할 수 있는 것이 아니다. 오래된 장치, 특정 용도 장치, 가상 기기 중 어느 것이 지원하지 않는 경우가 있다. 링크는 양 끝에 기기가 한 대씩 있으므로, 한 대라도 지원하지 않으면 그 링크는 결국 /30이 된다.

섞어 쓰면 할당 절차가 달라진다. 풀 안에 두 가지 크기가 섞이고, 할당할 때마다 양 끝 두 대의 지원 여부를 조사하게 된다. 한 달에 10개라면 연 120회다. 절약한 704개 주소는 연 120회의 조사만큼의 가치가 없다.

그러므로 통일한다. 모든 기기가 지원하면 /31, 한 대라도 미지원이 남아 있으면 모두 /30이다. 굳이 섞으려면 대역을 나눠, 할당할 때마다 조사하지 않아도 되게 한다.

하나 더. 한번 /30으로 자른 링크는 기기가 교체되어도 /31로 옮기지 않는다. 옮기려면 주소를 바꿔야 하고, 설정과 모니터링의 이름이 고쳐 쓰이기 때문이다. 언젠가 옮긴다는 전제는 두지 않는다.

확장 여지

기본은 /30이고, 지원을 확인한 구간만 /31 대역에서 자른다. 대역을 나누는 것은 할당할 때 기기의 지원 여부를 조사하지 않아도 되게 하기 위해서다. /31 대역에 구간을 더하는 것은 양 끝 기기가 교체되어 지원을 확인했을 때뿐이다. 증분은 10.161.16.0/21에서 낸다. 모든 기기가 교체되어도 기존 /30 링크는 전환하지 않는다. 새로 만드는 링크만 /31로 자른다.

함정

  • 주소 절약을 이유로 /31을 고른다. 절약되는 것은 링크용 블록의 약 1퍼센트로, 판단을 바꿀 이유가 되지 않는다. 결정적인 것은 기기가 모두 지원하느냐다.
  • 두 가지 크기를 같은 대역에 섞는다. 할당할 때마다 양 끝 두 대의 지원 여부를 조사하게 되어, 한 달에 10개라면 연 120회의 작업이 늘어난다. 섞으려면 대역을 나눈다.
  • 미지원 기기가 한 대 있는데도 /31을 기본으로 하고, 그 구간만 /30 예외로 둔다. 기기를 교체할 때마다 지원 여부를 확인해야 하고, 한 번이라도 잊으면 그 링크를 쓸 수 없게 된다. 기본은 /30으로 하고, /31은 지원을 확인한 구간의 대역에서 자른다.
  • 언젠가 /31로 옮긴다는 전제로 /30을 고른다. 옮기려면 주소를 바꿔야 하고, 설정과 모니터링의 이름이 고쳐 쓰인다. 옮기지 않는다는 전제로 정한다.

DMZ·서버·클라이언트·관리·음성·게스트 무선

방문자용 무선은 사내망과 아무것도 공유하지 않는다
172.30.0.0/16
무료

상황

100명 규모의 회사에서 방문자용 무선을 마련한다. 평소 방문자 단말은 20대 정도지만, 설명회나 전시가 있는 날에는 400대가 한꺼번에 들어온다. 사내망으로 가는 통신은 필터로 막고 있지만, 이름 해석과 주소 배포는 사내망과 같은 기기를 쓰고 있다.

전제

방문자용 무선을 사내 무선과 별도의 대역으로 낼 수 있을 것. 방문자용으로 바깥으로 나가는 출구를 하나 마련할 수 있을 것. 이름 해석과 주소 배포 기기를 방문자용으로 따로 둘 수 있을 것. 172.16/12 안에 쓸 수 있는 위치가 있을 것.

할당

세그먼트대수블록
방문자 단말400
방문자용 출구와 주소 배포 기기10
방문자용 이름 해석(외부 조회만)5
행사 시 증설 블록800

이유

방문자용 무선에 필요한 것은 사내망과 끊어 두는 것뿐이라고 흔히 생각한다. 사내망으로 가는 통신을 필터로 막으면 된다는 생각이다. 이것으로는 부족하다.

방문자 대역이 사내망과 공유하는 것은 필터 바깥에도 있다. 이름 해석을 사내 기기로 하게 하면, 방문자 단말은 사내 서버의 이름을 조회할 수 있다. 답을 돌려주지 않아도, 어떤 이름이 존재하는지는 조회에 대한 반응으로 알 수 있다. 주소 배포를 사내망과 같은 기기로 하면, 100명 회사에 400대가 들어오는 행사 날에 사내 주소 배포까지 막힌다. 시각을 사내망에 맞추게 하면, 사내 시각 서버로 가는 경로를 하나 여는 셈이 된다.

그래서 방문자 대역은 사내망과 아무것도 공유하지 않는다. 사내의 어느 세그먼트로도 경로를 두지 않고, 출구는 바깥으로 나가는 하나뿐이다. 이름 해석도 주소 배포도 방문자만을 위해 따로 둔다. 필터로 막는 것이 아니라, 막아야 할 경로가 애초에 존재하지 않는 형태로 만든다. 막은 경로는 한 줄로 열리지만, 없는 경로는 열 방법이 없다.

주소를 고르는 방식에도 이유가 있다. 방문자 단말의 대부분은 자기 회사로 연결을 맺는다. 상대 회사가 내부에서 10/8을 쓰고 있는데 방문자 대역도 10/8에 있으면, 상대 쪽에서 주소가 겹쳐 방문자는 자기 회사에 연결할 수 없게 된다. 대역은 172.16/12 안에서 잘 쓰이지 않는 위치에서 잡는다.

확장 여지

방문자 대역은 사내망 어디로도 경로를 두지 않고, 출구는 바깥으로 나가는 하나뿐이다. 이름 해석과 주소 배포도 방문자용으로 따로 둔다. 행사로 단말이 늘면 172.30.4.0/22를 더해 받고, 더한 부분도 같은 출구로 내보낸다. 사내망으로 가는 경로는 늘리지 않는다. 대역은 172.16/12 안에서 잡고, 방문자의 회사가 쓰고 있을 법한 10/8과는 겹치지 않게 한다.

함정

  • 사내망으로 가는 통신을 필터로 막는 것으로 끝낸다. 이름 해석이나 주소 배포를 사내망과 공유하고 있으면, 필터 바깥에서 사내 정보가 새고 부하도 전해진다. 아무것도 공유하지 않는다.
  • 방문자 단말에 사내 이름 해석을 쓰게 한다. 답을 돌려주지 않아도, 어떤 이름이 존재하는지가 조회에 대한 반응으로 드러난다. 방문자용으로 따로 둔다.
  • 방문자 주소 배포를 사내망과 같은 기기로 한다. 행사 날 방문자가 급증하면 사내 주소 배포까지 막힌다. 주소 배포는 방문자용으로 나눈다.
  • 방문자 대역을 10/8에서 잡는다. 방문자가 자기 회사로 연결을 맺을 때 상대 회사의 내부망과 주소가 겹쳐 연결되지 않는다. 172.16/12에서 잘 쓰이지 않는 위치에서 잡는다.
DMZ에 둘 것의 기준과 나누는 법
10.170.0.0/16
무료

상황

500명 규모의 회사에서 DMZ에 두는 기기가 해마다 늘어 왔다. 공개용 웹 서버, 거래처와 파일을 주고받는 서버, 외부에서 오는 메일을 받는 기기, 외부 서비스를 호출하기만 하는 서버, 모니터링 알림을 바깥으로 보내는 기기가 하나의 대역에 함께 있다.

전제

외부에서 시작되는 통신을 받는 기기와 바깥으로 나가기만 하는 기기를 구별할 수 있을 것. 거래처와의 연결 상대를 특정할 수 있을 것. DMZ 대역을 상대별로 나누어 낼 수 있을 것. 대역 간 통신을 경계에서 막을 수 있을 것.

할당

세그먼트대수블록
공개용(누구나 옴)20
거래처용(상대가 정해져 있음)20
외부 메일을 받는 기기(공개용에서 나눈 대역)10
DMZ 예비100

이유

DMZ에 무엇을 둘지의 기준은 하나다. 외부에서 시작되는 통신을 받는 기기를 둔다.

기준이 없으면 바깥과 통신하는 것이 전부 들어간다. 사내에서 바깥으로 나가기만 하는 기기, 외부 서비스를 호출하기만 하는 서버, 모니터링 알림을 바깥으로 보내는 기기. 이들은 외부에서 시작되는 통신을 받지 않으므로 DMZ에 둘 이유가 없다. 두면 DMZ가 부풀고, 그중 한 대가 침입당했을 때 옆에 있는 전부에 닿게 된다.

둘 것을 정했으면 다음은 받는 상대로 나눈다. 공개용과 거래처용은 같은 대역에 두지 않는다. 공개용은 누구나 오므로 침입당한다는 전제로 생각한다. 거래처용은 상대가 정해져 있으므로 허용은 훨씬 좁다. 같은 대역에 있으면, 공개용 서버가 침입당했을 때 거래처와 주고받는 파일에 옆에서 닿는다. 상대를 좁힌 의미가 사라진다.

나눈 대역 간 통신은 허용하지 않는다. 공개용에서 거래처용으로 갈 이유가 업무상 하나도 없기 때문이다.

외부에서 받는 기기가 새로 나왔는데 누구에게서 받는지가 분명하지 않을 때는 공개용에 넣는다. 상대를 좁힐 수 없는 기기를 거래처용에 넣으면 거래처용 대역의 전제가 무너진다.

확장 여지

DMZ는 받는 상대별로 나누고, 공개용과 거래처용은 다른 대역에 둔다. 대역 간 통신은 허용하지 않는다. 외부에서 받는 기기가 새로 나오면 누구에게서 받는지로 대역을 정하고, 정해지지 않으면 공개용에 넣는다. 대역이 부족해지면 10.170.1.0/24에서 자른다. 바깥으로 나가기만 하는 기기는 늘어나도 DMZ에 넣지 않는다.

함정

  • 바깥과 통신하는 것을 전부 DMZ에 넣는다. 바깥으로 나가기만 하는 기기까지 들어가면 DMZ가 부풀고, 한 대의 침입이 옆의 전부에 닿는다. 두는 것은 외부에서 시작되는 통신을 받는 기기로 한정한다.
  • 공개용과 거래처용을 같은 대역에 둔다. 공개용이 침입당했을 때 거래처와 주고받는 파일에 옆에서 닿는다. 받는 상대별로 대역을 나눈다.
  • 나눈 대역 간 통신을 만일을 위해서라며 허용해 둔다. 업무상 이유가 없는 허용은 침입당했을 때의 통로가 될 뿐이다. 대역 간에는 허용하지 않는다.
  • 상대가 분명하지 않은 기기를 거래처용에 넣는다. 거래처용 대역은 상대가 정해져 있다는 전제로 허용을 좁히고 있으므로, 그 전제가 무너진다. 망설여지면 공개용에 넣는다.

예약 주소를 전제로 한 구획 나누기

클라우드의 서브넷은 5개 적게 센다
10.216.0.0/16
무료

상황

클라우드의 가상 네트워크에 기기 10대를 두는 작은 서브넷을 장애 영역마다 만든다. 사내망과 같은 감각으로 /28을 자르면 14대를 둘 수 있을 거라고 생각한다. 같은 가상 네트워크에는 200대 정도의 애플리케이션 서브넷도 둘 예정이다.

전제

쓰는 사업자가 서브넷 안의 주소 몇 개를 먼저 가져간다는 것을 알고 있을 것. 사업자가 가져가는 수와 만들 수 있는 최소 크기를 확인할 수 있을 것. 서브넷을 만든 뒤에는 크기를 바꿀 수 없을 것. 가상 네트워크 안에 빈 공간이 있을 것.

할당

세그먼트대수블록
기기 10대의 서브넷(예약을 빼고 27개 사용 가능)10
같은 용도의 다른 장애 영역10
애플리케이션 서브넷(예약 비율이 작음)200
서브넷 예비100

이유

클라우드에서 서브넷을 만들면 사업자가 그 안의 주소 몇 개를 먼저 가져간다. 사업자마다 다르지만, 앞쪽 4개와 마지막 1개, 합쳐서 5개를 가져가는 형태가 많다. 사내망에서 쓸 수 없는 것은 처음과 마지막 2개뿐이므로, 이 차이를 모른 채 자르면 주소가 모자란다.

차이는 작은 서브넷일수록 크게 작용한다. /24라면 256개 중 5개로 2퍼센트에 불과하다. /26이라면 64개 중 5개로 8퍼센트다. 만들 수 있는 최소 크기인 /28에서는 16개 중 5개, 약 30퍼센트가 사라진다. 쓸 수 있는 것은 11개다.

사내 감각으로 /28을 자르면 14대를 둘 생각이었는데 11대밖에 둘 수 없다. 기기 10대를 둔다면 여유는 1대뿐이고, 2대를 더하는 날 넘친다. 서브넷은 만든 뒤에 크기를 바꿀 수 없으므로, 넘치면 다시 만들어야 한다.

그래서 작은 서브넷을 자를 때는 예약을 뺀 수로 대수와 비교한다. 10대라면 /28이 아니라 /27을 잡는다. /27이면 32개에서 5개를 빼고 27개를 쓸 수 있다. 작게 자를수록 손실 비율이 커지므로, 작은 서브넷은 사내보다 한 단계 크게 자르는 것을 기본으로 한다.

예약 수는 사업자마다 다르고, 만들 수 있는 최소 크기도 다르다. 계산 탭에서 예약 프로필을 고르면 쓸 수 있는 수가 바로 나온다. 산정은 거기서 확인한다.

확장 여지

작은 서브넷은 예약 5개를 뺀 다음 대수와 비교한다. 10대라면 /28이 아니라 /27을 잡는다. 장애 영역마다 같은 크기로 나열하고, 영역 수만큼 만든다. 서브넷이 늘면 10.216.2.0/24에서 자른다. 산정이 애매하면 계산 탭에서 예약 프로필을 골라 쓸 수 있는 수를 확인한다.

함정

  • 사내 감각으로 쓸 수 있는 수를 센다. 처음과 마지막 2개만 빼면 사업자가 가져가는 나머지 3개를 놓쳐, 둘 생각이었던 대수가 들어가지 않는다. 예약을 뺀 수로 비교한다.
  • 만들 수 있는 최소 크기인 /28을 표준으로 한다. 16개 중 5개가 사라져 쓸 수 있는 것은 11개뿐이다. 몇 대만 더해도 넘친다. 10대 규모라면 /27을 잡는다.
  • 서브넷은 나중에 넓히면 된다고 생각한다. 만든 뒤에는 크기를 바꿀 수 없고, 넘치면 다시 만들어야 한다. 처음부터 예약을 포함해 산정한다.
  • 예약 수가 어느 사업자나 같다고 생각한다. 사업자에 따라 가져가는 수도, 만들 수 있는 최소 크기도 다르다. 쓰는 사업자의 프로필로 확인한다.

중복 회피, VPN 연결, 통합 시 리넘버링

중복을 주소 변환으로 피한다면 기한을 동시에 정한다
172.18.0.0/15
무료

상황

인수한 회사의 망을 자사 망과 잇는다. 양쪽 모두 10/8을 쓰고 있어 여러 대역이 겹친다. 업무 사정상 다음 달에는 이어져 있어야 하며, 어느 쪽이든 주소를 재부여할 시간은 없다. 경계에서 주소를 변환해 잇는 안이 나와 있다.

전제

양사 망 사이에 주소를 변환할 수 있는 경계를 한 곳 둘 수 있을 것. 변환 후의 주소를 양쪽 어느 주소 공간에도 없는 곳에서 잡을 수 있을 것. 변환 규칙에 기한을 적어 넣을 수 있을 것. 재부여할 쪽을 경영의 판단을 기다리지 않고 정할 수 있을 것.

할당

세그먼트대수블록
자사에서 상대 망을 보기 위한 변환 후 대역3,000
상대에게 자사 망을 보여 주기 위한 변환 후 대역800
변환 기기와 관리20
변환 예비(기한까지 늘어나는 분)400

이유

중복된 두 망을 잇는 방법은 두 가지다. 어느 한쪽의 주소를 재부여하거나, 경계에서 주소를 변환하는 것이다. 변환은 하룻밤이면 들어가고, 재부여는 몇 달이 걸린다. 통합 초기에 변환을 고르는 것은 옳다.

문제는 변환이 영구화되는 데 있다. 변환으로 통신이 통해 버리므로 재부여할 이유가 사라진다. 3년 뒤에는 변환 규칙이 쌓여 아무도 전체를 설명하지 못하게 된다. 장애가 날 때마다 로그에 찍힌 주소가 변환 전인지 후인지를 확인하게 된다.

그래서 변환을 넣는 날 두 가지를 동시에 정한다. 기한과 재부여할 쪽이다. 기한은 날짜로 정하고 변환 규칙 자체에 적어 둔다. 재부여할 쪽은 그날 안에 정하고, 변환 기간은 재부여의 준비 기간으로 다룬다. 어느 쪽을 재부여할지 정하지 않은 변환은 기한이 와도 연장할 수밖에 없다.

변환 후의 주소는 양쪽 어느 공간에도 없는 곳에서 잡는다. 자사도 상대도 10/8을 쓰고 있어서 겹친 것이라면, 변환 후의 주소는 172.16/12에서 잡는다. 어느 한쪽 10/8의 빈 곳을 쓰면, 다음에 다른 회사를 받아들일 때 다시 겹친다.

영구적이어도 되는 변환도 있다. 같은 구성을 그대로 복사해 만든 라인처럼, 같은 주소가 나란히 계속 존재하는 것이 설계의 전제라면 변환은 영구적인 것이 옳다. 통합에서의 중복은 전제가 아니라 사고이며, 사고에 대한 응급 처치를 영구적으로 만들어서는 안 된다.

확장 여지

변환 후의 대역은 172.16/12 안에서 잡고, 상대 망을 보기 위한 대역과 자사 망을 상대에게 보여 주는 대역을 나눈다. 변환 규칙에는 기한을 적고, 기한까지 변환을 넣은 날 정한 쪽의 주소를 재부여한다. 기한까지 늘어나는 분은 172.18.24.0/22에서 자른다. 기한이 지난 변환은 연장하지 않으며, 연장이 필요하면 재부여할 쪽의 판단부터 다시 한다.

함정

  • 변환을 넣을 때 기한을 정하지 않는다. 통신이 통해 버리므로 재부여할 이유가 사라지고, 변환 규칙이 쌓여 아무도 설명하지 못하게 된다.
  • 재부여할 쪽을 정하지 않고 변환을 넣는다. 기한이 와도 어느 쪽을 옮길지의 논의부터 시작하게 되므로 연장할 수밖에 없다. 변환과 같은 날 정한다.
  • 변환 후의 주소를 자사 10/8의 빈 곳에서 잡는다. 다음에 다른 회사를 받아들일 때 다시 겹친다. 양쪽 어느 공간에도 없는 곳에서 잡는다.
  • 변환 규칙을 한 대씩 쓴다. 기한 관리도 한 대씩 하게 되어, 어떤 규칙이 남아 있는지 알 수 없게 된다. 대역 단위로 쓴다.

제어계의 고정 IP 관행, OT/IT 분리, 증설 시 확장

같은 구성의 라인을 수평 전개하는 제조 셀 설계
172.20.0.0/16
무료

상황

같은 장비 구성의 생산 라인이 여러 개 있고, 앞으로도 라인을 늘릴 예정인 공장이다. 장비 공급업체가 납품한 제어 기기에는 고정 IP가 출하 시점부터 박혀 있으며, 라인 사이에 같은 주소가 중복된 상태에서 출발한다.

전제

각 라인의 제어 기기 주소를 바꿀 수 없거나, 바꾸려면 장비 공급업체의 재검수가 필요할 것. 라인끼리 직접 통신할 필요는 없고, 상위의 수집 시스템과만 통신하면 될 것. 라인 경계에 L3 장비나 NAT가 가능한 장비를 둘 수 있을 것.

할당

세그먼트대수블록
1번 라인(바깥에서 보이는 주소)200
2번 라인(바깥에서 보이는 주소)200
3번 라인(바깥에서 보이는 주소)200
수집·모니터링 서버30
유지보수 단말(반입 PC용)10
라인 증설용 예약(4~7번 라인)1,000

이유

OT 네트워크가 IT와 결정적으로 다른 점은 주소를 자유롭게 정할 수 없다는 것이다. 장비 공급업체는 여러 고객에게 같은 구성을 납품하기 때문에 제어 기기의 주소는 출하 시점에 고정되어 있고, 같은 192.168.0.10이 2번 라인에도 3번 라인에도 존재한다. 이를 IT 쪽의 상식대로 "중복되니까 재부여한다"고 처리하면 장비 보증과 재검수 이야기로 번지고, 현장은 멈춘다.

그래서 재부여하지 않는다. 라인 내부의 주소는 장비 공급업체의 설정 그대로 건드리지 않고, 라인 경계의 장비에서 1:1 주소 변환을 걸어 바깥에서 보이는 주소만 라인 번호로 구분한다. 1번 라인의 제어 기기는 바깥에서 172.20.1.x로, 2번 라인의 같은 기기는 172.20.2.x로 보인다. 세 번째 옥텟을 라인 번호로 하는 규칙으로 해 두면, 수집 시스템의 로그를 보는 사람이 기기 이름을 몰라도 어느 라인인지 바로 판별할 수 있다.

이 설계의 본질은 장비 공급업체의 사정과 IT 쪽의 관리 편의를 변환이라는 한 겹의 층으로 분리하는 데 있다. 라인 내부는 "장비 공급업체의 세계", 경계부터 위는 "정보시스템 부서의 세계"로 선을 긋는다. 라인을 늘릴 때마다 설계를 다시 하지 않고, 번호를 하나 늘려 같은 설정을 복사하기만 하면 된다는 것이 가장 큰 이점이다.

확장 여지

가까운 증설용으로 172.20.4.0/22(4~7번 라인)를 예약해 두었다. 기준 블록이 /16이므로 세 번째 옥텟을 라인 번호로 쓰는 규칙 그대로 255번 라인까지 닿고(0은 라인 번호로 쓰지 않고 공용 수집·유지보수에 쓴다), 8번 이후는 172.20.8.0/21, 172.20.16.0/20으로 자연스럽게 이어 갈 수 있다. 공장이 늘어나면 두 번째 옥텟을 공장 번호로 삼아 172.21.0.0/16을 다음 공장에 할당하고, 172.20.0.0/15로 집약한다. 한 라인이 /24로 부족해지는 것은 라인 안의 제어 기기가 250대를 넘을 때인데, 그 규모라면 라인을 논리적으로 나누는 편이 운용하기 쉽다.

함정

  • 라인 사이의 통신을 "만일을 위해" 허용한다. 한 라인이 악성코드에 감염되면 같은 구성의 모든 라인이 한꺼번에 멈춘다. 라인 사이는 원칙적으로 차단하고, 필요한 통신은 수집 시스템을 거치게 한다.
  • 유지보수 단말용 세그먼트를 마련하지 않고 반입 PC를 제어 세그먼트에 바로 꽂는다. OT 보안 사고의 입구로 가장 흔한 경로이며, 기록도 남지 않는다. 전용 세그먼트를 만들고 거기서만 제어 쪽으로 들어가게 한다.
  • 주소 변환의 대응표를 장비 설정 안에만 둔다. 설정한 담당자가 이동하면 어느 외부 주소가 어느 장비인지 아무도 설명할 수 없게 된다. 대응표는 설계서 쪽에 1차 정보로 둔다.
  • 공장 주소에 192.168 대역을 쓴다. 유지보수 업체가 들고 오는 라우터나 모바일 라우터와 충돌하기 쉽고, 게다가 충돌은 현장에서만 드러난다. 172.16/12나 10/8에서 잘라 쓴다.
  • 라인 번호와 주소의 대응을 증설할 때마다 비어 있는 번호를 채우는 식으로 정한다. 7번 라인이 철거되고 나중에 다른 장비가 들어오면 번호와 실물이 어긋나 아무도 믿지 않게 된다. 번호는 재사용하지 않는다.
공장의 IT망과 제어망을 나누는 경계 구역
10.60.0.0/20
무료

상황

부지 안에 사무동과 공장동이 있고, 지금까지 하나의 네트워크로 운용해 온 직원 300명 규모의 공장이다. 생산관리 시스템에서 장비로 내리는 지시와 장비에서 올리는 실적 수집은 앞으로도 필요하지만, 사무실 PC가 제어 기기에 직접 닿는 상태는 없애고 싶다. 라인 내부 설계에는 손대지 않고, 라인의 위아래 경계만 먼저 다시 긋는 단계다.

전제

사무 쪽과 공장 쪽 사이에 L3 장비를 1대 이상 둘 수 있을 것. 양쪽을 넘나드는 통신을 적어도 연계 서버 단위로 상대와 방향별로 정리할 수 있을 것. 이번에는 제어 기기의 주소를 바꾸지 않고, 라인 내부의 재설계는 따로 할 것. 경계 장비가 멈춘 동안에도 생산을 계속할 수 있어야 한다는 것을 요건에 포함할 것.

할당

세그먼트대수블록
사무 클라이언트(유선·무선)300
생산관리·정보계 서버40
연계 서버(양쪽에서 접속하는 중개)12
유지보수 단말 대여용10
경계 장비·모니터링 관리6
경계 2단계용(외부 연동·원격 유지보수 중개)50
제어망 공용 서비스(시간 동기화·이름 해석·라인 외 기기)100
제어망 무선(반송 설비·핸디 단말)200
라인별 구역 예약(1~4번 라인)1,000

이유

분리에 반대하는 사람은 없다. 정해지지 않는 것은 경계에 둘 구역을 어느 크기로 하느냐다.

경계를 /24로 잡으면 반드시 실패한다. 이 규모에서 정말로 양쪽과 통신해야 하는 것은 연계 서버뿐이고, 열몇 대에 그친다. 남은 240여 개는 빈터가 되고, 빈터는 반드시 채워진다. 반년 뒤에는 정보계의 파일 서버가, 이듬해에는 사무 쪽 인증 기반에 가입한 점프 서버가 들어온다. 그 시점에 경계는 더 이상 경계가 아니지만, 주소표 위에서는 아무것도 바뀌지 않으므로 아무도 알아채지 못한다.

그래서 연계는 /28로 제한한다. 14개밖에 없으면 15번째를 두려는 사람은 반드시 누군가와 상의하게 된다. 크기를 운용 규칙으로 작동시키는 것이 목적이며, 증설 여지는 옆에 다른 이름의 2단계용으로 두고 연계 구역 자체는 넓히지 않는다.

/20을 0~3(IT)·4~7(경계)·8~15(제어)의 세 영역으로 나눈 것도 의도한 것이다. 경계 장비의 필터를 10.60.0.0/22, 10.60.4.0/22, 10.60.8.0/21 세 줄로 다 쓸 수 있고, 세그먼트를 추가해도 이 세 줄은 바뀌지 않는다. 추가할 때마다 필터를 건드리는 설계는 언젠가 잘못 건드려 생산을 멈추게 한다.

제어망 공용 서비스 구역(/25)을 제어 쪽에 둔 것은 가용성 때문이다. 경계 장비가 멈춰 있는 동안에도 생산은 계속된다. 시간 동기화와 이름 해석을 사무 쪽에 의존시키면 경계의 정지가 그대로 제어 쪽의 정지가 된다.

확장 여지

경계에는 10.60.4.64/26을 2단계용으로 비워 두었다. 연계를 넓히는 용도가 아니라 외부 데이터 연동이나 원격 유지보수 중개를 나중에 더하는 자리다. 제어 쪽은 라인별 구역으로 10.60.12.0/22를 비워 두었고, 라인 단위 설계는 여기에 둔다. 무선이 /24로 부족해지면 10.60.10.0/23을 추가한다. 공장이 늘어나면 10.60.16.0/20을 다음 공장에 할당하고 10.60.0.0/16으로 집약한다. 세 영역을 /22 단위로 맞춰 두었으므로 어느 공장에서도 필터 세 줄이 같은 형태가 된다.

함정

  • 경계에 점프 서버를 두고 그것을 사무 쪽 인증 기반에 가입시킨다. 인증 정보가 사무 쪽에서 흘러드는 경로가 생겨 경계의 의미가 사라진다. 점프 서버를 둔다면 인증은 경계 안에서 닫는다.
  • 제어 기기의 시간 동기화 대상을 사무 쪽 서버 그대로 둔다. 경계 장비를 멈춘 순간 제어 쪽의 시각이 어긋나기 시작해, 나중에 장애를 추적할 때 로그를 맞춰 볼 수 없다. 시간 동기화는 제어 쪽에 둔다.
  • 분리 요건을 "사무실에서 제어망으로 들어가지 못할 것"만으로 정의한다. 제어 쪽에서 사무 쪽으로 가는 통신이 방치되어, 장비 사이에 섞여 들어온 단말이 밖으로 나가는 경로가 남는다. 방향은 양쪽 모두 정한다.
  • 연계 서버에 수집과 파일 보관까지 겸하게 한다. 멈출 수 없는 쪽 사정 때문에 업데이트할 수 없게 되고, 몇 년 지나면 아무도 손대지 못하는 서버가 된다. 역할별로 나누고, /28 안에서 대수를 관리한다.

/48에서 /64로의 할당과 수요에 따른 확장

IPv6는 아끼지 말고 16진수 자리로 구분한다
2001:db8:100::/48
무료

상황

거점이 10곳인 회사가 통신사로부터 IPv6 /48을 받았다. 지금까지 IPv4에서는 대수에 맞춰 서브넷 크기를 바꾸고, 예비를 둘 위치와 단편화에 신경을 써 왔다. 같은 사고방식으로 IPv6 할당을 시작하려 하고 있다.

전제

통신사로부터 /48을 받았을 것. 사내 기기가 IPv6의 주소 자동 설정을 쓸 수 있을 것. 거점 수와 용도 수가 각각 15 이하에 머물 전망일 것. 사람이 주소를 읽고 의미를 파악하는 운용일 것.

할당

세그먼트대수블록
거점 1 클라이언트200
거점 1 서버50
거점 1 관리30
거점 2 클라이언트(다른 용도도 같은 형태로 이어진다)200

이유

/48을 받으면 그 안에는 /64가 65,536개 있다. IPv4에서 쌓아 온 사고방식의 상당수가 여기서는 반대가 된다.

IPv4에서는 서브넷 크기를 대수로 정했다. 10대라면 /28, 200대라면 /24를 썼다. IPv6에서는 그렇게 하지 않는다. 서브넷은 대수와 관계없이 항상 /64로 한다. 단말이 자기 주소를 스스로 정하는 구조는 /64를 전제로 만들어져 있다. /64보다 작게 자르면 그 구조가 동작하지 않는다.

절약도 필요 없다. /64 65,536개를 다 쓰는 조직은 거의 없다. IPv4에서 고생했던, 예비를 어디에 둘지, 단편화를 어떻게 막을지 같은 문제는 거의 사라진다.

남는 결정은 하나다. 네 번째 그룹(16비트)의 16비트를 어떻게 구분할지다. 여기서는 거점에 4비트, 용도에 4비트, 일련번호에 8비트를 준다. 의미의 경계를 16진수 자리의 경계에 맞추면 주소만 보고도 읽을 수 있다. 2001:db8:100:1200::/64라면 거점 1 서버의 첫 번째 서브넷이다.

구분은 16진수 자리에 맞춘다. 자리 중간에서 구분하면 주소를 읽을 때마다 2진수로 바꿔야 하고, 읽을 수 있다는 이점이 사라진다. 거점이 15를 넘을 전망이라면 처음부터 거점에 8비트를 주고, 용도와 일련번호에 4비트씩 준다.

확장 여지

네 번째 그룹의 첫 자리가 거점이며, 1부터 쓰고 0은 전사 공통용으로 남겨 둔다. 두 번째 자리가 용도, 마지막 두 자리가 일련번호다. 서브넷은 항상 /64이며, 대수가 늘어도 키우지 않는다. 세그먼트 표의 /64가 대수에 비해 커 보이는 것은 프로토콜이 /64를 요구하기 때문이지, 여유를 잡았기 때문이 아니다. 거점이 15를 넘으면 구분을 바꾸지 않고 두 번째 /48을 받는다.

함정

  • 서브넷 크기를 대수로 정하고 /64보다 작게 자른다. 단말이 스스로 주소를 정하는 구조가 /64를 전제로 하고 있어 동작하지 않게 된다. 항상 /64로 한다.
  • IPv4처럼 예비와 단편화를 신경 써서 빈틈없이 자른다. /64 65,536개를 다 쓰는 일은 거의 없어, 빈틈없이 잘라도 얻는 것이 없다. 읽기 쉬움을 우선한다.
  • 네 번째 그룹을 16진수 자리 중간에서 구분한다. 주소를 읽을 때마다 2진수로 바꿔야 하고, 주소에서 의미를 읽을 수 없게 된다. 16진수 자리에 맞춰 구분한다.
  • 거점 자리를 0부터 매긴다. 전사 공통을 둘 자리가 없어져 나중에 끼워 넣게 된다. 0은 전사 공통용으로 남겨 둔다.
나머지 56개는 SubnetDeck 프리미엄으로 전문을 읽을 수 있습니다.SubnetDeck 보기

iPhone·iPad 앱 SubnetDeck

늘 쓰던 계산기에 기록을.

이 페이지는 닫으면 아무것도 남지 않습니다. SubnetDeck은 거점별 설계를 고객이나 프로젝트별 폴더에 남깁니다. 통신은 전혀 하지 않습니다.

  • 거점·고객·프로젝트별 폴더, 주소로 검색
  • 필요한 대수로 VLSM 할당, 겹침 검출
  • 균등 분할·경로 집약·겹침 검사 도구
  • 설계를 .xlsx·CSV·Markdown으로 내보내기
  • 정석 69개와 해설 11편을 오프라인으로
SubnetDeck 설계 탭. 거점별 폴더

iPhone으로 스캔하면 App Store가 열립니다.

웹과 앱의 차이

이 사이트SubnetDeck 앱
IPv4·IPv6 서브넷 계산✓✓(오프라인)
특수 용도 주소 판별(IANA)✓✓
블록 분할체험 가능(저장 안 됨)균등 분할·VLSM을 설계에 저장(프리미엄)
거점·고객별로 설계 남기기—프리미엄
.xlsx·CSV·Markdown 내보내기—프리미엄
정석무료 13개무료 13개, 프리미엄 69개
해설10편11편
통신 없이 사용—✓

자주 묻는 질문

자주 묻는 질문

입력한 내용이 어딘가로 전송되나요?

전송되지 않습니다. 모든 계산은 브라우저 안의 JavaScript로 처리합니다. 광고와 쿠키는 사용하지 않습니다. 입력한 주소는 이 페이지 URL의 ‘#’ 뒤에만 들어가며, 이 부분은 브라우저가 서버로 보내지 않습니다.

/31의 사용 가능 호스트 수가 2인 이유는?

/31은 점대점 링크에 쓰는 크기로, 브로드캐스트 주소가 필요 없기 때문에 두 주소를 모두 할당할 수 있습니다(RFC 3021). /32는 단일 호스트입니다. 해설 ‘/31과 /32’에서 평소의 뺄셈이 성립하지 않는 이유를 설명합니다.

프리픽스 대신 마스크나 와일드카드로 입력할 수 있나요?

가능합니다. ‘192.168.1.0 255.255.255.0’, ‘192.168.1.0 0.0.0.255’, ‘192.168.1.0/255.255.255.0’ 모두 계산합니다. 마스크나 와일드카드만 입력하면 해당 프리픽스 길이와 호스트 수를 보여 줍니다. ‘10.0.0.5 - 10.0.0.90’ 같은 범위는 그 범위를 정확히 덮는 CIDR 목록이 됩니다.

IPv6에 브로드캐스트 주소가 없는 이유는?

IPv6에는 브로드캐스트라는 구조가 없고 멀티캐스트가 그 역할을 대신합니다. 그래서 IPv6 블록 안의 주소는 모두 사용 가능으로 셉니다. 모두 0인 주소는 subnet-router anycast이지만 빼지 않습니다(RFC 4291).

특수 용도 주소의 종류는 무엇으로 판정하나요?

IANA의 IPv4·IPv6 특수 용도 주소 레지스트리를 바탕으로 최장 일치로 판정합니다. 레지스트리와의 대조는 2026-09-23에 했습니다.