Các biến thể về câu hỏi này tồn tại, nhưng tôi không thể chắc chắn tình huống chính xác của mình đã được hỏi.
Tôi đang thiết lập một mạng ethernet đơn giản trông như thế này:
Trên Nút 0 ("rpi1") tôi đang chạy dnsmasq với tư cách là máy chủ DNS và DHCP. Đây là một phần của nó /etc/dnsmasq.conf
(trừ chi tiết Địa chỉ MAC):
# Gán IP tĩnh cho các thành viên cụm
# Định dạng = MAC: tên máy chủ: IP
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi1,10.0.0.1 # Nút 0
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi2,10.0.0.2 # Nút 1
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi3,10.0.0.3 # Nút 2
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi4,10.0.0.4 # Nút 3
Cả hai khía cạnh DNS và DHCP đều hoạt động. Mỗi nút đang được chỉ định dự định của nó 10.0.0.X
Địa chỉ IP và tôi có thể giải quyết bất kỳ miền nào trên bất kỳ nút nào bằng cách chạy, ví dụ: đào rpi4
(-> ... 10.0.0.4
). Và, ví dụ, nếu tôi đang ở trong rpi2 thì tôi có thể vào rpi3 với ssh rpi3
, và tôi có thể ví dụ ping rpi4
hoặc ping 10.0.0.4
và nhận được 0% mất gói.
Tuy nhiên, điều không rõ ràng đối với tôi là liệu tôi đang liên lạc trực tiếp giữa các nút thông qua bộ chuyển mạch hay qua rpi1 (đang vận hành dnsmasq và cung cấp dịch vụ bộ định tuyến).
Nếu các nút đang giao tiếp trực tiếp thì tôi cho rằng chúng phải biết địa chỉ MAC của nhau để phát ra các khung truyền trực tiếp cho nhau thông qua công tắc. Nếu đúng như vậy, thì câu hỏi của tôi tóm lại là:
- Tại thời điểm nào thì một nút học địa chỉ MAC của các nút khác?
- Và làm cách nào tôi có thể kiểm tra địa chỉ MAC của ví dụ: rpi3 trên rpi2 để thấy rằng họ đã tìm hiểu về nhau?
Cảm ơn trước!