เหตุใด Pi ของฉันจึงมีที่อยู่ IP เดียวกันเสมอ


22

เราเตอร์ของฉันใช้ DHCP และเมื่อใดก็ตามที่ฉันฟอร์แมตราสเบอร์รี่ pi ของฉันแม้ว่าจะใช้การ์ด microSD ที่แตกต่างกันก็จะมี LAN ip เดียวกันเสมอ ฉันไม่แน่ใจว่าจะมีการกำหนด IP อย่างไร แต่ฉันถือว่าอุปกรณ์มีรหัสเฉพาะในเครือข่ายที่เราเตอร์ของฉันรู้จัก


มันเกิดขึ้นได้อย่างไร? ฉันถามคำถามเกี่ยวกับ SE และมีคะแนนโหวตเป็นบวก! และนั่นคือ upvotes มากมาย

คำตอบ:


36

Raspberry Pi ของคุณมี ID เฉพาะที่เรียกว่าที่อยู่ MAC จริง ๆ แล้วสองอย่างแม่นยำ อะแดปเตอร์เครือข่ายแต่ละตัวมีหนึ่งในนั้น ดังนั้นอะแดปเตอร์ Wi-Fi จึงมี ID ที่ไม่ซ้ำใครและอะแดปเตอร์อีเธอร์เน็ตทำ

และนี่คือเหตุผลที่ Raspberry Pi ของคุณได้รับ IP เดียวกัน สำหรับเราเตอร์ของคุณไม่สำคัญว่าคุณกำลังทำอะไรกับอุปกรณ์อย่างแน่นอน เพิ่งรู้จัก MAC และให้ IP เดียวกันกับเมื่อก่อน

แก้ไข: ตามที่ Beege ระบุไว้ IP ยังคงสามารถเปลี่ยนแปลงได้ในขณะที่ 'D' ใน DHCP ย่อมาจากไดนามิก แต่ถ้าอุปกรณ์ของคุณได้รับ IP เดียวกันก่อนหน้านี้ผ่าน DHCP เพราะ MAC นั้นเป็นที่รู้จัก


9
คำอธิบายที่ดี ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงว่าที่อยู่ MAC เดียวกันจะไม่ได้รับ IP เดียวกันจากเซิร์ฟเวอร์ DHCP เสมอ - มันยังคงเป็นบริการ "แบบไดนามิก" ดังนั้นจึงเป็นไปได้ที่ IP จะถูกยึดโดยอุปกรณ์อื่นและ Pi ของคุณก็จบลงด้วยกัน การกำหนด IP
Beege

3
@Beege โอ้ใช่แน่นอนขอบคุณ! หนึ่งสามารถเลือกที่จะจอง IP เฉพาะสำหรับ Pi เมื่อต้องการถาวร IP เช่นเมื่อใช้เซิร์ฟเวอร์บน แต่นี่จะเปิดใช้งานโดยเฉพาะกับเราเตอร์ (หรืออุปกรณ์อะไรก็ตามที่ให้บริการ DHCP ในเครือข่าย)
ItsKiddow

2
actually two to be precise- สมมติว่า pi3b หรือ 3b +
Jaromanda X

7
ความจริงที่ว่า IP เหมือนกันนั้นไม่ใช่เพราะ MAC MAC เป็นตัวระบุว่าเราเตอร์มีสิทธิ์เข้าถึง เราเตอร์สามารถกำหนดค่าเพื่อพยายามให้ IP เดียวกันกับคุณเมื่อมีการต่ออายุสัญญาเช่าหรือสามารถสุ่มกำหนดให้คุณได้ เราเตอร์ของคุณได้รับการกำหนดค่า (โดยผู้ผลิต) ให้ทำแบบเดิม สิ่งนี้จะช่วยป้องกันปัญหาเครือข่ายจำนวนมากที่เกิดจากปัญหาที่เกี่ยวข้องกับ IP แบบไดนามิก (พอร์ตการพิมพ์ IP คำนึงถึง) ความสามารถในการรับ IP เดียวกันนั้นเกิดจาก MAC แต่ฉันสามารถตั้งค่า DHCP บนเราเตอร์ได้อย่างง่ายดายเพื่อให้กองอุปกรณ์ต่าง ๆ มี IP เดียวกัน
เนลสัน

1
การนำ DHCP คุณภาพมาใช้จะทำการแคชที่อยู่ MAC ก่อนหน้า & การกำหนด IP เมื่อเห็นที่อยู่ MAC ที่แคชก็จะมีแนวโน้มที่จะเสนอ IP เดียวกัน (ถ้ามี) อีกครั้ง มันจะต่อต้านการให้ IP ไปยังที่อยู่ MAC อื่นยกเว้นว่าไม่มีที่อยู่ว่างเหลืออยู่ เนื่องจากสิ่งนี้ขึ้นอยู่กับการใช้งานเฉพาะ ... และคุณภาพของเราเตอร์ที่บ้านอยู่ทั่วทุกที่ ... พฤติกรรมจะไม่สอดคล้องกันขึ้นอยู่กับรุ่นเราเตอร์ของคุณ
Tim Campbell

16

นอกจากคำตอบที่ได้รับแล้วฉันจะให้ข้อมูลพื้นฐานเพิ่มเติมบางอย่าง

โดยทั่วไปโปรโตคอล DHCP ทำขึ้นเพื่อลดการเปลี่ยนแปลงแบบไดนามิกให้มากที่สุด มันเป็นลักษณะของความมั่นคง มันไม่สำคัญมากบนเครือข่ายในบ้านขนาดเล็ก แต่เครือข่ายขนาดใหญ่ที่มีสวิทช์และเราเตอร์ต้องการเวลาในการเข้าสู่สภาวะที่เหมาะสม สวิตช์ต้องเรียนรู้เพื่อนบ้านและเราเตอร์ต้องเรียนรู้เส้นทาง การเปลี่ยนแปลงที่อยู่ IP จำนวนมากไม่ดีสำหรับสถานะนี้

คนส่วนใหญ่อาจคิดว่าเซิร์ฟเวอร์ DHCP เพียงแค่ให้ที่อยู่ ip ให้กับลูกค้าและนั่นคือมัน แต่มันเป็นความจริงเพียงครึ่งเดียว นี่คือการจับมือ DHCP ทั่วไป:

(client) DHCPREQUEST for 192.168.10.75 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPACK on 192.168.10.75 to b8:27:eb:0e:3c:6f (raspi3) via wlan0

ตามที่คุณเห็นลูกค้าระบุด้วยที่อยู่ mac ของมัน b8: 27: eb: 0e: 3c: 6f ร้องขอที่อยู่ IP เฉพาะที่มันต้องการ มันรู้ว่าที่อยู่ IP ใดที่เคยมีมาก่อนหน้านี้หลังจากการเริ่มต้นใหม่ เซิร์ฟเวอร์ DHCP ยืนยันเท่านั้น ว่าสิ่งที่มันให้กับลูกค้าจะเรียกว่าเป็นสัญญาเช่า มันมีการหมดเวลา (พร้อมกับตัวเลือกที่สำคัญอื่น ๆ ) ระยะเวลาที่ลูกค้าสามารถใช้ที่อยู่ IP โดยไม่ต้องร้องขออีกครั้ง การหมดเวลาขึ้นอยู่กับการตั้งค่าและส่วนใหญ่จะตั้งค่าเป็นบางชั่วโมง เซิร์ฟเวอร์ DHCP จะจัดเก็บการเช่าซื้อไว้ในแคชและจะทำการสำรองให้นานที่สุดเท่าที่จะเป็นไปได้สำหรับไคลเอนต์เดียวกันรวมถึงหากปิดเครื่อง ดังนั้นมันจะยืนยันลูกค้าสำหรับการเช่าเมื่อมันบูตเครื่องอีกครั้ง เฉพาะเมื่อเซิร์ฟเวอร์ไม่มีสัญญาเช่าที่ไม่ได้ใช้อื่น ๆ เพื่อมอบให้กับลูกค้าจะใช้สัญญาเช่าที่ใช้แล้ว การจับมือนั้นจะมีลักษณะเช่นนี้:

(client) DHCPREQUEST for 192.168.10.75 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPNAK on 192.168.10.75 to b8:27:eb:0e:3c:6f via wlan0
(client) DHCPDISCOVER from b8:27:eb:0e:3c:6f via wlan0
(server) DHCPOFFER on 192.168.10.99 to b8:27:eb:0e:3c:6f via wlan0
(client) DHCPREQUEST for 192.168.10.99 from b8:27:eb:0e:3c:6f (raspi3) via wlan0
(server) DHCPACK on 192.168.10.99 to b8:27:eb:0e:3c:6f (raspi3) via wlan0

ในขณะที่คุณสามารถเห็นเซิร์ฟเวอร์ DHCP ปฏิเสธ (DHCPNAK) คำขอและเสนอที่อยู่ IP ใหม่ที่นั้นในขั้นตอนต่อไปจะถูกร้องขอโดยลูกค้า ขั้นตอนเพิ่มเติมนี้ทำขึ้นเพื่อให้ลูกค้ามีโอกาสที่จะไม่ยอมรับที่อยู่ IP ที่เสนอ ...


4
+1 IMHO นี่คือคำตอบที่ถูกต้อง เป็นเพียงวิธีการทำงานของโปรโตคอล DHCP
Jos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.