Làm thế nào để khách hàng DHCP biết nên chấp nhận nhiều DHCPOFFERS nào?


16

Hãy tưởng tượng chúng ta có một mạng như trong hình. Sáu máy chủ lưu trữ trên mạng một lớp 2, không có Vlan. Mạng được cho là được chia thành hai mạng con, mỗi máy chủ DHCP. Các máy chủ DHCP có địa chỉ IP cố định, vì vậy họ biết rõ họ thuộc mạng con nào.

Sau đó, các máy khách mới được kết nối. Họ không biết bất kỳ mạng con nào được cho là và gửi DHCPDISCOVER của họ tới Ethernet phát sóng 255.255.255.255, vì vậy nó sẽ đến cả hai máy chủ DHCP. Cả hai máy chủ trả lời với một đề nghị. Bây giờ đây là câu hỏi của tôi: Làm thế nào để khách hàng biết, DHCPOFFER nào mà anh ta phải chấp nhận?

Tình hình DHCP


So sánh câu hỏi và câu trả lời ở đó.
Kamil Maciorowski

Đây là một câu hỏi liên quan khác .
kasperd

1
"Truyền phát ethernet 255.255.255.255" - Đó là địa chỉ quảng bá IP cho mạng cục bộ, không phải địa chỉ Ethernet. Các thông báo DHCP DISCOVER ban đầu cũng rất có thể sử dụng địa chỉ quảng bá Ethernet ff: ff: ff: ff: ff: ff, nhưng chúng thực sự không giống nhau.
ilkkachu

Câu trả lời:


26

Câu trả lời đơn giản nhất - lần đầu tiên đến trước được phục vụ.

Nếu bạn có nhiều Vlan và 10.10.10.0/24 là trên một Vlan khác với 10.10.20.0/24 - chương trình phát sẽ không vượt qua Vlan.

Nếu Máy chủ DHCP nằm trên một Vlan riêng cho các máy khách, một iphelper trên giao diện định tuyến giữa các vlans sẽ hướng phát sóng vào đúng vị trí.

Trong kịch bản của bạn, nơi bạn có 2 mạng riêng biệt trong cùng một Vlan (hoặc thiếu mạng) phục vụ các mạng con khác nhau - đó là một cuộc đua.

DHCP Phục vụ bằng các giao dịch sau:

  1. DHCP Discovery (DHCPDISCOVER) - Phát sóng máy khách - "Có máy chủ DHCP ngoài đó không?"
  2. Ưu đãi DHCP (DHCPOFFER) - Máy chủ đến máy khách - "Vâng, tôi ở đây và sẵn sàng!"
  3. Yêu cầu DHCP (DHCPREQUEST) - Máy khách đến máy chủ "Tuyệt vời, tôi có thể có địa chỉ được không?"
  4. Xác nhận DHCP (DHCPACK) - Máy chủ cho khách hàng "Chắc chắn, đây là IP, mặt nạ, cổng, một số Máy chủ DNS / WINS, Máy chủ thời gian và tất cả những thứ khác được định cấu hình cho phạm vi của bạn"

Tất cả điều này xảy ra trên Cổng UDP 67 cho máy chủ và 68 cho máy khách.

Ngay sau khi đạt được Bước 2 - máy khách sẽ ngừng "lắng nghe" các phản hồi của Máy chủ DHCP khác - giao dịch vui vẻ với Máy chủ đầu tiên để gây chú ý.

Như một lưu ý phụ - thực sự có một loạt các cuộc tấn công DoS (Từ chối dịch vụ) nổi tiếng lạm dụng quyền này. Kẻ tấn công cắm vào một thiết bị phản hồi và gửi các gói DHCPOFFER và sau đó không gửi DHCPACK ra khi được hỏi ... lặp đi lặp lại nhiều lần. Ngoài ra còn có một cuộc tấn công DoS khác trong đó Máy chủ DHCP "giả" cung cấp các địa chỉ không thể định tuyến hoặc xung đột với các IP khác mà nó đánh hơi để gây rối với các mạng.


16
Và do đó, câu trả lời ngắn gọn cho "Nhưng sau đó, làm cách nào để tôi chạy nhiều mạng con trên một phân đoạn Lớp 2?" là " Bạn không có. " (Có, có nhiều cách, nhưng nó không phải là một cái gì đó bạn nên thường làm Một lớp-2 domain = một subnet..)
user1686

Cảm ơn các bạn, điều đó thực sự đã nhấp với tôi. Tôi luôn tự hỏi làm thế nào điều này có thể xảy ra, nhưng nó đơn giản là không. Vì vậy, việc bỏ đi là: Có một bộ định tuyến / lớp 3 chuyển đổi giữa các mạng con hoặc phân đoạn với Vlan, tôi có đúng không?
Michael Niemand

4
Nói chung, có, bạn cần Vlan hoặc phân đoạn vật lý. Chia sẻ tên miền L2 chỉ có thể thực hiện được nếu cả hai máy chủ DHCP của bạn bị hạn chế xử lý các máy khách "đã biết" (ví dụ: theo danh sách 'cho thuê tĩnh' với các địa chỉ MAC được phép).
dùng1686

3
Tôi nghĩ rằng bạn có thể cung cấp cho mỗi máy chủ DHCP một danh sách trắng các địa chỉ MAC và kiểm soát máy khách nào nhận được địa chỉ từ máy chủ đó.
Darren

@grawity, bạn có thể dễ dàng chạy nhiều mạng con IP trên cùng một phân đoạn 2 lớp, nếu các mạng con bằng nhau và bạn không quan tâm khách hàng nào nhận được địa chỉ từ mạng con nào. Bạn chỉ có một máy chủ DHCP cung cấp địa chỉ từ cả hai khối và một bộ định tuyến đóng vai trò là cổng cho cả hai khối (có một địa chỉ trong mỗi khối). Làm xong. Nói chỉ "bạn không" là hoàn toàn sai.
ilkkachu

9

Các câu trả lời hiện từ @ Fazer87 là rộng rãi đúng trong thực tế và tôi khuyên bạn nên upvoting và chấp nhận nó. Câu trả lời này khám phá một chi tiết nhỏ chính xác hơn một chút.


Cả hai máy chủ DHCP có thể phản hồi với thông điệp DHCP Offerer.

Một khách hàng DHCP có thể chấp nhận chúng trên cơ sở "đến trước phục vụ trước". Tuy nhiên, không bắt buộc phải thực hiện phương pháp đó.

RFC2131 chỉ định:

Máy khách nhận được một hoặc nhiều tin nhắn DHCPOFFER từ một hoặc nhiều máy chủ. Khách hàng có thể chọn chờ nhiều phản hồi. Máy khách chọn một máy chủ để yêu cầu các tham số cấu hình, dựa trên các tham số cấu hình được cung cấp trong các thông báo DHCPOFFER.

Vì vậy, nếu máy chủ DHCP thứ hai cung cấp dịch vụ đặt trước địa chỉ IP dài hơn hoặc cung cấp máy chủ thời gian mà máy chủ kia không hoặc có thể có trường tùy chỉnh mà máy khách đã được lập trình để ưu tiên, nó có thể chấp nhận ưu đãi thứ hai.

Thông thường, cách tiếp cận "đến trước được phục vụ trước" sẽ mang đến cho bạn lời đề nghị chưa được thực hiện qua nhiều bước nhảy trên các thiết bị (phát lại BOOTP) vì vậy đây là một giao thức tốt để tuân theo nếu bạn không có lý do gì để quan tâm.

Tôi đã tham gia một dự án trong đó một thiết bị tùy chỉnh sẽ thích DHCP Offerer bao gồm máy chủ TFTP nơi có thể tìm thấy phần sụn cập nhật.


... hoặc nếu một máy chủ cung cấp một địa chỉ mà khách hàng đã sử dụng trước đó và muốn giữ lại
ilkkachu

@ilkkachu: Có, trên lý thuyết, nhưng có các cơ chế tốt hơn cho việc này (cả hai đều gia hạn bảo lưu trước khi hết hạn với máy chủ DHCP cũ hoặc gửi DHCPDiscovery yêu cầu địa chỉ IP cũ) nên không thực tế có ích trong thực tế.
Oddthinking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.