Чому мій Pi завжди має однакову IP-адресу?


22

Мій маршрутизатор використовує DHCP, і кожного разу, коли я переформатую свою малинову пі, навіть коли використовую іншу карту microSD, у неї завжди є одна ip локальної мережі. Я не зовсім впевнений, як призначені IP-адреси, але я припускаю, що пристрій має унікальний ідентифікатор у мережі, який розпізнає мій маршрутизатор?


Як це сталося? Я задаю питання щодо SE, і воно має позитивну кількість голосів! І це багато відгуків.

Відповіді:


36

Ваш Raspberry Pi має унікальний ідентифікатор, який називається MAC-адреса, насправді два, щоб бути точним. Кожен мережевий адаптер має один із таких. Таким чином, адаптер Wi-Fi має один унікальний ідентифікатор, а Ethernet-адаптер.

І тому ваш Raspberry Pi отримує той самий IP. Для вашого маршрутизатора не важливо, що саме ви робите з пристроєм. Він просто розпізнає MAC і забезпечує той же IP, що і раніше.

Редагування: Як зазначив Біг, 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-адресу, якщо у неї не залишилось вільних адрес. Оскільки це покладається на конкретну реалізацію ... і якість домашніх маршрутизаторів повсюдно ... поведінка не обов'язково буде послідовною залежно від вашої моделі маршрутизатора.
Тім Кемпбелл

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 ІМХО - це правильна відповідь. Це просто так, як працює протокол DHCP.
Джос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.