2012-05-10 29 views
5

Câu hỏi này có thể xuất phát từ một sự hiểu lầm cơ bản về IP multicast, vì vậy hãy sửa tôi nếu tôi tắt cơ sở.Khám phá các máy chủ DHCP bằng cách sử dụng multicast (224.0.0.12) trong GNU/Linux/C

Tôi đang cố gắng viết mã C để tìm địa chỉ IP của tất cả các máy chủ DHCP trên mạng. Trường hợp sử dụng là:

  1. Chương trình phát sóng khách hàng Khám phá DHCP.
  2. Đại lý tiếp sức độc quyền của tôi chọn gói, thêm một số thông tin cần thiết và chuyển tiếp UNICAST đến máy chủ DHCP tại địa chỉ IP đã biết.

Vấn đề tôi đang gặp là thông báo cho nhân viên chuyển tiếp nơi (các) máy chủ DHCP (đang)). Tôi thấy rằng địa chỉ multicast 224.0.0.12 được IANA dành riêng cho các máy chủ DHCP, vì vậy tôi đã hình dung ra các máy chủ để lắng nghe lưu lượng multicast đó. Nhưng bất cứ khi nào tôi cấu hình một tùy chọn socket linux để IP_ADD_MEMBERSHIP đến 224.0.0.12, nó sử dụng IGMP, một giao thức hoàn toàn riêng biệt mà tôi không muốn phải thực hiện.

Tôi có hiểu sai về cách hoạt động của multicast không? Không nên tôi có thể gửi một ping từ các đại lý chuyển tiếp đến 224.0.0.12 và có nó trả lại một phản ứng ping từ tất cả các máy chủ DHCP?


Thông tin bổ sung:

  • các giao diện trên tất cả các hộp làm có multicast được liệt kê khi tôi làm một ifconfig
  • Tôi đã thêm các tuyến đường multicast sử dụng ip route add 224.0.0.0/4 dev eth0 trên tất cả các hộp
+0

Bạn có thể kiểm tra định tuyến multicast được định cấu hình không? http://www.dancres.org/bjspj/docs/docs/linux.html – ChristopheD

+0

bạn có thể đăng mã để chúng tôi có thể tìm thấy lỗi trong ứng dụng không? – dwalter

+0

Bạn phải sử dụng IGMP cho phát đa hướng; có vẻ như có một sự hiểu lầm ở đây. Hạt nhân thực hiện tất cả IGMP cho bạn, giống như ARP và IP mà bạn không lo lắng về nó. Vấn đề là với phát sóng, định tuyến là (khá) dễ dàng: các gói chỉ đi khắp mọi nơi. Tuy nhiên, để nhận được một phản hồi multicast, bạn phải chấp nhận rằng IGMP được sử dụng, để nói cho các bộ định tuyến trên mạng mà bạn quan tâm đến các gói multicast. Nếu bạn không nói với họ, làm thế nào họ có thể biết để chuyển tiếp tin nhắn trong nhóm cho bạn? Tuy nhiên, DHCP thường sử dụng chương trình phát sóng. –

Trả lời

2

Có lẽ bạn nên làm những gì khách hàng làm - phát sóng (không phải multicast!) Trên mạng đích với gói DHCPDISCOVER? Tôi có một vài máy chủ DHCP đang hoạt động và không ai trong số họ đang nghe trên mạng 224.

Có thể bạn cũng muốn yêu cầu địa chỉ hiện tại của mình hoặc gửi DHCPRELEASE cho bất kỳ phiếu mua hàng nào mà bạn nhận được, để không kết nối địa chỉ trong đặt chỗ giả trên máy chủ.

0

Trong cài đặt IPv4 chung sử dụng phát sóng tới cổng UDP 67, không phát đa hướng. Yêu cầu phát sóng phải được tất cả các máy chủ DHCP trên mạng của bạn trả lời. Hãy xem số details explained on the Wikipedia page hoặc đọc phần giải thích phát sóng trong RFC 2131, Phần 3. Xem thêm this thread.

Các vấn đề liên quan