서브넷 마스크 계산기 및 계산 방법 2가지(CIDR, netmask)

네트워크를 설정하다보면 서브넷 마스크 또는 마스크라고 되어 있는 부분에 입력을 해야 하는 경우가 있을 것입니다. 서브넷 마스크 계산 방법을 알아보고, 또 서브넷 마스크 계산기도 함께 준비했습니다.

서브넷 마스크란? CIDR?

클래스 단위로 결정된 주소 비트를 이론적으로 어느 정도의 서브넷이라는 단위로 나눌 것인지 지정하는 것입니다. 크게 네트워크 영역과 호스트 영역으로 나뉘게 되는데, 이를 통해서 네트워크의 성능을 보장하고, 제한된 자원을 효율적으로 사용할 수 있게 됩니다. 그리고 CIDR은 Classless Inter-Domain Routing의 줄임말로 클래스 없는 도메인 간 라우팅 기법입니다.

서브넷 마스크 계산 방법: CIDR을 Netmask로 변환

그림 1의 Addresses에서의 192.168.0.31/24 와 같이 뒤에 /24 를 표기하는 것을 CIDR 값이라고 부릅니다.

그림 1. CIDR로 서브넷 표기하기
그림 1. CIDR로 서브넷 표기하기

그리고 그림 2와 같이 많은 분들이 흔히 사용하는 개인 네트워크의 사설 IP 주소 192.168.0.132와 같은 값을 이용할 때 Netmask 값은 255.255.255.0으로 설정해서 이용합니다.

그림 2. Netmask로 서브넷 표기하기
그림 2. Netmask로 서브넷 표기하기

위의 두 가지 값은 표현은 다르게 되나 동일하게 처리됩니다. 아래 계산기에서 24라고 입력해 보시면 2진수 Netmask에서 11111111 11111111 11111111 00000000 이라고 표현되는 것을 볼 수 있습니다. 왼쪽에서부터 몇 비트를 마스킹할 것인지 표현하는 게 CIDR 표기법입니다.

Netmask는 그걸 십진수로 8비트씩 끊어서 10진수로 표현한 것입니다. 흔히 넷마스크로 사용하는 255.255.255.0이 그 예입니다.

CIDR과 Netmask 계산기

아래 CIDR에 숫자를 입력해 주면 Netmask 값으로 변환이 됩니다. Netmask에 값을 채워넣으면 CIDR로 변환됩니다. 두가지 경우 모두 2진수 Netmask 값으로도 변환됩니다. 단, netmask 값은 페이지 하단의 표를 참고해서 사용하시기 바랍니다.

CIDR
Netmask
Netmask(2진수) 00000000 00000000 00000000 00000000
그림 3. 서브넷 마스크 계산 방식
그림 3. 서브넷 마스크 계산 방식

192.168.121.110/24로 표기한다면, 앞의 24비트인 192.168.121 까지가 호스트 주소이고, 이후의 110 값에 해당하는 8비트가 호스트 주소가 된다고 이해하시면 됩니다. 즉, 좌측부터 24개 비트가 1로 채워져 넷마스크 값은 255.255.255.0이 됩니다.

특히 회사나 학교와 같은 곳에서는 넷마스크 값을 네트워크 관리자를 통해 명확히 확인 후 사용하시기 바랍니다. 물론 개인이 사용하는 192.168.0.xxx의 경우에는 편안하게 255.255.255.0 사용하면 되겠습니다.

CIDR & Netmask 테이블

바로 위에 계산기를 준비해 놓았지만, 아래 표를 통해서도 확인할 수 있습니다.

CIDRMaskHosts
/32255.255.255.2551
/31255.255.255.2542
/30255.255.255.2524
/29255.255.255.2488
/28255.255.255.24016
/27255.255.255.22432
/26255.255.255.19264
/25255.255.255.128128
/24255.255.255.000256
/23255.255.254.000512
/22255.255.252.0001024
/21255.255.248.0002048
/20255.255.240.0004096
/19255.255.224.0008192
/18255.255.192.00016384
/17255.255.128.00032768
/16255.255.000.00065536
/15255.254.000.000131072
/14255.252.000.000262144
/13255.248.000.000524288
/12255.240.000.0001048576
/11255.224.000.0002097152
/10255.192.000.0004194304
/9255.128.000.0008388608
/8255.000.000.00016777216
/7254.000.000.00033554432
/6252.000.000.00067108864
/5248.000.000.000134217728
/4240.000.000.000268435456
/3224.000.000.000536870912
/2192.000.000.0001073741824
/1128.000.000.0002147483648
표. CIDR, Netmask 별 이용가능한 호스트 개수

관련자료

위의 계산기에는 stackoverflow의 netmask 관련 코드를 사용했습니다.
위키피디아의 CIDR 페이지를 참고했습니다.

함께 읽으면 좋은 글

Ubuntu 고정 IP 설정 방법(우분투 22.04)

컴퓨터 여러 대를 관리하다보면 IP 주소를 DHCP로 자동 할당 받지 않고 고정 IP를 할당해야 하는 경우가 생깁니다. Ubuntu 고정 IP 설정 방법을 네트워크 설정 도구인 Network Manager의 GUI 방식과 TUI/CLI를 이용한 방식 모두 알아보겠습니다.

GUI or TUI/CLI?

보통의 GUI 사용자 분들은 GUI로 설정하는 편이 편하실 것입니다. 하지만 GUI 환경이 없는 서버에서 IP를 변경해야 한다면 그 경우에는 필히 Terminal을 열어서 TUI/CLI를 이용해서 변경할 수 밖에 없겠죠. 그럼 GUI와 TUI/CLI를 통한 Ubuntu 고정 IP 설정 방법 각각 알아보도록 하겠습니다.

GUI로 Ubuntu 고정 IP 설정 및 적용

우선 일반적인 Ubuntu 사용자를 위해 GUI 설정 방법을 먼저 살펴보겠습니다.

화면 우측 상단의 Top Bar 영역 우측의 메뉴 버튼을 누른 후, Wired Connected(유선 연결됨)를 선택한 후 Wired Settings(유선 네트워크 설정) 메뉴를 선택합니다.

그림 1. Wired Settings 메뉴
그림 1. Wired Settings 메뉴

Settings(설정) 윈도우 오른쪽에 Network(네트워크)가 열립니다. Connected 상자 우측에 있는 톱니바퀴 아이콘을 눌러줍니다.

그림 2. Wired Connection 설정 버튼
그림 2. Wired Connection 설정 버튼

Wired(케이블 연결) 창이 뜨면 IPv4 탭을 선택해 줍니다. 별도로 고정 IP 설정을 하지 않았다면 Automatic(자동) (DHCP)로 선택이 돼 있을 것입니다. Manual(수동) 라디오 버튼을 눌러서 선택합니다. Addresses(주소)에 사용하고자 하는 IP 주소와 Netmask 그리고 Gateway를 입력해 주면 됩니다. 저는 Address에 192.168.0.31, Netmask에 255.255.255.0, Gateway에 192.168.0.1을 설정해 주었습니다. DNS(네임서버)도 Automatic을 꺼주고 수동으로 설정해 줍니다. 저는 데이콤 네임서버 164.124.101.2를 설정했습니다. 외국 서버를 이용하는 것보다는 엑세스가 빠르니까요. 이제 Wired 창 우측 상단의 Apply를 눌러서 적용해줍니다.

그림 3. GUI로 Ubuntu 고정 IP 설정하기
그림 3. GUI로 Ubuntu 고정 IP 설정하기

아래와 같이 스위치를 눌러서 꺼준 후, 스위치를 다시 눌러서 켜줍니다.

그림 4. 네트워크 연결 끄고, 다시 켜기
그림 4. 네트워크 연결 끄고, 다시 켜기

다시 톱니바퀴 버튼을 눌러서 들어가보면 위에서 설정한 IP와 DNS로 주소가 각각 변경된 것을 확인할 수 있습니다.

그림 5. 변경한 IP와 Gateway, DNS 정보를 확인
그림 5. 변경이 적용된 IP와 Gateway, DNS 정보를 확인

TUI로 Ubuntu 고정 IP 설정

원격으로 접속한 경우에도 TUI 사용이 가능합니다. nmtui 사용법을 알아보겠습니다.

nmtui
ShellScript

터미널에서 nmtui 라고 그냥 입력해서 실행하면 아래와 같은 NetworkManager TUI 창이 열립니다. 네트워크 설정을 변경해 줄 것이므로 Edit a connection을 선택해 줍니다.

그림 6. NetworkManager TUI 도구
그림 6. NetworkManager TUI 도구

편집할 연결을 선택해 줍니다. 저는 Wired connection 1을 선택하겠습니다.

그림 7. Wired connection 1 선택
그림 7. Wired connection 1 선택

Edit Connection에서 IPv4 CONFIGURATION의 Automatic을 선택해서 Manual로 바꿔줍니다.

그림 8. Automatic을 Manual로 변경
그림 8. Automatic을 Manual로 변경

오른쪽에 있는 Show 버튼을 선택하고 눌러줍니다.

그림 9. Show 버튼으로 IP 주소 수동 입력공간 열기
그림 9. Show 버튼으로 IP 주소 수동 입력공간 열기

Addresses에 사용할 IP를 입력해 주고, Gateway에 라우터(공유기)의 IP를 적어주고, 사용할 DNS를 입력해 줍니다. Subnet mask로 255.255.255.0을 이용할 것이기 때문에 IP 주소 옆에 /24를 붙여주었습니다.

그림 9. Show 버튼으로 IP 주소 수동 입력공간 열기

이제 화면 최하단의 우측에 있는 OK 버튼을 눌러서 설정을 마칩니다. 이제 ESC키를 눌러서 nmtui에서 빠져나옵니다.

그림 10. 화면 최하단 OK 버튼으로 설정 저장
그림 10. 화면 최하단 OK 버튼으로 설정 저장

CLI로 Ubuntu 고정 IP 설정

nmcli 명령을 사용하여 아래와 같이 해 주면 위에서 GUI나 TUI로 설정하는 것과 같은 설정이 됩니다.

nmcli c modify <UUID> ipv4.method manual
nmcli c modify <UUID> ipv4.addresses 192.168.0.31/24
nmcli c modify <UUID> ipv4.gateway 192.168.0.1
nmcli c modify <UUID> ipv4.dns 164.124.101.2
ShellScript

TUI/CLI 고정 IP 설정 이후 적용

네트워크 uuid 확인

재시작하려는 네트워크의 uuid 확인을 위해 nmcli c show를 입력해 줍니다.

nmcli c show
ShellScript
그림 11. 네트워크 연결을 확인
그림 11. 네트워크 연결을 확인

nmtui/nmcli로 설정한 내용 확인

이렇게 설정한 내용은 nmcli c show uuid | grep ipv4 명령어를 사용해서 확인할 수 있습니다.

nmcli c show <uuid> | grep ipv4
ShellScript
그림 12. 설정한 내용 확인
그림 12. 설정한 내용 확인

네트워크 비활성화

nmcli c down uuid 명령어를 사용해서 네트워크 연결을 비활성화해줍니다.

nmcli c down <uuid>
ShellScript
그림 13. nmcli c down 명령으로 네트워크 비활성화
그림 13. nmcli c down 명령으로 네트워크 비활성화

네트워크 활성화

nmcli c up uuid 명령어를 사용해서 네트워크 연결을 다시 활성화합니다.

nmcli c up <uuid>
ShellScript
그림 14. nmcli c up 명령으로 네트워크 활성화
그림 14. nmcli c up 명령으로 네트워크 활성화

변경된 네트워크 설정이 적용됐는지 확인

변경한 내용이 잘 적용되었는지 nmcli c show uuid | grep IP4 명령을 통해서 확인합니다. 수동으로 변경한 IP 주소가 반영된 것을 확인할 수 있습니다.

nmcli c show <uuid> | grep IP4
ShellScript
그림 15. 설정한 내용이 적용됐는지 확인
그림 15. 설정한 내용이 적용됐는지 확인

관련 자료

Ubuntu 22.04 nmcli man page에서 nmcli 명령어 사용법에 대해 더 자세한 내용을 확인할 수 있습니다.
Ubuntu 22.04 nmtui man page에서 nmtui 명령어에 대해 알아볼 수 있습니다.

같이 읽으면 좋은 글

Ubuntu 버전 확인 방법 4가지

우분투 운영체제를 사용할 때 우분투 운영체제의 버전을 확인해야 할 때가 있습니다. 그러면 우분투 버전을 알아야 하는 상황과 Ubuntu 버전 확인 방법에 대해 알아보겠습니다.

문제상황: Ubuntu 버전을 알아야 할 때

이를테면 kime라는 입력기를 다운 받는 것을 가정해 보겠습니다. 아래 그림 1과 같이 우분투 버전별로 어플리케이션 패키지 파일이 빌드되어 따로 배포되고 있을 때에는 내가 사용하는 Ubuntu의 버전에 맞추어 빌드된 패키지를 다운 받아야 합니다. 그러기 위해서는 사용하는 Ubuntu 버전을 알아내야 합니다.

그림 1. Ubuntu 버전 확인이 필요한 상황(우분투 버전별 kime 배포)
그림 1. Ubuntu 버전 확인이 필요한 상황(우분투 버전별 kime 배포)

그리고 소프트웨어를 개발할 때 어플리케이션에서 우분투 버전 값이 필요한 경우에도 활용할 수 있겠습니다. 이 경우에는 GUI를 이용하는 것보다는 terminal을 이용한 확인 방법이 더 유용하겠네요.

그럼 Ubuntu 버전 확인 방법을 GUI와 terminal을 이용하는 방법까지 총 4가지 방법을 살펴보겠습니다.

GUI로 Ubuntu 버전 확인

명령 프롬프트가 익숙하지 않은 분들도 쉽게 Ubuntu 버전 확인이 가능합니다. 화면 우측 상단에 있는 메뉴를 눌러서 톱니바퀴 아이콘이 있는 Settings로 들어갑니다.

그림 2. Ubuntu 버전 확인을 위해 Settings 진입
그림 2. Ubuntu 버전 확인을 위해 Settings 진입

그림 3에서 Settings 창의 좌측 메뉴 최하단을 보면 About 메뉴가 있습니다. About을 선택해 주면 오른 쪽에 현재 사용하는 시스템에 대한 간략한 하드웨어 정보와 운영체제 버전, 32 bit 또는 64bit 여부, GNOME Version까지 확인할 수 있습니다.

그림 3. Settings 창의 About에서 Ubuntu 버전 확인
그림 3. Settings 창의 About에서 Ubuntu 버전 확인

우분투의 버전은 보통 출시년도와 출시월을 기준으로 버전을 만듭니다. 2022년 4월 출시 버전이라면 위와 같이 22.04로 나옵니다. 그런데 뒤에 .1이 붙어있는 게 궁금하신 분들 계시죠? 해당 버전이 업데이트 됨에 따라 뒤에 .1 또는 .2 처럼 업데이트되는 버전이 나옵니다. 하지만 마이너 업데이트이기 때문에 22.04까지 확인하고 이용하시면 별 무리가 없습니다.

터미널에서 Ubuntu 버전 확인

GUI를 이용하면 클릭해서 이동하고, 누르고 확인하고 해야 하는데, 터미널에서는 키보드 몇 번 두드리면 바로 버전 확인이 가능합니다. 터미널에서 우분투 버전을 확인하는 방법을 3가지 알아보겠습니다.

lsb_release 명령어 사용

-a 옵션 사용

-a 옵션은 lsb_release로 확인할 수 있는 모든 값을 확인하겠다는 것입니다.

lsb_release -a
ShellScript

Description과 Release를 통해서 버전 확인이 가능합니다. 덤으로 Codename도 함께 알려줍니다. 저는 Ubuntu 22.04를 사용하고 있기 때문에 아래와 같이 나옵니다.

-d 옵션 사용

Description의 내용만 확인하고 싶을 때에는 -d 옵션을 사용합니다.

lsb_release -d
ShellScript

-d 옵션만 확인하면 아래와 같이 Description 값만 나옵니다.

-r 옵션 사용

Ubuntu의 배포 버전(Release)을 확인하고 싶을 때에는 -r 옵션을 사용하면 됩니다.

lsb_release -r
ShellScript

-r 옵션을 사용하면 Release 버전만 바로 확인할 수 있기 때문에 편리합니다.

hostnamectl 명령어 사용

hostnamectl은 시스템의 호스트이름을 확인하거나 변경할 수 있는 프로그램입니다. hostnamectl 명령어를 그냥 사용하면 현재 호스트의 정보를 확인할 수 있습니다.

hostnamectl
ShellScript

아래와 같이 운영체제가 Ubuntu 22.04.1 LTS인 것을 확인할 수 있습니다. QEMU/KVM 기반으로 가상화되어 돌아가고 있고, 리눅스 커널 버전이 5.15.0-58-generic인 것까지도 확인이 가능합니다.

/etc/issue 파일 확인

/etc/issue 파일은 로그인 전에 보여주는 텍스트 메시지가 들어있기도 하며 Ubuntu 버전 확인의 역할도 합니다.

cat /etc/issue
ShellScript

/etc/issue 파일에는 간단한 Ubuntu 버전이 들어 있습니다.

/etc/os-release 파일 확인

cat /etc/os-release
ShellScript

PRETTY_NAME 그리고 VERSION_ID와 VERSION을 통해서 Ubuntu 22.04 버전임을 확인할 수 있습니다.

관련 자료

hostnamectl man 페이지Freedesktop의 os-release에 대한 OS identification 문서 그리고 issue man 페이지를 참고했습니다.

같이 읽으면 좋은 글