Как правильно установить DHCP и статический IP на Raspberry?Менять .conf файлы? - PullRequest
0 голосов
/ 19 сентября 2019

Плата: Raspberry Pi 4

ОС: Raspbian Buster Lite

ОС ПК: Linux Mint 19.1

У меня есть веб-интерфейс PHP, в котором пользователь может выбрать DHCPIP и введите SSID и пароль, или пользователь может выбрать статический IP и ввести IP, шлюз, DNS и маску подсети.

Эти учетные данные сохраняются в файле network_configuration.txt.

Затем программа на C ++прочитает все строки из network_configuration.txt и запишет их в dhcpcd.conf или wpa_supplicant.conf.

Для статического IP dhcpcd.conf будет выглядеть так:

interface wlan0
hostname MyDesiredName
clientid
persistent
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier
interface eth0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

и wpa_supplicant.confбудет выглядеть следующим образом:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

После того, как произошла перезапись, и только если это произошло, вызов system() произойдет:

system("ip link set eth0 down && ip link set eth0 up && ip link set wlan0 down");

Для DHCP IP wpa_supplicant.conf будет выглядеть следующим образом:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
#Wireless Network Credentials
network={
ssid="myssid"
psk="Passwordl123"
}

и dhcpcd.conf будут выглядеть следующим образом:

interface wlan0
hostname MyDesiredName
clientid
persistent
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier

После того, как произошла перезапись, и только если это произошло, вызов system() происходит:

system("ip link set wlan0 down && ip link set wlan0 up && ip link set eth0 down");

Проблема, с которой я столкнулся, заключается в том, что, хотя статический IP-адрес работает отлично, переключение на DHCP-IP не происходит, поскольку Raspberry не получитАйпи адрес.Выполнение sudo reboot сверх ssh исправляет это.

У меня есть только пара вопросов:

Первое: почему Raspberry не получает IP-адрес?

Секунда: Я знаю, что делаю что-то вроде обезьяны, потому что это мой текущий уровень, но есть ли другой способ, «лучший», «умный» способделать то, что я пытаюсь сделать?

...