궁금한 점

리눅스 방화벽을 설정하는데 이런 구문을 봤습니다.

  • source address="192.168.0.131/32"
  • source address="192.168.0.0/24"

IP를 확인하는 곳에서 심심치 않게 보이는 `/24`, `/32` 와 같은 숫자는 무엇을 의미하는 걸까요?

 

IP 주소 체계

ip 주소는 32비트의 정보로 이루어져 있습니다.  (IPV6는 다르겠지만 우선 이 글에서는 IPv4 기준으로만 설명합니다.)

255.255.255.255

위의 같은 형태가 우리가 자주 보는 IP이며 이는 10진수로 표현된 상황입니다.
이를 2진수로 표현하면 아래와 같습니다.

 

255. 255. 255. 255 (10진수)   =    11111111. 11111111. 11111111. 11111111  (2진수)

위에서 "IP 주소는 32비트의 정보다" 라고 말했었죠?
각 자릿수는 8비트씩 사용되고 (8개 자리 필요 = 1이 8개)
8비트가 4개로 구성된 32비트라는 의미입니다.
255 = 11111111과 같다는 것을 알 수 있습니다.
이 부분 이해 안 되면 10진수 2진수 공부를 따로 하셔야  될 듯합니다.
펼쳐보기를 하면 대충 계산하는 방법 설명합니다.

더보기

대충 8비트로 구성된 것은

 

10진수로 변환하려면, 각 자릿수는 끝에서부터 1, 2, 4, 8, 16 등을 의미하고
2진수 '1'에 해당되는 부분의 10진수를 더하면 됩니다.
255 = 11111111과 같다고 했으니 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255입니다.

더 자세한 것은 주제에 벗어나서(길어져서) 이곳에서는 설명 못해요. ㅠ


 

255. 255. 255. 255 (10진수)   =    11111111. 11111111. 11111111. 11111111  (2진수)

각설하고, 다시 위의 숫자를 보면
255가 4묶음으로 되어있습니다. 묶음 별로 의미하는 바가 있는데요.
첫 번째 묶음을 A클래스, 2번째 묶음을 B클래스 , 3번째 묶음을 C클래스라고 불립니다.

 

즉, A클래스. B클래스. C 클래스. 숫자   <= 이렇게 4 묶음이죠

 

 

그래서 `/32`,  `/24` 와 같은 숫자는 뭐예요?

이제야 다시 본론으로 돌아 왔습니다.

/32, /24 와 같은 숫자는 CIDR(사이더) 라는 표기법입니다.
192.168.0.0/24는  앞에서부터 24 bit는 고정으로 사용된다라는 의미입니다. 

192. 168. 0. 0
11000000. 10101000. 00000000. 00000000


즉, 192.168.0 까지는 고정이고 (각 묶음이 8자리니까 8x3 = 24자리)
마지막 자릿수는 "어떤 값이 들어와도 같은 그룹이다"라는 의미입니다.

방화벽에서 192.168.0.0/24 아이피는 허용하라라고 했다면
192.168.0.0 ~ 192.168.0.255 (256개) 까지는 허용하라는 의미인 것이죠.

이것을 좀 더 다르게 표현하자면 아래와 같습니다.

  • /32 = IP 완전히 같아야 한다.  (표현 개수 = 1개)
  • /24  = C클래스까지는 고정이다. (표현 개수 = 256개)
  • /16 = B클래스까지는 고정이다. (표현 개수 = 65,536개)
  • /8 = A 클래스까지는 고정이다. (표현 개수 = 16,777,216개)

물론 32, 24, 16, 8 뿐만 아니라 11, 12, 13, 14 등 어떤 값이 온다고 해도 2진수로 역산하면 해당 그룹을 계산할 수 있습니다.

 

결론

이해되셨나요?

`/24` 의 의미는 "2진수로 표현했을 때 앞에서 부터 24자리까지는 고정이고, 뒤에는 어떤 숫자가 나와도 같은 그룹 안에 있다 "라고 해석하시면 됩니다.

방화벽에서 표현할 때 192.168.0.0 ~ 192.168.0.255까지 허용한다고 작성한다면,
256개를 등록해야 하는데 너무 비효율적이죠.
그래서 같은 그룹을 한방에 표기할 때 `/24` 등의 표현을 하는 겁니다.


이상 끝! 읽어주시느라 고생하셨습니다.
잘못된 정보 있으면 지적해주시면 감사하겠습니다~