คำถามสนุก โดยทั่วไปหากคุณมีเซิร์ฟเวอร์ DHCP สองเครื่องบน LAN เดียวกันจะมีการแข่งขันเพื่อกำจัดที่อยู่และคุณไม่สามารถมั่นใจได้ว่าใครจะชนะ: คุณอาจจบลงด้วยที่อยู่บางแห่งที่เสิร์ฟโดยราสเบอร์รี่บางแห่งโดย AP และ อุปกรณ์เดียวเมื่อตัดการเชื่อมต่อแล้วจะไม่ได้รับที่อยู่เดิมเหมือนเดิมอีกครั้ง หรือแย่กว่านั้นคือคุณอาจมีอุปกรณ์สองเครื่องที่มีที่อยู่เดียวกัน
ดังนั้นจึงเป็นความคิดที่ดีที่จะบล็อกหนึ่งในสอง สิ่งที่ง่ายที่สุดคือ:
ขั้นแรกตรวจสอบให้แน่ใจว่าช่วงที่พวกเขาวาดที่อยู่ไม่ทับซ้อนกัน : คุณอาจมี 192.168.1.11-74 สำหรับช่วงหนึ่ง 192.168.1.139-202 อย่างน้อยก็ป้องกันความขัดแย้ง
ตอนนี้เราป้องกัน AP ไม่ให้บริการที่อยู่ IP ไปยังไคลเอนต์แบบใช้สาย สมมติว่า AP เสียบเข้ากับ raspberry บนeth1จากนั้นคำสั่งต่อไปนี้จะทำ:
sudo iptables -A INPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP
sudo iptables -A OUTPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP
เราทำเสร็จแล้ว สองความคิดเห็น:
DHCP ใช้พอร์ต 67 และ 68 ในโปรโตคอล UDP; โดยการปิดกั้นการสื่อสารเกี่ยวกับสิ่งเหล่านี้คุณกำลังป้องกันไม่ให้คำขอ DHCP จากไคลเอนต์แบบมีสายเข้าถึงเซิร์ฟเวอร์ DHCP บน AP; ดังนั้นลูกค้าที่ใช้สายจะถูกเสิร์ฟโดยราสเบอร์รี่เท่านั้น
ประการที่สองคุณต้องเสียบ AP ลงในราสเบอร์รี่โดยตรง (ฉันรู้ว่าราสเบอร์รี่มีพอร์ตอีเธอร์เน็ตเพียงพอร์ตเดียวซึ่งใช้อยู่แล้ว: คุณสามารถซื้ออะแดปเตอร์ USB ต่อ Ethernet ได้และราสเบอร์รี่ของคุณจะมีการ์ดอีเทอร์เน็ตตัวที่สอง) เหตุผลก็คือถ้าคุณเสียบ AP ลงในสวิตช์การร้องขอและการตอบกลับ DHCP จะมาถึง / มาจาก AP โดยไม่ต้องผ่านราสเบอร์รี่ดังนั้นคำสั่งiptablesจะไร้ประโยชน์
แก้ไข:
ฉันลืมที่จะบอกว่ากฎ iptables ข้างต้นยังป้องกันการร้องขอ dhcp ไม่ให้ไหลจาก AP ไปยังราสเบอร์รี่เพื่อให้สถานการณ์ที่คุณมีอยู่ในขณะนี้คือที่อยู่ DHCP ในช่วง 192.168.1.0xx ให้กับราสเบอร์รี่ไปยังไคลเอนต์แบบใช้สาย ที่อยู่ในช่วง 192.168.1.1xx นั้นกำหนดโดย AP ไปยังไคลเอนต์ไร้สาย อย่างน้อยก็เป็นระเบียบ