มีการเปลี่ยนแปลงในคำถามนี้ แต่ฉันไม่สามารถแน่ใจได้ว่ามีการถามสถานการณ์ที่แน่นอนของฉันแล้ว
ฉันกำลังตั้งค่าเครือข่ายอีเธอร์เน็ตอย่างง่ายที่มีลักษณะดังนี้:
บนโหนด 0 ("rpi1") ฉันใช้ dnsmasq เป็นทั้งเซิร์ฟเวอร์ DNS และ DHCP นี่คือส่วนหนึ่งของมัน /etc/dnsmasq.conf
(ลบรายละเอียดที่อยู่ MAC):
# กำหนด IP แบบคงที่ให้กับสมาชิกคลัสเตอร์
# รูปแบบ = MAC:ชื่อโฮสต์:IP
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi1,10.0.0.1 # โหนด 0
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi2,10.0.0.2 # โหนด 1
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi3,10.0.0.3 # โหนด 2
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi4,10.0.0.4 # โหนด 3
ทั้งด้าน DNS และ DHCP กำลังทำงานอยู่ แต่ละโหนดได้รับการกำหนดตามที่ต้องการ 10.0.0.X
ที่อยู่ IP และฉันสามารถแก้ไขโดเมนบนโหนดใดก็ได้โดยการเรียกใช้เช่น ขุด rpi4
(-> ... 10.0.0.4
). ตัวอย่างเช่น ถ้าฉันอยู่ใน rpi2 ฉันก็จะเข้าไปใน rpi3 ได้ ssh rpi3
และฉันสามารถเช่น ปิง rpi4
หรือ ปิง 10.0.0.4
และรับการสูญเสียแพ็กเก็ต 0%
สิ่งที่ไม่ชัดเจนสำหรับฉันคือว่าฉันกำลังสื่อสารระหว่างโหนดโดยตรงผ่านสวิตช์หรือผ่าน rpi1 (ซึ่งใช้งาน dnsmasq และให้บริการเราเตอร์)
หากโหนดกำลังสื่อสารกันโดยตรง ฉันคิดว่าโหนดเหล่านั้นต้องรู้จักที่อยู่ MAC ของกันและกัน เพื่อที่จะปล่อยเฟรมที่เชื่อมต่อกันโดยตรงผ่านสวิตช์ ถ้าเป็นเช่นนั้น สรุปคำถามของผมคือ
- โหนดเรียนรู้ที่อยู่ MAC ของโหนดอื่น ณ จุดใด
- และฉันจะตรวจสอบที่อยู่ MAC ของเช่น rpi3 บน rpi2 เพื่อดูว่าได้เรียนรู้ซึ่งกันและกันหรือไม่?
ขอบคุณล่วงหน้า!