상세 컨텐츠

본문 제목

IP를 확인하는 과정에서 IP를 배정하기 까지 (RARP, BTOOP, DHCP)

네트워크엔지니어/일하다가알게되는것들

by 척척석사 민준 2025. 5. 15. 00:51

본문

728x90

네트워크에서 가장 중요한 건 주소인 IP 입니다. 말그대로 주소입니다. 대한민국 경기도 의정부시 민락동 이런식으로 전세계가 약속한 주소입니다. 그리고 MAC주소는 컴퓨터의 물리적인 주소입니다. 위도, 경도라고 생각하면 되겠네요. 

전세계가 연결되어 있는 인터넷에서 IP가 없으면 아무것도 못합니다. (클라우드 같이 물리적인 장비없이도 컴퓨터를 사용할 수 있지만 통신을 위해 IP는 필요하고 알아야 합니다)  

그런데 컴퓨터를 쓰면서, 핸드폰을 사용하면서 단 한번도 내 IP를 입력한 적이 없을껍니다. IP를 자동으로 받고 있기 때문이죠.

자동으로 IP를 받지 못하면 수백수천개의 컴퓨터에 IP 주소를 하나하나, 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소까지 네트워크 설정에 필요한 모든걸 수동으로 입력해야 합니다. PC가 바뀌거나 망가지면 이것또한 관리를 해야하구요. 혼란스럽고 지난한 과정일껍니다. 초창기 인터넷이 보급되던 2000년대에 선배들은 PC방에 개통하러 갈때 실제로 그런 업무를 했다고 하는데 상상만 해도 고통스럽니다. (기업용 전용회선은 고정IP를 사용하기에 어느정도는 이런 작업이 필요합니다)

내 하드웨어 주소는 아는데 IP는 뭐야? : RARP    

그래서 똑똑한 사람들이 MAC주소(하드웨어주소)를 가지고 IP주소를 알아내는 RARP를 생각해냈습니다.

ARP(Address Resolution Protocol)는 IP주소를 알고 MAC주소를 알아내는 프로토콜이므로 이와 반대로 MAC주소를 가지고 IP를 알아내는 Reverse ARP 인거죠. RARP 서버로 내 IP주소를 물어보면 내 IP주소를 알고 있는 RARP 서버가 나에게 IP를 알려줍니다. 나는 IP를 기억하고 있지않아도 자동으로 IP를 설정할 수 있는거죠.

하지만 RARP의 문제점은 네트워크마다 RARP 서버가 있어야 합니다. RARP 요청이 브로드캐스트 이기 때문이죠. RARP 서버구성도 사람이 해줘야 하기에 여전히 불편합니다. 게다가 RARP는 딱 IP만 알려주고 서브넷마스크, 게이트웨이, DNS서버주소는 알려주지 않았습니다.

IP 주소 말고 다른 것도 알려줘 : BTOOP 

RARP보다 좀더 나은 방법을 위해 나온게 BOOTP (Bootstrap Protocol) 입니다. 컴퓨터가 부팅할 때 필요한 설정 정보를 얻을 수 있도록 설계되었어요. 이름부터가 자기 신발끈을 스스로 묶고 일어선다"는 영어 관용구 "pull oneself up by one's bootstraps"에서 나왔습니다. BTOOP는 IP주소 뿐만 아니라 부팅 서버 위치, 부팅 파일 이름 등을 제공하여 시스템이 부팅될 때 스스로 네트워크 설정을 하게 됩니다. 결정적으로 RARP랑 다르게 요청을 라우터 밖으로 전달하는 릴레이 에이전트(Relay Agent) 기능이 있어서 네트워크마다 서버가 없어도 IP를 자동으로 배정할 수 있게 되었습니다. 릴레이 에이전트의 핵심기능은 브로드캐스트를 유니캐스트로 바꿔서 LAN 네트워크(브로드캐스트 영역) 바깥으로 전달하는 것입니다. 이런 기능으로 중앙 BOOTP서버 하나만 있어도 여러 네트워크의 컴퓨터에게 설정정보를 전달해 줄 수 있게합니다. 하지만 여전히 MAC-IP 주소 목록은 서버에 사용자가 직접개입을 해야했습니다. IP주소를 동적으로 할당하지는 못했죠. 모든 PC MAC에 따른 IP를 관리해야 했습니다.

완전히 자동으로 IP주소 관리도 해줄게! : DHCP

BOOTP의 핵심기능인 IP주소 외의 다양한 네트워크 설정을 자동으로 하도록 한다. 릴레이 에이전트로 네트워크 바깥으로 메시지를 전달하게 한다는 가져가면서 동적으로 IP를 관리하는 기능까지 가진게 DHCP (Dynamic Host Configuration Protocol) 입니다. RARP나 BTOOP이 IP를 알려주는 프로토콜이라면 DHCP는 본격적으로 IP를 관리하는 프로토콜입니다.

DHCP는 DHCP 서버에 지정된 IP Pool에서 사용가능한 주소를 클라이언트(PC)에게 "일정시간 (lease time) " 빌려줍니다.

IP주소, 서브넷 마스크, DNS서버 주소 등 네트워크 사용에 필요한 모든 정보를 한번에 제공해줍니다.

빌려준 주소를 언제까지 쓸 수 있는지, 빌려간 클라이언트의 MAC은 뭔지, 장비정보는 뭔지 전부 알고 있으면서 IP 충돌을 방지 합니다. 

BOOTP처럼 릴레이 에이전트가 있어야 DHCP를 중앙으로 관리 할 수 있습니다. 홈 인터넷을 집선하는 OLT(Optical Line Terminal)이라는 L3 스위치(라우터)가 릴레이 에이전트 역할을 해줍니다. PC에서 OLT로 IP배정해 달라는 Discover를 브로드캐스트로 보내면 OLT에서 유니캐스트로 변환해서(목적지 IP를 DHCP 서버 VIP로 찍어서) DHCP서버로 IP요청을 보냅니다. (DHCP 서버하나에 수많은 OLT가 릴레이 에이전트로 붙어있습니다) 

OLT의 핵심역할은 DHCP Relay Agent

OLT를 config 할때 중요한게 relay agnet로 동작하게 하는 것입니다.

그래서 dhcp helper address를 설정해서 DHCP의 VIP(Virtual IP)로 요청을 보낼 수 있도록 합니다.

DHCP 서버로 Discover를 relay해서 보낼 때 도착지 IP는 DHCP VIP로 보내고 출발지는 OLT의 인터페이스 IP로 보냅니다. 그래야 DHCP 서버가 OLT의 인터페이스 IP를 보고 해당 OLT로 IP를 할당할 수 있기 때문입니다. 그래서 OLT는 다른 라우터와 다르게 인터페이스 IP를 설정해야 합니다. 그리고 그 인터페이스 IP가 DHCP 서버상에서 GIADDR가 되어서 IP Pool을 찾아내는 키값이 되는거죠. OLT에 100.100.100.128/27 로 인터페이스 IP가 설정되어 있으면 DHCP 서버는 해당 OLT에 속해있는 PC에 IP를 배정할 때 100.100.100.129 ~ 158의 호스트 IP만을 배정합니다. OLT가 Relay agent 역할을 하니까 일반 사용자들은 IPv4 설정을 자동을 해놓아도 아무 문제없이 사용할 수 있게 되는 것입니다.

OLT는 홈 인터넷을 집선한 L3 스위치이기 때문에 IP를 100.100.100.129에서 100.100.100.130으로 바꿀 수는 있어도 (윈도우 CMD에서 ipconfig / renew로 IP를 반납하고 새 IP를 받을 수 있다) 200.200.200.129로는 받을 수가 없다. OLT 인터페이스에 설정된 IP Pool이 아닌 다른 IP는 물리적으로 할당 받을 수가 없다. 어떤 고객이 자기 IP가 어느 사이트에서 차단이 되었다고 완전 다른 IP Pool로 받을 수 없냐는 문의가 온적이 있었다. OLT에 하나의 IP Pool만 있는게 아니기에 DHCP서버에서 고객 MAC을 다른 IP Pool로 변경해가며 차단되지 않은 IP Pool을 찾아줘서 해결했었는데 만약 OLT의 모든 인터페이스 IP가 차단된 경우라면 물리적으로 고객이 다른 OLT가 있는 곳에서 인터넷을 접속하지 않는 한 불가능하다. 고객은 랜덤하게 IP를 배정받는게 아니라 고객이 접속해있는 OLT 인터페이스에 설정된 IP Pool에서만 DHCP 서버가 배정해주기 때문입니다. 

 

 

728x90

관련글 더보기