Phân công khối DHCP khi đang di chuyển


8

Chúng tôi có một số lượng lớn khách hàng kết nối với máy DHCP của chúng tôi. Chúng tôi muốn chỉ định một số trong số chúng cho một khối IP khác, được định tuyến với mức độ ưu tiên thấp hơn. Mỗi lần gia hạn thuê DHCP, chúng tôi muốn kiểm tra cơ sở dữ liệu và quyết định khối IP nào chúng tôi muốn gán cho khách hàng.

Có cách nào để máy chủ DHCP thực thi tập lệnh, tìm trong cơ sở dữ liệu hoặc thực thi một số mã động khi quyết định địa chỉ nào sẽ được gán trong nhóm nào không? Mỗi máy khách được xác định duy nhất bởi tùy chọn82, còn gọi là "Tùy chọn thông tin tác nhân chuyển tiếp DHCP".


Máy chủ DHCP nào trên HĐH nào?
Zypher

Điều này nghe có vẻ như là một thiết lập kiểu tàu sân bay ... có phải vậy không? Tôi sẽ ngạc nhiên nếu một cái gì đó như thế này đã tồn tại trong các công cụ mở. Tôi có lẽ sẽ nhìn vào viết nó cho mình. Câu hỏi rất thú vị mặc dù!
MikeyB

@Zypher: Hệ điều hành Debian, dhcpd thông thường @MikeyB: Có, thiết lập nhà cung cấp
Andomar

Câu trả lời:


2

Lý tưởng nhất là bạn sửa đổi dhcpd để hỗ trợ gán địa chỉ dựa trên Option82, tương đương với các dòng "phần cứng" trong các đối tượng máy chủ. Tôi đã thực hiện nó với dhcpd OpenBSD khi tôi làm việc tại một ISP, có cấu trúc bên trong đơn giản hơn với isc-dhcpd.

Nếu bạn không ở vị trí để làm điều đó, thì hãy xem omapi (3) và omshell (1); bạn sẽ sử dụng OMAPI để tự động tạo các đối tượng "lớp" và "nhóm", để thực hiện đề xuất của Zypher. Tôi chỉ kiểm tra dhcpd.hclassstruct có một OMAPI_OBJECT_PREAMBLE, vì vậy điều này là có thể. Xin lưu ý rằng tài liệu về OMAPI có thể hơi ... sơ sài.


Giải pháp mà Zypher đề xuất là những gì chúng ta hiện đang có. Và tôi không nghĩ rằng các hệ thống sẽ đánh giá cao một phiên bản chỉnh sửa của dhcpd. Nhưng OMAPI có vẻ như là một lựa chọn tốt, cảm ơn!
Andomar

3

Vì vậy, tôi không thực hiện điều này với tùy chọn 82, nhưng cách tốt nhất của bạn là sử dụng phân loại trong isc dhcpd.

Những gì bạn sẽ làm là thiết lập một lớp như:

class "userclass1" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id1>";
}
class "userclass2" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id2>";
}

Sau đó trong tuyên bố nhóm của bạn:

pool {
  allow members of "userclass1";
  range 10.0.0.11 10.0.0.50;
}
pool {
   allow members of "userclass2";
   range 10.0.0.51 10.0.0.100;
}

Tham khảo: dhcpd.conf

Điều này ít nhất sẽ giúp bạn đi đúng hướng, tôi không có máy chủ chơi của mình để kiểm tra nó, nhưng tôi đã làm một cái gì đó tương tự với các tùy chọn khác.


Chúng ta sẽ không phải thiết lập lại dhcpd mỗi khi có thay đổi chứ? Có thể có thành viên nhóm được xác định động bởi một cuộc gọi kịch bản không?
Andomar

@Andomar: Yep bạn sẽ. Thật không may, tôi không nghĩ vậy - nhưng tôi có thể rất sai ở đó
Zypher


0

Một cách để làm điều này là gán các máy khách đó cho một Vlan riêng biệt, sau đó địa chỉ DHCP mà các máy khách đó nhận được sẽ tự động ở một nhóm khác.


Trên thực tế, chuyển đổi Vlan là những gì chúng tôi muốn tránh. Các bộ chuyển đổi Vlan gây nhầm lẫn các modem của máy khách và mất nhiều thời gian để thực thi
Andomar
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.