DHCP 클라이언트는 여러 DHCPOFFERS 중 어떤 것을 수락해야하는지 어떻게 알 수 있습니까?


16

그림과 같은 네트워크가 있다고 상상해보십시오. 하나의 레이어 2 네트워크에 6 개의 호스트가 있으며 VLAN이 없습니다. 네트워크는 각각 하나의 DHCP 서버와 함께 두 개의 서브넷으로 분할됩니다. DHCP 서버에는 고정 IP 주소가 있으므로 어떤 서브넷에 속하는지 알 수 있습니다.

그런 다음 새 클라이언트가 연결됩니다. 어떤 서브넷에 있어야하는지 알지 못하고 DHCPDISCOVER를 이더넷 브로드 캐스트 255.255.255.255로 전송하므로 두 DHCP 서버로 이동합니다. 두 서버 모두 오퍼로 응답합니다. 이제 내 질문은 다음과 같습니다. 클라이언트는 어떤 DHCPOFFER를 받아 들여야하는지 어떻게 알 수 있습니까?

DHCP 상황


이 질문 과 답변을 비교하십시오 .
— Kamil Maciorowski

다른 관련 질문이 있습니다.
— kasperd

1
"이더넷 브로드 캐스트 255.255.255.255"-이더넷 주소가 아닌 로컬 네트워크의 IP 브로드 캐스트 주소입니다. 초기 DHCP DISCOVER 메시지는 이더넷 브로드 캐스트 주소 ff : ff : ff : ff : ff : ff를 사용할 가능성이 높지만 실제로는 동일하지 않습니다.
— ilkkachu

답변:


26

가장 간단한 답변-먼저 제공됩니다.

여러 개의 VLAN이 있고 10.10.10.0/24가 10.10.20.0/24와 다른 VLAN에있는 경우 브로드 캐스트는 VLAN을 통과하지 않습니다.

DHCP 서버가 클라이언트에 대해 별도의 VLAN에있는 경우 VLAN 간 라우팅 인터페이스의 iphelper는 브로드 캐스트를 올바른 위치로 보냅니다.

동일한 VLAN 내에 서로 다른 서브넷을 제공하는 두 개의 별도 네트워크가있는 시나리오 (레이스).

DHCP 다음 트랜잭션을 사용합니다.

  1. DHCP 검색 (DHCPDISCOVER)-클라이언트 브로드 캐스트- "DHCP 서버가 있습니까?"
  2. DHCP Offer (DHCPOFFER)-서버-클라이언트- "예, 여기 있습니다!"
  3. DHCP 요청 (DHCPREQUEST)-클라이언트와 서버 간 "멋지네요, 주소를 알려주시겠습니까?"
  4. DHCP 승인 (DHCPACK)-서버-클라이언트 "여기, IP, 마스크, 게이트웨이, 일부 DNS / WINS 서버, 시간 서버 및 범위에 맞게 구성된 다른 모든 것이 있습니다"

이 모든 것은 서버용 UDP 포트 67 및 클라이언트 용 68에서 발생합니다.

2 단계에 도달하자마자 클라이언트는 다른 DHCP 서버 응답에 대한 "청취"를 중지합니다. 첫 번째 서버를 처리하여주의를 기울입니다.

참고로 실제로이 권리를 남용하는 잘 알려진 일련의 DoS (Denial of Service) 공격이 있습니다. 공격자는 DHCPOFFER 패킷을 응답하고 전송하는 장치를 연결 한 다음 요청이있을 때 DHCPACK을 반복해서 보내지 않습니다. "가짜"DHCP 서버가 라우팅 할 수 없거나 네트워크를 망칠 수있는 다른 IP와 충돌하는 주소를 제공하는 다른 DoS 공격도 있습니다.


16
따라서 "단일 레이어 2 세그먼트에서 여러 서브넷을 어떻게 실행합니까?" "입니다 당신은하지 않습니다. "(네, 방법입니다,하지만 당신이 뭔가 아니다 한다 일반적으로 수행 한 레이어 2 도메인 = 서브넷..)
— user1686

정말 고마워요. 나는 이것이 어떻게 가능한지 항상 궁금했지만, 실제로는 불가능합니다. 따라서 빼앗아 갈 것입니다 : 라우터 / 계층 3이 서브넷이나 VLAN을 가진 세그먼트간에 전환합니까?
— Michael Niemand

4
일반적으로 VLAN 또는 물리적 세분화가 필요합니다. L2 도메인 공유는 두 DHCP 서버 모두가 "알려진"클라이언트를 처리하도록 제한된 경우 에만 가능합니다 (예 : 허용 된 MAC 주소를 가진 '정적 임대'목록으로).
— user1686

3
각 DHCP 서버에 MAC 주소의 화이트리스트를 제공하고 어떤 방식으로 어떤 클라이언트가 어떤 서버에서 주소를 가져 오는지를 제어 할 수 있다고 생각합니다.
— Darren

@grawity, 서브넷이 동일하고 동일한 서브넷에서 여러 IP 서브넷을 쉽게 실행할 수 있으며 어떤 서브넷에서 어떤 클라이언트가 주소를 가져 오는지 상관하지 않습니다. 두 블록의 주소를 제공하는 DHCP 서버와 두 블록의 주소로 게이트웨이 역할을하는 라우터가 있습니다. 끝난. 단지 "당신이하지 않는다"고 말하는 것은 명백한 잘못입니다.
— ilkkachu

9

@ Fazer87 의 기존 답변 은 실제로 정확하며 상향 조정하고 수락하는 것이 좋습니다. 이 답변은 사소한 세부 사항을 좀 더 정확하게 탐구합니다.


두 DHCP 서버 모두 DHCPOffer 메시지로 응답 할 수 있습니다.

DHCP 클라이언트는 "선착순"으로 수락 할 수 있습니다. 그러나이 방법을 사용할 필요는 없습니다.

RFC2131 은 다음을 지정합니다.

클라이언트는 하나 이상의 서버에서 하나 이상의 DHCPOFFER 메시지를받습니다. 클라이언트는 여러 응답을 기다리도록 선택할 수 있습니다. 클라이언트는 DHCPOFFER 메시지에 제공된 구성 매개 변수를 기반으로 구성 매개 변수를 요청할 서버를 하나 선택합니다.

따라서 두 번째 DHCP 서버가 더 긴 IP 주소 예약을 제공했거나 다른 서버가 클라이언트가 선호하지 않도록 프로그래밍 된 사용자 지정 필드를 갖지 않았거나 시간 서버를 제공 한 경우 두 번째 제안을 수락 할 수 있습니다.

일반적으로 "선착순"접근 방식은 여러 장치 (BOOTP 재방송)에서 여러 번의 홉을 거치지 않은 오퍼를 제공하므로 관심이없는 경우 따라야하는 좋은 프로토콜입니다.

나는 사용자 정의 장치가 업데이트 된 펌웨어를 찾을 수있는 TFTP 서버가 포함 된 DHCPOffer를 선호하는 한 프로젝트에있었습니다.


... 또는 한 서버가 클라이언트가 이전에 이미 사용했던 주소를 제공하고 유지하려는 경우
— ilkkachu

@ilkkachu : 이론 상으로는, 그러나 이것에 대한 더 나은 메커니즘이 있습니다 (이전 DHCP 서버로 만료되기 전에 예약을 갱신하거나 이전 IP 주소를 요청하는 DHCPDiscovery를 전송하는 것). 실제로 유용하지는 않습니다.
— Oddthinking
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.