ฉันทำการวิจัยเล็กน้อย
สิ่งแรกที่ฉันได้เรียนรู้คือมันเป็นไปได้ที่จะกำหนดให้เช่า DHCP ตามเกณฑ์อื่น ๆ นอกเหนือจากที่อยู่ MAC
จาก dhcp คำถามที่พบบ่อย :
รหัสลูกค้าคืออะไร
สิ่งที่เรียกว่ารหัสลูกค้าสำหรับวัตถุประสงค์ของโปรโตคอล DHCP คือสิ่งที่โปรโตคอลใช้เพื่อระบุคอมพิวเตอร์ไคลเอนต์ โดยปกติแล้วการใช้งาน DHCP จะใช้ที่อยู่ MAC ของลูกค้าเพื่อจุดประสงค์นี้ แต่โปรโตคอล DHCP จะอนุญาตตัวเลือกอื่น ๆ การประยุกต์ใช้ DHCP บางตัวมีตัวเลือกการตั้งค่าเพื่อระบุรหัสลูกค้าที่คุณต้องการ อีกทางเลือกหนึ่งสำหรับที่อยู่ MAC คือสตริงอักขระที่คุณเลือก ไม่ว่าในกรณีใดเพื่อให้ DHCP ทำงานได้คุณจะต้องแน่ใจว่าไม่มีไคลเอ็นต์อื่นที่ใช้รหัสลูกค้าที่คุณเลือกและคุณต้องแน่ใจว่าเซิร์ฟเวอร์ DHCP นั้นยอมรับ
จากนั้นถึงแม้ว่าจะไม่ได้รับการสนับสนุนจากเว็บอินเตอร์เฟส luci บน openWRT แต่ dnsmasq เองก็สนับสนุน client_id และที่อยู่ MAC หลายแห่ง (ด้วยความระมัดระวัง)
จากหน้า dnsmasq man :
-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, ชื่อโฮสต์] [, lease_time] [, ไม่สนใจ] ระบุต่อพารามิเตอร์โฮสต์สำหรับเซิร์ฟเวอร์ DHCP . สิ่งนี้ช่วยให้เครื่องที่มีที่อยู่ฮาร์ดแวร์เฉพาะได้รับการจัดสรรชื่อโฮสต์ที่อยู่ IP และเวลาการเช่าที่เหมือนกันเสมอ ชื่อโฮสต์ที่ระบุเช่นนี้จะแทนที่ที่ไคลเอ็นต์ DHCP จัดหาให้ในเครื่อง นอกจากนี้ยังอนุญาตให้ ommit ที่อยู่ฮาร์ดแวร์และรวมชื่อโฮสต์ซึ่งในกรณีนี้ที่อยู่ IP และเวลาเช่าจะใช้กับเครื่องที่อ้างชื่อนั้น ตัวอย่างเช่น --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite บอก dnsmasq เพื่อให้เครื่องพร้อมที่อยู่ฮาร์ดแวร์ 00: 20: e0: 3b: 13: af ชื่อ wap และ infinite เช่า DHCP --dhcp-host = lap, 192.168.0.199 บอก dnsmasq ให้จัดสรรเครื่องเสมอที่อยู่ IP 192.168.0.199
( ... )
ได้รับอนุญาตให้ใช้ตัวระบุลูกค้าแทนที่อยู่ฮาร์ดแวร์เพื่อระบุโฮสต์โดยนำหน้าด้วย 'id:' ดังนั้น: - dhcp-host = id: 01: 02: 03: 04, ..... หมายถึงโฮสต์ที่มีตัวระบุไคลเอ็นต์ 01: 02: 03: 04 นอกจากนี้ยังได้รับอนุญาตให้ระบุรหัสลูกค้าเป็นข้อความเช่นนี้: - dhcp-host = id: clientidastext, .....
( ... )
ในกรณีพิเศษคุณสามารถรวมที่อยู่ฮาร์ดแวร์ได้มากกว่าหนึ่งรายการ เช่น: - dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12,192.168.0.2 ซึ่งจะอนุญาตให้ที่อยู่ IP เชื่อมโยงกับที่อยู่ฮาร์ดแวร์หลายแห่งและให้สิทธิ์ dnsmasq เพื่อยกเลิกการเช่า DHCP ไปยังที่อยู่หนึ่งในฮาร์ดแวร์เมื่ออีกคนหนึ่งร้องขอการเช่า ระวังว่านี่เป็นสิ่งที่อันตรายที่ต้องทำมันจะทำงานได้อย่างน่าเชื่อถือหากที่อยู่ของฮาร์ดแวร์เพียงอันเดียวนั้นทำงานอยู่ตลอดเวลาและไม่มีทางที่ dnsmasq จะบังคับใช้สิ่งนี้ ตัวอย่างเช่นมีประโยชน์ในการจัดสรรที่อยู่ IP ที่เสถียรให้กับแล็ปท็อปที่มีทั้งแบบมีสายและไร้สาย
ฉันเลือกใช้วิธีการแก้ปัญหา multi-mac (เพราะฉันไม่ได้พยายามหาวิธีที่ฉันสามารถระบุรหัสลูกค้าทางฝั่งไคลเอ็นต์ซึ่งเป็นสิ่งที่ต้องทำสำหรับไคลเอนต์ที่แยกจากกันและเป็นทางเลือกหลาย Mac ทางออกหนึ่งสำหรับพอร์ตทั้งหมดในบ้าน)
ฉันหลีกเลี่ยงอินเตอร์เฟส luci และเพิ่มลงใน /etc/dnsmasq.conf โดยตรงจากบรรทัดต่อไปนี้:
DHCP-hostsfile = / etc / dnsmasq-dhcphosts.conf
และ /etc/dnsmasq-dhcphosts.conf มีบรรทัดของรูปแบบต่อไปนี้:
mac1, mac2, IP
(ฉันเก็บการตั้งค่านี้ไว้ในไฟล์แยกเพื่อป้องกันไม่ให้เขียนทับโดยการอัพเดทครั้งต่อไป)
ทำงานได้ดี