CCNA 200-301

CCNA 200–301 따라잡기 22장

DHCP Relay 실습, 다른 VLAN의 DHCP 서버에서 IP 주소 받기

이번 장은 CCNA 실습 예제 2편이다.

주제는 DHCP relay다.

DHCP는 CCNA에서 자주 나오는 기본 서비스지만, 단순히 “IP 주소를 자동으로 주는 기능”으로만 외우면 문제를 놓치기 쉽다.

시험과 실무에서 중요한 포인트는 DHCP Discover가 broadcast로 시작한다는 점이다.

Broadcast는 기본적으로 router를 넘어가지 않는다.

그래서 DHCP server가 client와 다른 subnet에 있으면 gateway 장비가 DHCP 요청을 대신 전달해줘야 한다.

Cisco 장비에서는 보통 ip helper-address 명령을 사용한다.

이번 lab의 목표는 다음과 같다.

Client VLAN과 Server VLAN을 분리한다.

DHCP server를 client와 다른 subnet에 둔다.

Client가 처음에는 IP 주소를 받지 못하는 상황을 확인한다.

Gateway interface에 ip helper-address를 설정한다.

Client가 DHCP server에서 정상적으로 IP 주소를 받는지 확인한다.

  1. DHCP Relay가 필요한 이유

DHCP client는 처음에 자기 IP 주소를 모른다.

DHCP server 주소도 모른다.

그래서 client는 DHCP Discover를 broadcast로 보낸다.

같은 VLAN 안에 DHCP server가 있으면 server가 이 broadcast를 직접 받을 수 있다.

하지만 DHCP server가 다른 subnet에 있으면 문제가 생긴다.

Router는 기본적으로 Layer 2 broadcast를 다른 subnet으로 전달하지 않는다.

따라서 client VLAN의 broadcast는 server VLAN으로 넘어가지 않는다.

이때 gateway가 DHCP relay agent 역할을 한다.

Gateway는 client의 broadcast 요청을 받아 DHCP server로 unicast 전달한다.

DHCP server는 응답을 gateway로 보내고, gateway는 다시 client에게 전달한다.

이 흐름을 이해해야 DHCP relay 문제를 풀 수 있다.

  1. 실습 토폴로지

이번 실습에는 다음 장비를 사용한다.

PC-A 1대.

Switch 1대.

Router 또는 Layer 3 switch 1대.

DHCP Server 1대.

PC-A는 VLAN 10에 둔다.

DHCP Server는 VLAN 100에 둔다.

Router는 VLAN 10과 VLAN 100의 gateway 역할을 한다.

VLAN 10에는 DHCP server가 직접 없다.

따라서 VLAN 10 gateway interface에 DHCP relay 설정이 필요하다.

  1. 주소 계획

주소 계획은 다음과 같다.

VLAN 10은 client network다.

Network는 192.168.10.0/24다.

Gateway는 192.168.10.1이다.

Client는 DHCP로 주소를 받을 예정이다.

VLAN 100은 server network다.

Network는 172.16.100.0/24다.

Gateway는 172.16.100.1이다.

DHCP server IP는 172.16.100.10이다.

DHCP server에는 VLAN 10용 pool을 만든다.

Pool network는 192.168.10.0/24다.

Default gateway 옵션은 192.168.10.1이다.

DNS server 옵션은 예제로 8.8.8.8을 사용한다.

  1. DHCP 동작 흐름

DHCP 기본 흐름은 DORA로 기억한다.

Discover.

Offer.

Request.

Ack.

Client는 Discover를 broadcast로 보낸다.

Server는 Offer로 사용할 수 있는 IP 주소를 제안한다.

Client는 Request로 해당 주소를 사용하겠다고 요청한다.

Server는 Ack로 임대를 확정한다.

DHCP relay가 들어가면 이 흐름이 조금 달라 보인다.

Client 입장에서는 여전히 broadcast로 시작한다.

Gateway는 이 broadcast를 받아 DHCP server로 전달한다.

Server는 client network에 맞는 pool을 선택해 응답한다.

Gateway는 응답을 client 쪽으로 다시 전달한다.

  1. Switch 설정 — VLAN 만들기

먼저 switch에서 VLAN 10과 VLAN 100을 만든다.

``` enable configure terminal

vlan 10 name CLIENTS

vlan 100 name SERVERS ```

PC-A가 연결된 port를 VLAN 10 access port로 설정한다.

interface fastEthernet0/1 switchport mode access switchport access vlan 10

DHCP server가 같은 switch에 직접 연결되어 있다면 server port를 VLAN 100 access port로 설정한다.

interface fastEthernet0/2 switchport mode access switchport access vlan 100

Router와 연결되는 port는 trunk로 구성한다.

interface gigabitEthernet0/1 switchport mode trunk switchport trunk allowed vlan 10,100

  1. Router 설정 — Subinterface 구성

Router-on-a-stick 구조라면 router physical interface 아래에 subinterface를 만든다.

먼저 physical interface를 켠다.

``` enable configure terminal

interface gigabitEthernet0/0 no shutdown ```

VLAN 10 gateway subinterface를 만든다.

interface gigabitEthernet0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0

VLAN 100 gateway subinterface를 만든다.

interface gigabitEthernet0/0.100 encapsulation dot1Q 100 ip address 172.16.100.1 255.255.255.0

여기까지는 inter-VLAN routing 구성이다.

아직 DHCP relay는 설정하지 않았다.

  1. DHCP Server 설정

DHCP server에는 VLAN 10 client에게 줄 pool이 필요하다.

Packet Tracer의 Server 장비를 기준으로 보면 Services 탭에서 DHCP를 켜고 pool을 만든다.

Pool name은 VLAN10_POOL처럼 지정한다.

Default gateway는 192.168.10.1이다.

DNS server는 8.8.8.8 같은 값을 넣는다.

Start IP address는 192.168.10.100으로 잡을 수 있다.

Subnet mask는 255.255.255.0이다.

Maximum users는 필요한 만큼 지정한다.

중요한 점은 DHCP server 자신의 IP가 172.16.100.10이라는 것이다.

Server는 VLAN 100에 있지만, VLAN 10 client에게 줄 주소 pool을 가지고 있다.

  1. 실패 상태 확인 — Relay 설정 전

이제 PC-A를 DHCP로 설정한다.

아직 router에 ip helper-address를 넣지 않았다면 PC-A는 IP 주소를 받지 못할 가능성이 높다.

이 상태는 정상적인 실패다.

DHCP Discover가 VLAN 10 broadcast로 나가지만, router가 그 broadcast를 VLAN 100으로 전달하지 않기 때문이다.

Packet Tracer에서는 PC가 APIPA 주소를 받거나, DHCP 요청이 실패한 것처럼 보일 수 있다.

APIPA는 169.254.0.0/16 범위다.

이 주소를 받았다면 DHCP server에서 정상 주소를 받지 못했다는 신호로 볼 수 있다.

  1. Router 설정 — ip helper-address

DHCP relay 설정은 client VLAN gateway interface에 넣는다.

여기서는 VLAN 10 client가 DHCP server를 찾아야 하므로 G0/0.10에 설정한다.

interface gigabitEthernet0/0.10 ip helper-address 172.16.100.10

중요한 점은 server VLAN interface가 아니라 client VLAN interface에 넣는다는 것이다.

Client의 broadcast를 처음 받는 곳이 VLAN 10 gateway이기 때문이다.

따라서 relay 설정 위치는 “DHCP client가 있는 subnet의 gateway interface”라고 기억하면 된다.

  1. 다시 DHCP 요청하기

Get David Lee’s stories in your inbox

Join Medium for free to get updates from this writer.

Subscribe

Subscribe

Remember me for faster sign in

PC-A에서 DHCP를 다시 시도한다.

Packet Tracer에서는 PC IP 설정 화면에서 DHCP를 다시 누르거나, command prompt에서 주소를 갱신하는 방식으로 확인할 수 있다.

정상이라면 PC-A는 192.168.10.0/24 범위의 주소를 받는다.

예를 들어 192.168.10.100을 받을 수 있다.

Default gateway는 192.168.10.1이어야 한다.

DNS server는 DHCP pool에 넣은 값이어야 한다.

  1. 검증 1 — Client IP 확인

PC-A에서 IP 설정을 확인한다.

확인할 항목은 다음과 같다.

IP address가 192.168.10.0/24 범위인가?

Subnet mask가 255.255.255.0인가?

Default gateway가 192.168.10.1인가?

DNS server가 pool 설정과 일치하는가?

169.254.x.x 주소가 보이면 DHCP 실패 상태로 의심한다.

  1. 검증 2 — Gateway Ping

PC-A에서 gateway로 ping을 보낸다.

ping 192.168.10.1

성공해야 한다.

이 ping이 실패하면 DHCP relay 이전에 VLAN access port, trunk, router subinterface, PC IP 설정을 먼저 봐야 한다.

DHCP로 주소를 받았더라도 gateway ping이 실패하면 실제 통신이 정상이라고 볼 수 없다.

  1. 검증 3 — DHCP Server Ping

PC-A에서 DHCP server로 ping을 보낸다.

ping 172.16.100.10

성공해야 한다.

이 ping은 inter-VLAN routing이 정상인지 확인하는 데도 도움이 된다.

실패한다면 VLAN 100 gateway, server default gateway, routing table, trunk allowed VLAN을 확인한다.

  1. 검증 4 — Router 상태 확인

Router에서 interface 상태를 본다.

show ip interface brief

G0/0.10과 G0/0.100이 up/up인지 확인한다.

Router 설정도 확인한다.

show running-config

G0/0.10 아래에 ip helper-address 172.16.100.10이 있는지 확인한다.

G0/0.100 아래에 넣었다면 위치가 잘못된 것이다.

  1. 검증 5 — Switch Trunk 확인

Switch에서 trunk 상태를 확인한다.

show interfaces trunk

Allowed VLAN에 10과 100이 포함되어야 한다.

VLAN 10이 빠지면 client traffic이 router로 가지 못한다.

VLAN 100이 빠지면 DHCP server 쪽 traffic이 정상적으로 전달되지 못한다.

Switch에서 VLAN membership도 확인한다.

show vlan brief

PC-A port가 VLAN 10에 있어야 한다.

DHCP server port가 VLAN 100에 있어야 한다.

  1. 자주 나는 오류 1 — ip helper-address 위치 오류

가장 흔한 실수는 ip helper-address를 server VLAN interface에 넣는 것이다.

하지만 relay 설정은 client VLAN gateway interface에 넣어야 한다.

이 lab에서는 G0/0.10이 맞다.

G0/0.100이 아니다.

이유는 간단하다.

DHCP Discover broadcast를 처음 받는 gateway가 G0/0.10이기 때문이다.

  1. 자주 나는 오류 2 — DHCP Pool Gateway 오류

DHCP pool의 default gateway 옵션이 틀리면 client가 IP는 받아도 다른 subnet으로 통신하지 못한다.

VLAN 10 client의 gateway는 192.168.10.1이어야 한다.

Pool에서 gateway를 172.16.100.1로 넣으면 안 된다.

DHCP server가 VLAN 100에 있다고 해서 client gateway도 VLAN 100 gateway가 되는 것은 아니다.

Client의 default gateway는 client 자신이 속한 subnet의 router interface다.

  1. 자주 나는 오류 3 — Server Default Gateway 누락

DHCP server도 자기 default gateway가 필요하다.

Server IP가 172.16.100.10/24라면 default gateway는 172.16.100.1이다.

Server default gateway가 없으면 client에게 응답을 보내는 과정에서 문제가 생길 수 있다.

Packet Tracer에서도 server gateway 설정을 빼먹으면 이상하게 보이는 문제가 자주 생긴다.

  1. 자주 나는 오류 4 — Trunk Allowed VLAN 누락

Switch-router link가 trunk여도 allowed VLAN에서 필요한 VLAN이 빠질 수 있다.

이 lab에서는 VLAN 10과 VLAN 100이 모두 지나가야 한다.

확인 명령어는 다음과 같다.

show interfaces trunk

필요하면 다음처럼 수정한다.

interface gigabitEthernet0/1 switchport trunk allowed vlan 10,100

  1. 자주 나는 오류 5 — DHCP Server Pool Network 오류

DHCP server pool network가 client subnet과 맞지 않으면 client가 올바른 주소를 받지 못한다.

VLAN 10 client에게 줄 pool은 192.168.10.0/24여야 한다.

Server가 있는 VLAN 100의 주소인 172.16.100.0/24를 pool로 넣으면 목적이 달라진다.

DHCP server 위치와 DHCP pool network를 구분해야 한다.

Server는 VLAN 100에 있지만, VLAN 10 client용 pool을 줄 수 있다.

  1. Troubleshooting 순서

DHCP relay가 안 될 때는 다음 순서로 확인한다.

PC port가 올바른 VLAN에 있는가?

Switch-router trunk가 정상인가?

Allowed VLAN에 client VLAN과 server VLAN이 모두 있는가?

Router subinterface가 up/up인가?

Client VLAN gateway interface에 ip helper-address가 있는가?

ip helper-address가 올바른 DHCP server IP를 가리키는가?

DHCP server에 client subnet용 pool이 있는가?

Pool의 default gateway가 client subnet gateway인가?

DHCP server 자신의 default gateway가 설정되어 있는가?

PC가 APIPA 주소를 받은 것은 아닌가?

이 순서대로 보면 대부분의 DHCP relay 문제를 찾을 수 있다.

  1. 시험에서 나오는 방식

시험에서는 DHCP relay를 설정하라고 직접 묻기보다 원인을 고르게 할 수 있다.

예를 들어 client가 169.254.x.x 주소를 받았다고 보여줄 수 있다.

또는 DHCP server가 다른 subnet에 있는데 router interface에 helper address가 없는 설정을 보여줄 수 있다.

또는 helper address가 server VLAN interface에 들어간 잘못된 구성을 보여줄 수 있다.

문제의 핵심 질문은 다음과 같다.

DHCP server가 client와 같은 subnet에 있는가?

다른 subnet이라면 relay가 있는가?

Relay는 client gateway interface에 설정되어 있는가?

Helper address는 실제 DHCP server IP를 가리키는가?

DHCP pool은 client subnet에 맞는가?

  1. 마지막 정리

DHCP Discover는 broadcast로 시작한다.

Router는 기본적으로 broadcast를 다른 subnet으로 넘기지 않는다.

DHCP server가 다른 subnet에 있으면 DHCP relay가 필요하다.

Cisco 장비에서는 ip helper-address를 사용한다.

ip helper-address는 client VLAN gateway interface에 설정한다.

DHCP pool의 default gateway는 client subnet의 gateway여야 한다.

Server도 자기 default gateway가 필요하다.

검증은 PC IP 확인, gateway ping, server ping, router helper 설정, trunk allowed VLAN 순서로 진행한다.

이 lab을 이해하면 DHCP 문제를 단순 암기가 아니라 packet 흐름으로 풀 수 있다.

  1. 다음 글 예고

다음 글에서는 CCNA 실습 예제 3편으로 Static Route와 OSPF 기본 lab을 만든다.

Router 3대를 연결하고 static route와 OSPF를 각각 구성한 뒤, show ip route와 show ip ospf neighbor로 경로 학습 과정을 비교한다.

댓글 0