교육

[팔로 알토 네트웍스] 네트워크 보안 기초 #3

김구티2 2024. 5. 6. 08:10

[3주차] 물리적, 논리적 및 가상 주소 지정

학습목표

1. 10진수 이진법과 16진수 변환 방법을 인식한다.
2. IP 헤더의 구조와 필드를 설명한다.
3. IPV4 및 IPV6 주소의 구조 및 기본 형식을 식별한다.
4. IPV4 클래스 C 주소 지정 체계를 서브넷화한다.
5. 4개의 DHCP 프로세스 메시지 및 네트워크 주소 변환(NAT)을 검토한다.

[3-1] 물리적, 논리적 및 가상 주소 지정

컴퓨터 네트워크에서 물리적, 논리적, 가상 주소 지정을 위해서는 10진법, 2진법, 16진법 번호 지정에 대한 기본적인 이해가 필요하다.

십진법은 당연히 우리 모두가 이미 어릴 떄부터 알고 있었다. 그것은 0부터 9까지 숫자로 구성된다. 숫자 9 다음에, 우리는 숫자 10을 만든다. 우리는 열 손가락을 가지고 있기 때문에 인간은 10진법을 사용한 것일 테다. 그래서 10진법은 인간이 이해하기에 가장 쉽다.

 

2진법 번호 체계는 1(on)과 0(off)의 두 숫자로만 구성된다. 2진법 번호 체계는 숫자를 셀 때 손가락 대신 전기 트랜지스터를 사용하기 때문에 컴퓨터와 네트워크에서 사용된다. 트랜지스터의 기본적인 기능은 게이트다. 전류가 흐르면 게이트는 닫히고, 전류가 흐르지 않으면 게이트는 열린다(0 또는 off). 두 숫자만 있다는 것은 10진법 번호 체계보다 더 자주 다음 위치로 증가한다는 것을 의미한다. 10진법 '10'이 2진법으로는 '1010'인 것처럼 말이다.

 

16진수 체계는 16자리 (0~9, A~F)로 구성되어 있다. 16진수가 사용되는 이유는 데이터의 바이트(8비트로 구성된)를 2진법의 8자리가 아니라 16진수의 2자리로 나타내는 것이 더 편리하기 때문이다. 10진수 0부터 9는 각각 16진수 "0"부터 "9"까지와 같이 표시된다. 하지만, 10진수 10은 "A"로 표시되고, 11은 "B"로 표시되고, 12는 "C"로 표시되고, 13은 "D"로 표시되고, 14는 "E"로 표시되고, 15는 "F"로 표시된다. 숫자 16은 "10"으로 표시되고, 숫자 16은 다음 숫자 위치로 증가한다.

 

MAC(미디어 액세스 제어) 주소로 알려진 네트워크 장치의 물리적 주소는 로컬 네트워크 세그먼트의 트래픽을 전달하는 데 사용된다. MAC 주소는 장치의 네트워크 어댑터에 할당된 고유한 48비트 식별자다. 장치에 여러 개의 NIC가 있는 경우, 각 NIC에는 고유한 MAC 주소가 있어야 한다. MAC 주소는 일반적으로 장치 제조업체에서 할당하고 ROM(장치 읽기 전용 메모리) 또는 펌웨어에 저장한다. MAC 주소는 일반적으로 각 8비트 섹션을 구분하는 콜론 또는 하이픈과 함께 16진수 형식으로 표시된다. 00:40:96:9d:68:16 같은 것이 48비트 MAC 주소의 예시다.

 

IP 주소와 같은 네트워크 장치의 논리적 주소는 한 네트워크에서 다른 네트워크로 트래픽을 라우팅하는 데 사용된다. IP 주소는 장치의 NIC에 할당된 고유한 32비트 또는 128비트(각각 IPv4 및 IPv6) 주소다. 장치에 여러 개의 NIC가 있는 경우, 각 NIC에 고유한 IP 주소가 할당되거나 대역폭 집계 또는 페일오버 기능을 지원하기 위해 여러 개의 NIC에 가상 IP 주소가 할당될 수 있다. IP 주소는 정적 또는 동적으로(*가장 일반적으로 동적 호스트 구성 프로토콜 또는 DHCP를 사용하여) 할당되며, 일반적으로 네트워크 관리자 또는 네트워크 서비스 제공자(NSP)가 할당한다. IPv4 주소는 일반적으로 각 소수 섹션을 구분하는 점으로 점선 10진 표기법으로 표시되며, 이를 옥텟(octet)이라고 한다. 우리에게 상당히 친숙한 표기인 192.168.0.1 같은 것이 IPv4 주소의 예시이다.

 

IPv6 주소는 일반적으로 16진수 형식(32개의 16진수가 8개의 블록으로 그룹화됨)으로 표현되며, 콜론이 4개의 16진수로 구성된 각 블록을 구분한다. IPv6 주소의 예는 다음과 같다: 2001:0db8:0000:0000:0008:0800:200c:417a

 

DHCP는 TCP/IP 네트워크에서 정적으로 할당된(=수동으로 구성된) IP 주소가 없는 장치에 동적으로 IP 주소를 할당하기 위해 사용되는 네트워크 관리 프로토콜이다. 부트스트랩 프로토콜(BOOTP)은 유닉스와 리눅스 TCP/IP 네트워크에서 일반적으로 사용되는 유사한 네트워크 관리 프로토콜이다. 정적으로 할당된 IP 주소가 없는 네트워크에 연결된 장치의 전원이 켜지면, 장치의 DHCP 클라이언트 소프트웨어는 UDP 포트 67에서 DHCPDISCOVER 메시지를 브로드캐스트한다. 클라이언트와 동일한 서브넷(또는 DHCP Helper 또는 DHCP 릴레이 에이전트가 구성된 경우 다른 서브넷)에 있는 DHCP 서버가 DHCPDISCOVER 메시지를 받으면, 클라이언트의 IP 주소를 예약하고 UDP 포트 68의 클라이언트에 DHCPOFFER 메시지를 보낸다. DHCPOFFER 메시지에는 클라이언트의 MAC 주소, 제공되는 IP 주소, 서브넷 마스크, 리스 기간, 제공된 DHCP 서버의 IP 주소가 포함된다. 클라이언트는 DHCPOFFER를 받으면, UDP 포트 67에서 DHC PREQUEST 메시지를 브로드캐스트하여 제공된 IP 주소를 요청한다. 클라이언트는 서브넷에 있는 여러 DHCP 서버로부터 DHCPOFFER 메시지를 받을 수 있지만, 한 가지 제안만 수락할 수 있다. DHC PREQUEST 메시지가 브로드캐스트되면 DHC PREQUEST 메시지에서 요청되지 않은(*사실상 수락됨) 제안을 보낸 다른 DHCP 서버는 제안을 철회한다. 마지막으로, 올바른 DHCP 서버가 DHC PREQUEST 메시지를 받으면, UDP 포트 68에서 DHCPACK 메시지를 보내고 IP 구성 프로세스가 완료된다.

DHCP 작동

 

네트워크 주소 변환(NAT)은 인터넷을 통한 통신이 필요할 때 내부 네트워크 장치에 할당된 라우팅할 수 없는 개인 IP 주소를 공용 IP 주소로 매핑하여 IP 주소를 가상화한다. NAT은 일반적으로 공용 IP 주소를 보존하기 위해 방화벽과 라우터에 구현된다.

 

IP 주소 지정 기본 사항
데이터 패킷은 IP 주소 지정 정보를 사용하여 TCP/IP 네트워크를 통해 라우팅된다. IP의 가장 널리 배포된 버전인 IPv4는 32비트의 논리적 IP 주소로 구성된다. 옥텟의 처음 4비트는 상위 비트라고 불리고, 옥텟의 첫 번째 비트는 최상위 비트라고 불린다. 옥텟의 마지막 4비트는 하위 비트라고 불리고, 옥텟의 마지막 비트는 최하위 비트라고 불린다.

 

아래의 그림에 나타낸 바와 같이, 각 비트 위치는 비트가 "on"(1)이면 그 값을 나타내고, 그렇지 않으면 비트의 값은 0("off" 또는 0)이다.

각 옥텟은 0~255의 값을 가진 8비트 숫자를 포함한다. 아래 그림은 이진법 표기의 옥텟 값의 부분 목록을 보여준다.

 

상위 비트로 표시되는 5개의 IPv4 주소 클래스는 아래의 표 2-4를 통해 정리한다.

 

 

주소 범위 127.0.0.1 ~ 127.255.255.255는 테스트 및 문제 해결에 사용되는 루프백 네트워크다. 127.0.0.1과 같은 루프백(또는 로컬 호스트) 주소로 전송된 패킷은 즉시 소스 디바이스로 라우팅된다.

 

서브넷 마스크는 IPv4 주소의 네트워크 부분을 숨기고 IP 주소의 호스트 부분만 남기는 숫자다. 서브넷 마스크의 네트워크 부분은 가장 중요한 비트로 시작하는 연속된 온(1) 비트로 표시된다. 예를 들어, 서브넷 마스크 255.255.255.0에서 처음 세 옥텟은 네트워크 부분을 나타내고 마지막 옥텟은 IP 주소의 호스트 부분을 나타낸다. 10진수 255는 이진법으로 1111 1111로 표시된다.

 

클래스 A, B, C 네트워크의 기본 서브넷 마스크는 다음과 같다.
① 클래스 A: 255.0.0.0
② 클래스 B: 255.255.0.0
③ 클래스 C: 255.255.255.0

 

다음과 같은 몇 가지 IPv4 주소 범위는 사설 네트워크에서 사용하도록 예약되어 있으며, 인터넷에서 라우팅할 수 없다.

① 10.0.0.0–10.255.255.255 (Class A)
② 172.16.0.0–172.31.255.255 (Class B)
③ 192.168.0.0–192.168.255.255 (Class C)

 

IPv4 주소의 32비트 주소 공간은 고유한 공용 IP 주소의 총 수를 약 43억 개로 제한한다. NAT이 널리 사용됨에 따라 IPv4 주소의 필연적인 고갈이 지연되었지만, 2018년에 조직에 할당할 수 있는 가용 IPv4 주소 풀이 공식적으로 고갈되었다. IPv6 주소는 약 3.4 x 10^38 고유 IP 주소를 제공하는 128비트 16진수 주소 공간을 사용하여, IPv4 주소 공간이 모두 소진되면 IPv4를 대체하도록 만들어졌다.

 

IPv6 주소는 32개의 16진수를 4개의 16진수로 구성된 8개의 16진수로 콜론으로 구분하여 표시한다. 16진수는 4비트로 표시되므로, 각 16비트는 16비트(4비트 16진수 4자리)이고, 16비트 6진수 8자리는 128비트다.

 

IPv6 주소는 두 개의 64비트 세그먼트로 더 나뉜다. 처음 64비트는 주소의 네트워크 부분을 나타내고, 마지막 64비트는 주소의 노드 또는 인터페이스 부분을 나타낸다. 네트워크 부분은 48비트 글로벌 네트워크 주소와 16비트 서브넷으로 더 세분화된다. 주소의 노드 또는 인터페이스 부분은 노드 또는 인터페이스의 MAC 주소에 기초한다.

 

IPv6 주소의 기본적인 포맷은 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx이다. 여기서 x는 16진수인 0~f를 나타낸다. 그러니 2001:0db8:0000:0000:0008:0800:200c:417a 같은 것이 IPv6의 예시라 할 수 있다.

 

한편, IETF(Internet Engineering Task Force)는 IPv6 주소를 단순화하기 위한 몇 가지 규칙을 정의했다.

① 개별 16진수 앞의 0은 생략 가능하지만, 다음 규칙에서 언급하는 경우를 제외하고 각 16진수는 최소한 1개의 16진수를 가져야 한다. 위의 예시에 이 규칙을 적용하면, 2001:db8:0:0:8:800:200c:417a라는 결과가 나온다.

 

② 두 개의 콜론(::)을 사용하여 16비트 0과 주소의 선행 또는 후행 0으로 구성된 하나 이상의 그룹을 나타낼 수 있다. 두 개의 콜론(::)은 IPv6 주소에 한 번만 나타날 수 있다. 위의 예시에 이 규칙을 적용하면, 2001:db8::8:800:200c:417a라는 결과가 나온다.

 

③ IPv4 및 IPv6 혼합 환경에서는 x:x:x:x:x;x:d.d.d.d 형식을 사용할 수 있다. 여기서 x는 주소의 상위 16비트 6진수 6개를 나타내고, d는 하위 4개를 나타낸다. 주소의 8비트 옥텟인 것이다. 예를 들어, 0db8:0:0:0:0:FFFF:129.144.52.38은 유효한 IPv6 주소다. 이 예시에 앞의 두 규칙을 적용하면 db8::ffff:129.144.52.38이라는 결과가 나온다.

 

IPv6 보안 기능은 RFC(Request for Comments) 7112에 명시되어 있으며, OSI 모델의 네트워크 계층에서 IPv6 헤더의 조각화 공격을 방지하고 인터넷 프로토콜 보안(IPsec) 구현을 위한 기술을 포함한다.

 

서브네팅 도입
서브네팅은 IP 주소를 네트워크와 호스트의 두 부분으로 분할하여 큰 네트워크를 더 작고 여러 개의 하위 네트워크로 분할하는 데 사용되는 기술이다. 서브네팅는 네트워크 트래픽을 제한하거나 서로 보이거나 연결할 수 있는 장치의 수를 제한하는 데 사용될 수 있다. 예를 들어, 서로 다른 부서 또는 지리적 위치를 서로 다른 서브넷에 할당하여 네트워크를 논리적으로 구성하는 데에도 일반적으로 사용된다. 아래 그림과 같이, B급 공용 IP 주소(172.168.0.0)를 할당받은 조직은 B급 네트워크의 기본 서브넷 마스크(255.255.0.0)를 사용하여 네트워크에서 최대 65,534개의 호스트를 사용하는 단일 네트워크로 이 주소 공간을 사용할 수 있다. 그러나 이렇게 평평한 대규모 네트워크는 관리하기가 어렵다. 대신에, 조직은 24비트 서브넷 마스크(255.255.255.0)를 사용하여 172.168.0.0 네트워크를 서브넷에 최대 254개의 호스트가 있는 최대 256개의 서로 다른 네트워크로 분리하고 각 서브넷을 조직의 다양한 사무실을 나타내는 서로 다른 지리적 위치에 할당할 수 있다. 라우터는 IP 주소와 서브넷 값(마스크)을 검사하고 네트워크 간에 패킷을 전달할지 여부를 결정한다. IP 주소 지정을 사용하면, 서브넷 마스크가 필수 요소다.

 

클래스 C IPv4 주소의 경우, 254개의 가능한 노드(또는 호스트) 주소(28개 또는 256개의 잠재적 주소)가 있지만, 각 네트워크에 대해 하나는 기본 네트워크 주소이고 다른 하나는 브로드캐스트 주소다. 일반적인 클래스 C 네트워크는 기본 24비트 서브넷 마스크(255.255.255.0)를 사용한다. 이 서브넷 마스크 값은 IPv4 주소의 네트워크 부분을 식별하며, 처음 세 개의 옥텟은 모두 하나다(이진 표기법에서는 111111, 10진수 표기법에서는 255). 마스크는 마지막 옥텟을 0(이진 표기법에서는 00000000)으로 표시한다. 기본 서브넷 마스크가 있는 클래스 C IPv4 주소의 경우, 마지막 옥텟은 IPv4 주소의 노드별 값이 할당되는 것이다.

 

예를 들어 IPv4 주소가 192.168.1.0이고 마스크 값이 255.255.255.0인 네트워크에서 주소의 네트워크 부분은 192.168.1이며, 사용 가능한 노드 주소는 254개(192.168.1.1 ~ 192.168.1.254)다. 첫 번째 주소(192.168.1.0)는 기본 네트워크이고, 마지막 주소(192.168.1.255)는 브로드캐스트 주소다.

 

클래스 A 및 클래스 B IPv4 주소는 기본 주소 할당에 클래스 C IPv4 주소보다 더 작은 마스크 값을 사용하고 더 많은 수의 노드를 지원한다. 클래스 A 네트워크는 기본 8비트(255.0.0.0) 서브넷 마스크를 사용하여 총 1600만 개(256 x 256 x 256) 이상의 사용 가능한 IPv4 노드 주소를 제공한다. 클래스 B 네트워크는 기본 16비트(255.255.0.0) 서브넷 마스크를 사용하여, 총 65,534개(256 x 256, 네트워크 주소 및 브로드캐스트 주소 제외)의 사용 가능한 IPv4 노드 주소를 제공한다.

 

IPv4 주소를 임의의 클래스 풀 8비트 경계(클래스 A 네트워크의 경우 8비트, 클래스 B 네트워크의 경우 16비트, 클래스 C 네트워크의 경우 24비트)를 따라 분할하는 서브네팅과 달리, 클래스리스 도메인 간 라우팅(CIDR)은 임의의 주소 비트 경계(VLSM)에 주소 공간을 할당한다. 예를 들어, CIDR을 사용하면, 클래스 A 네트워크에 24비트 마스크(기본값 8비트 255.0.0.0 마스크 대신 255.255.0)를 할당하여 서브넷을 254개 주소로 제한하거나, 23비트 마스크(255.255.254.0)를 할당하여 서브넷을 512개 주소로 제한할 수 있다.

 

CIDR은 여러 개의 인접한 네트워크 프리픽스(수퍼네팅)를 집계하여 인터넷 라우터의 라우팅 테이블 크기를 줄이는 데 사용되며, 공용 IPv4 주소의 고갈을 늦추는 데도 도움이 된다.

 

IP 주소는 넷비트 또는 CIDR 표기법을 사용하여 서브넷 마스크 값으로 나타낼 수 있다. 넷비트 값은 서브넷 마스크의 개수를 나타내며, IP 주소 뒤에 슬래시로 구분되어 표시된다. 예를 들어 192.168.1.0/24는 24개로 구성된 서브넷 마스크를 나타내는 것은 다음과 같다.

 

2진 표기법으로는 11111111.11111111.11111111.00000000,

10진 표기법으로는 255.255.255.0가 된다.

728x90