Вопрос или проблема
В настоящее время я работаю над проектом создания высокозащищенного маршрутизатора с помощью моего RaspberryPi для анонимного серфинга в интернете. Однако я не могу правильно настроить демона, чтобы завершить подключение wifi к новому серверу:
Действительно, когда я выполняю:
:~ $ sudo service isc-dhcp-server start
Я получаю:
Работа для isc-dhcp-server.service завершилась неудачей. См. 'systemctl status isc-dhcp-server.service' и 'journalctl -xn' для получения информации.
Вот мои настройки /etc/dhcp/dhcpd.conf
авторитетный;
#добавлено
подсеть 192.168.42.0 маска_подсети 255.255.255.0{
диапазон 192.168.42.10 192.168.42.50;
опция широковещательный_адрес 192.168.42.255;
опция маршрутизаторы 192.168.42.1;
время_аренды_по_умолчанию 600;
максимальное_время_аренды 7200;
опция доменное_имя "local";
опция доменные_имена-серверов 8.8.8.8, 8.8.4.4;
}
И вот мои настройки /etc/network/interfaces
:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet static
адрес 192.168.42.1
маска_подсети 255.255.255.0
iface wlan0 inet dhcp
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet static
адрес 192.168.42.1
маска_подсети 255.255.255.0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
up iptables-restore < /etc/iptables.ipv4.nat
Мой RaspberryPi подключен через провод, но имеет Wi-Fi адаптер.
Вот systemctl status isc-dhcp-server.service
:~ $ systemctl status isc-dhcp-server.service
● isc-dhcp-server.service - LSB: DHCP сервер
Загружено: загружено (/etc/init.d/isc-dhcp-server)
Активно: неудачно (Результат: код выхода) с Вт 2016-06-07 00:13:45 CEST; 53с назад
Процесс: 18098 ExecStart=/etc/init.d/isc-dhcp-server start (код=вышел, статус=1/НЕУДАЧА)
Некоторые части отображаются с пугающим красным цветом...
А вот journalctl
-- Журналы начинаются с пн 2016-06-06 21:17:01 CEST, заканчиваются во вт 2016-06-07 00:18:32 CEST. --
07-июн 00:13:45 raspberrypi isc-dhcp-server[18098]: проблеме с конфигурацией пожалуйста прочтите раздел о подаче
07-июн 00:13:45 raspberrypi isc-dhcp-server[18098]: ошибок как на нашем веб-сайте www.isc.org, так и в файле README
07-июн 00:13:45 raspberrypi isc-dhcp-server[18098]: перед подачей ошибки. Эти страницы объясняют правильный
07-июн 00:13:45 raspberrypi isc-dhcp-server[18098]: процесс и информацию, которую мы считаем полезной для отладки..
07-июн 00:13:45 raspberrypi isc-dhcp-server[18098]: выход.
07-июн 00:17:01 raspberrypi CRON[18118]: pam_unix(cron:session): сессия открыта для пользователя root (uid=0)
07-июн 00:17:01 raspberrypi CRON[18122]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
07-июн 00:17:01 raspberrypi CRON[18118]: pam_unix(cron:session): сессия закрыта для пользователя root
07-июн 00:18:32 raspberrypi sudo[18139]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/journalctl -xn
07-июн 00:18:32 raspberrypi sudo[18139]: pam_unix(sudo:session): сессия открыта для пользователя root пользователем pi(uid=0)
Было две вещи:
Самая очевидная заключалась в том, чтобы написать адрес с двумя "d" здесь:
подсеть 192.168.42.0 маска_подсети 255.255.255.0{
диапазон 192.168.42.10 192.168.42.50;
опция широковещательный_адрес 192.168.42.255;
опция маршрутизаторы 192.168.42.1;
время_аренды_по_умолчанию 600;
максимальное_время_аренды 7200;
опция доменное_имя "local";
опция доменные_имена-серверов 8.8.8.8, 8.8.4.4;
}
Вторая заключалась в том, чтобы запустить беспроводную сеть, выполнив:
sudo ifup wlan0
И я смог бы запустить service isc-dhcp-server
, я сделал это благодаря этому руководству raspberrypihq по превращению RPi в маршрутизатор.
Тем не менее, у меня сейчас проблемы с выполнением sudo update-rc.d isc-dhcpd-server enable
. Любая помощь будет тепленько принята!
Если это поможет кому-то, я только что прошел через эту раздражающую проблему на DietPi (Debian Buster) на Pi Zero W и нашел решение проблемы.
isc-dhcp-server отличный, но у него есть эта проблема, о которой упомянул оригинальный задающий вопрос выше. Я нашел решение проблемы — это не ошибка — и вот детали причины:
isc-dhcp-server отказывается (выдает ошибку), если не может увидеть поднятую подсеть Ethernet во время запуска; он НЕ требует (в отличие от некоторых комментаторов) фактического подключения к Ethernet порту, к которому он связан.
Когда разрабатывается устройство WiFi точки доступа, обычно используется hostapd в качестве функций сервера AP (который перенастраивает WiFi оборудование для переключения в режим AP), и наряду с hostapd, вам нужен DHCP сервер, такой как isc-dhcp-server, для предоставления услуги аренды IP адресов.
Таким образом: обычно начальная точка — это WiFi устройство, которое при загрузке было настроено как клиентское устройство, но должно быть переключено в режим хоста, чтобы действовать как точка доступа. Таким образом, ранний шаг — установить wlan0 (или что-то подобное) вниз перед запуском hostapd.
НО эта ситуация, сразу же одна из тех, которые isc-dhcp-server не любит: если вы попытаетесь запустить его до hostapd, он завершится неудачей, жалуясь, что нет подсети, на которую он может слушать.
Так что вы можете невинно попробовать добавить новый IP адрес (для хоста) к вашему wlan0 (или эквиваленту) и попробовать снова: ЭТО НЕ СРАБОТАЕТ, потому что, хотя вы теперь имеете новый IP, прикреплённый к Ethernet порту, вы также обнаружите, что не можете установить его «ВВЕРХ» (ip link set wlan0 up завершится неудачей). Это происходит потому, что порт «испорчен» всё ещё активным устаревшим адресом и процессом wpa-supplicant, который его использовал.
КРАТКО: вам нужно убить wpa-supplicant, чтобы «освободить» старый адрес / ОЧИСТИТЬ настройки ip для порта / ЗАТЕМ добавить новый IP адрес для хоста; ДАЖЕ ТЕПЕРЬ, вы обнаружите, что isc-dhcp-server все равно не запускается, потому что вы не можете поднять интерфейс - пока. Наконец - запускайте hostapd теперь, перед isc, и он (в повторной настройке чипсета) также УСТАНОВИТ интерфейс wlan0 в ВВЕРХ. Так что теперь - наконец - вы МОЖЕТЕ запустить isc-dhcp-server, и он запустится без ошибок, и ваша точка доступа будет активна.
РЕШЕНИЕ ЭКСПЛУАТАЦИИ ISC-DHCP-SERVER наряду с HOSTAPD:
ВЫ ДОЛЖНЫ следовать ЭТОЙ СЕКВЕНЦИИ:
УБЕЙТЕ процесс wpa-supplicant (который поддерживает соединение клиента) следующим образом:
kill -2 $( cat /run/wpa_supplicant.wlan0.pid )
sleep 1
kill -9 $( cat /run/wpa_supplicant.wlan0.pid )
ОЧИСТИТЕ настройки WLAN IP, используя:
ip addr flush dev wlan0
ДОБАВЬТЕ новый IP-АДРЕС ХОСТА, используя:
ip addr add 10.1.1.1/24 dev wlan0
ЗАПУСТИТЕ hostapd, который также поставит wlan0 ВВЕРХ:
/usr/sbin/hostapd /etc/hostapd/hostapd.conf &
ЗАПУСТИТЕ isc-dhcp-server ( WLAN поднят, как хост теперь):
sudo service isc-dhcp-server restart
ТОГДА точка доступа должна быть ВВЕРХ и готова к принятию клиентов.
Это, конечно, мои адреса / отредактируйте под свои нужды.
ЕЩЁ ДВА СОВЕТА: Конфигурационные файлы hostapd.conf и dhcp.conf также могут свести вас с ума: - вот рабочие образцы. ВАЖНО: не переживайте из-за 'drivername' в hostapd.conf: это не нужно. 'Закомментировано' — нормально:
hostapd.conf
interface=wlan0
#driver=brcmfmac
ssid=THIS-IS-MY-AP
country_code=US
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
dhcpd.conf
ЗАКОММЕНТИРУЙТЕ ОБЕ ЛИНИИ 'option domain..' И добавьте ЭТО ВНИЗУ:
подсеть 10.1.1.0 маска_подсети 255.255.255.0 { диапазон 10.1.1.100 10.1.1.109; опция широковещательный-адрес 10.1.1.255; опция маршрутизаторы 10.1.1.1; время_аренды_по_умолчанию 600; максимальное_время_аренды 7200; опция доменное_имя "mynetwork.org"; опция доменные_имена-серверов 8.8.8.8, 8.8.4.4; }
Хотя это работает на Pi, это было на DietPi, который является чистым Debian, так что этот же совет должен подойти для многих дистрибутивов Linux, включая Ubuntu различных версий.
Ответ или решение
Исправление ошибки запуска службы isc-dhcp-server на Raspberry Pi
Служба isc-dhcp-server
, используемая для предоставления DHCP-услуг, может не запускаться по различным причинам. В этой статье мы рассмотрим основные шаги по диагностике и исправлению ошибок, возникающих при запуске данной службы на Raspberry Pi.
1. Проверка конфигурационных файлов
Первое, что необходимо сделать — это убедиться в отсутствии ошибок в конфигурационных файлах. Ваша конфигурация /etc/dhcp/dhcpd.conf имеет опечатку в строке с параметром option broadcast-address
, где вместо broadcast-adress
должно быть broadcast-address
.
Исправленный фрагмент конфигурации:
authoritative;
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255; # Исправлено
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
2. Проверка настроек сети
Обратите внимание на /etc/network/interfaces. Вы определили интерфейс wlan0
как статический, что подходит для конфигурации точки доступа. Однако, не дублируйте одно и то же имя интерфейса с разными настройками, так как это может вызвать конфликты.
Исправленный фрагмент интерфейсов:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1 # Исправлено
netmask 255.255.255.0
3. Запуск и диагностика
После внесения изменений перезагрузите сетевой интерфейс, чтобы они вступили в силу:
sudo ifdown wlan0
sudo ifup wlan0
Теперь попробуйте перезапустить службу DHCP:
sudo service isc-dhcp-server start
Если служба не запускается, выполните следующую команду для получения детальной информации о статусе:
systemctl status isc-dhcp-server.service
Или просмотрите журналы для ошибок:
journalctl -xe
4. Удаление конфликтующих процессов
Если вы разрабатываете Wi-Fi точку доступа с использованием hostapd
, убедитесь, что процессы, блокирующие интерфейсы, успешно завершены. В некоторых случаях wpa_supplicant
может мешать запуску DHCP-сервера.
Чтобы остановить wpa_supplicant
, выполните следующие команды:
sudo killall wpa_supplicant
Затем очистите настройки IP на интерфейсе:
sudo ip addr flush dev wlan0
И назначьте новый IP-адрес:
sudo ip addr add 192.168.42.1/24 dev wlan0
5. Запуск Hostapd перед DHCP-сервером
Запустите hostapd
, который настрой код для вашей точки доступа в /etc/hostapd/hostapd.conf:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf &
После того как hostapd
будет запущен и активирует интерфейс, теперь снова запустите isc-dhcp-server
:
sudo service isc-dhcp-server start
Заключение
Следуя описанным шагам, вы сможете успешно запустить службу isc-dhcp-server
на вашем Raspberry Pi и настроить Wi-Fi точку доступа. Помните, что правильная конфигурация сетевых интерфейсов и порядок запуска сервисов являются ключевыми факторами в успешной настройке. Если возникнут дополнительные проблемы, убедитесь, что все конфигурационные файлы находятся в порядке и отсутствуют конфликты между службами.