Я работаю над системой Raspberry Pi 3 и создаю собственную rootfs с помощью Buildroot. Сначала я использовал BusyBox в качестве системы инициализации, и при настройке встроенной карты Wi-Fi с помощью wpa_supplicant маршрутизатор всегда назначал плате один и тот же IP-адрес, даже если я пересобирал/перепрошивал SD-карту с новой rootfs. Затем я перешел на использование systemd. Теперь, когда я пересобираю/перепрошиваю SD-карту, маршрутизатор, похоже, думает, что устройство другое, и назначает ему другой IP-адрес каждый раз, когда я перепрошиваю rootfs, хотя MAC-адрес остался прежним. Что может быть причиной этой проблемы?
решение1
Вы, скорее всего, найдете ответ, изучив свой маршрутизатор, а не систему. Изучив веб-интерфейс маршрутизатора, вы, возможно, сможете узнать:
- Каково время аренды DHCP. Вы можете подтвердить, что ваши аренды DHCP просто истекают, способствуя назначению новых IP-адресов.
- Посмотрите MAC-адрес вашего Raspberry Pi, как его видит маршрутизатор. Вы можете подтвердить, отображается ли только один MAC-адрес для вашего Pi или маршрутизатор видит каждый раз другой MAC-адрес иэтопочему назначается новый IP-адрес.
решение2
Маловероятно, что маршрутизатор будет помнить связь между MAC-адресом и IP-адресом в течение длительного времени. MAC-адресов гораздо больше, чем IP-адресов, поэтому DHCP-сервер должен быть готов выдавать один и тот же IP-адрес разным клиентам последовательно. Типичный сервер забудет о связи MAC-IP, как только истечет срок аренды.
Однако клиент может помнить эту ассоциацию дольше. Клиент DHCP может запросить определенный IP-адрес. Сервер может игнорировать этот запрос; обычно он удовлетворяет запрос, когда IP-адрес находится в правильном диапазоне и в настоящее время не назначен. Я подозреваю, что ваш клиент где-то сохраняет информацию об аренде ( /var/lib/dhcp
было бы хорошим местом для поиска), и что ваш маршрутизатор обычно удовлетворяет запрос. Когда вы прошиваете новую rootfs, у нее нет этой сохраненной аренды, поэтому маршрутизатор выбирает любой IP-адрес, который он предпочитает в эту минуту.