나의 공부기록

04. 동적 라우팅(Dynamic Routing) & OSPF & DHCP 본문

CS/네트워크

04. 동적 라우팅(Dynamic Routing) & OSPF & DHCP

나의 개발자 2025. 1. 4. 19:53

 

동적 라우팅 프로토콜(Dynamic Routing Protocol)

  • Dynamic = 유동 + 자동 
  • PC의 IP는 배정받은 후, 일정기간 동안 유지됨
    ➡️단, 일정기간 동안 사용하지 않으면 IP를 반납
  • 크게 디스턴스 벡터, 링크 스테이트로 나뉘고 구분마다 다양한 프로토콜이 존재
    ➡️ 해당 글에서는 현업에서 제일 많이 사용하는 링크 스테이트의 OSPF 프로토콜만 이해할 예정

 

동적 라우팅 VS 정적 라우팅 차이점

  • 정적 라우팅은 중간에 경로에 문제가 발생하면 라우팅 실패
  • 동적 라우팅은 중간에 경로 문제 발생 시, 스스로 경로를 재구성하여 라우팅 성공

 


 

OSPF(Open Shortest Path First)

  • 인접라우터들(네이버)로 부터 해당 라우터 주변의 객관적인 사실을 전달받아서 자신이 직접 라우팅 테이블 구성
    ➡️ 객관적 사실 = f0/0에는 100 Mbps 회선으로 A라는 라우터가 존재
  • 최단 경로를 스스로 구하는 프로토콜(동적 라우팅의 프로토콜)

 

Area란?

Area 0으로 구성된 네트워크

  • 네트워크를 논리적으로 나눈 단위로, Area 0(=BackBone Area)는 필수로 존재해야 함

👉 BackBone Area 

  • 여러 네트워크나 서브넷을 연결하고 트래픽을 효과적으로 전달하는 역할
    = 다른 영역 간의 트래픽을 중계
  • OSPF에서 BackBone Area는 항상 Area 0으로 정의

 

[ OSPF 설정 방법 ]

1. 각 라우터의 기본설정(ospf 10 설정)

Router(config-if)# <라우팅 프로토콜> ospf <Process-ID>

예시) Router(config-if)# router ospf 10 (= router os 10)

➡️ Process-ID는 동일하지 않아도 되지만, 10으로 일치시키는 게 좋음

➡️ OSPF 설정 모드이며, Process-ID는 10

 

2. 라우터 설정모드에서 router-id 설정

Router(config-router)#router-id <라우터 아이디>

예시) Router(config-router)# router-id 1.1.1.1

➡️ 각 라우터마다 라우터를 식별하기 위해, router-id를 설정

 

➡️ 반드시 다음에 올 'network' 명령어 이전에 실행해야 함

      ( network 명령어를 실행하면 삭제하는 것 아니면 수정 불가능 )

 

3. 자신의 IP를 Area에 광고

Router(config-router)# network <자신의 IP> <Wildcard Mask> Area <Area 번호>

예시) Router(config-router)# network 20.20.20.40    0.0.0.0  area 0
= Router(config-router)# net 20.20.20.40    0.0.0.0  a 0

➡️ Area 0에 포함된 인접한 라우터에게 나(=20.20.20.40)를 광고하는 것

➡️network = 광고(Advertising)

 

🌟라우터가 속해있는 모든 네트워크/인터페이스를 보면서 하면 좋음

➡️ Router(config-router)# do sh ip int br

➡️해당 명령어를 사용하면, 광고할 대상과 장비의 물리적 동작, 논리적인 설정을 확인 가능

 

 

👉 Wildcard Mask란?

  • 라우팅 프로토콜에서는 서브넷마스크가 아니라 와일드카드 마스크를 사용
  • 서브넷 마스크를 반전시킨 것으로, 와일드카드 마스크는 1: 자유, 0: 고정
    * SM : 255.255.255.255 ➡️ WM : 0.0.0.0 
  • 서브넷 마스크 : 호스트의 규모, 와일드카드 마스크 : 네트워크의 규모
  • IP를 필터링하는데 사용
IP 0.0.0.0 WM 0.0.0.254
➡️ IP의 마지막 옥텟 : 00000000(0)
➡️ WM의 마지막 옥텟 : 11111110(254)

❌IP의 마지막 비트가 고정이고 나머지 비트는 자유이므로,
00000000 = 0 가능
00000001 = 1 불가능➡️ 마지막 비트가 0으로 고정되지 않았기 때문에
00000010 = 2 가능
00000011 = 3 불가능➡️ 마지막 비트가 0으로 고정되지 않았기 때문에
👉 Area 0에는 홀수 IP가 올 수 없도록 필터링

 

 


 

라우팅 프로토콜에서 network의 의미

  • 내가 속해있는 네트워크 정보 광고
  • Router(config-router)#net 172.16.101.89 0.0.0.0 a 0
    ➡️ 172.16.101.89/32는 단일 호스트
    ➡️ 단일 호스트를 광고하면 결국에는 해당 인터페이스가 속한 네트워크를 광고해 주는 것에 준하는 의미
    ➡️ 원칙대로는 속한 네트워크의 대역 자체를 광고해야 함

 

  • Router(config-router)# net 172.16.101.88 0.0.0.3 a 0
    ➡️ 이렇게 해야지만, 이미 광고를 하는 라우터가 해당 인터페이스가 속한 네트워크에 대한 정보를 가지고 있어서 자동으로 매칭해 줌
    ➡️ 특수한 케이스를 제외하고는 자기 자신의 IP를 광고하는 것이 의례적임

 

🌟광고해야 하는 이웃정보를 확인하는 명령어

  • Router(config)#do sh ip os(ospf) nei(= neighbor)
    ➡️ OSPF 구성정보 확인

 

🌟router-id 설정 초기화 명령어

  • Router(config)#no router os 10
    ➡️ router-id 잘못 설정하면 수정❌, 그래서 설정을 삭제 후에 다시 설정
    ➡️ 설정 확인을 위해서는 do sh run / do sh ip os nei 명령어로 확인 가능

 

 

DHCP(Dynamic Host Configuration Protocol)

  • '자동 + 유동'의 의미
  • 호스트들에게 자동으로 IP 정보를 부여하는 프로토콜
    ➡️IP 정보 = IP, SM, Default Gateway ( + DNS 서버 정보 )
  • '항상' 정보를 제공받는 클라이언트(Client) 입장을 고려해야 함
  • UDP( server : 67, client : 68 )
    • 서버들은 주로 server - client로 구성됨
  • IP가 없는 장비에도 IP를 뿌려주는 프로토콜
    ➡️IP가 없어도 됨

 

DHCP의 IP 부여 과정

  • Discover, Offer, Request, Ack 절차는 모두 브로드캐스트 메세지를 보냄
  • 브로드캐스트 도메인 = 네트워크

DHCP 할당 과정

 

  1. Discover
    • 브로드캐스트 메세지로 IP를 부여해 줄 DHCP Server를 찾음
      ➡️ Client : "나한테 IP 할당해 줄, DHCP Server 있어?"
      ➡️ 같은 네트워크에 속한 곳에만 전달됨

  2. Offer
    • DHCP Server에서 할당할 만한 IP 정보를 전달
      ➡️ DHCP Server : "사용 가능한 IP 목록이 이렇게 있는데, 골라봐"
  3. Request
    • Client가 IP 선택
      ➡️ Client : "나 이 IP 사용할래(=PICK), 사용해도 괜찮아?"
  4. Ack
    • 선택된 IP를 사용할 수 있는지 확인 후, IP 사용 허락
      ➡️ DHCP Server : "응응, 그 IP 사용해도 괜찮아!"

✅ Ack 절차까지 진행된 이후에, IP 부여 확정


[ DHCP 설정 예외 상황 ]

  • DHCP Server에서 IP를 부여하는 과정에서 Static으로 동일한 IP를 사용하는 경우
    ➡️ gratuitous ARP 과정 발생
  • Gratuitous ARP
    • 선택한 IP를 할당받고 싶은데, IP 사용 가능한지 확인하는 과정
    • gratuitous ARP 과정은 DHCP Server가 브로드캐스트 메세지를 주고받을 때, 포함됨

 

✅ICMP과 DHCP 비교

  • ICMP
    • 3 계층의 프로토콜로, IP를 가지고 있음
    • IP 기반으로 Mac 주소를 파악
      ➡️ 라우터의 라우팅 테이블로 IP 주소와 Mac 주소를 매칭
  • DHCP
    • 7 계층의 프로토콜로, IP를 가지고 있지 않은 경우에도 사용할 수 있음
    • 네트워크 당 DHCP Server는 하나가 가장 적합
    • 해당 과정은 모두 브로드캐스트 메세지
      ➡️ 1:1로 요청하는 Client나 Server로 바로 메세지가 전달되는 것 ❌

 

[ DHCP 설정 방법 ]

1. DHCP Pool 설정

Router(config)# ip dhcp pool <pool-id>

Router(config)#ip dhcp pool 1
➡️ 1이라는 이름을 가지는 pool 설정

 

2. IP를 뿌려줄 대역(=범위) 설정

Router(dhcp-config)#network <대표 주소> <서브넷마스크>

Router(dhcp-config)#network 192.168.10.0 255.255.255.0

➡️ network = 클라이언트가 갖게 될 네트워크 대역( != OSPF의 명령어인 network와 다른 의미)

➡️ 대역 설정할 때는 반드시 '클라이언트'의 입장 고려해서 설정

 

3. 클라이언트 입장에서의 Gateway 설정

Router(dhcp-config)#default-router <default-gateway>

Router(dhcp-config)#default-router 192.168.10.250

➡️ 반드시 '클라이언트' 입장을 고려해서 gateway를 설정

 

4. 옵션 - 자동 할당될 IP 목록에서 제외할 IP 등록

Router(config)# ip dhcp excluded-address <제외할 IP>

Router(config)# ip dhcp excluded-address 192.168.10.250
➡️ 192.168.10.250이라는 네트워크의 GW 제외

---------------------------------------------------------------------------------------------------------------

Router(config)# ip dhcp excluded-address <제외할 범위의 첫 번째 IP> <제외할 범위의 마지막 IP>

Router(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.99
➡️ 192.168.10.1 ~ 192.168.10.99 범위의 IP 제외