isc-dhcp-server выходит из строя, если интерфейс не подключен при перезагрузке

В Ubuntu 18.04 на моем сервере шлюза я установил и настроил isc-dhcp-server, но он не запускается (т.е. не запускается), если к enp2s0 ничего не подключено после перезагружать.

Обратите внимание: « Не настроен для прослушивания на каких-либо интерфейсах! »

$ service isc-dhcp-server status
● isc-dhcp-server.service - ISC DHCP IPv4 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2020-01-18 19:05:34 GMT; 1s ago
     Docs: man:dhcpd(8)
  Process: 3475 ExecStart=/bin/sh -ec      CONFIG_FILE=/etc/dhcp/dhcpd.conf;      if [ -f /etc/ltsp/dhcpd.conf ]; then CONFIG_FILE=/etc/ltsp/dhcpd.conf; fi;      [ -e /var/lib/dhcp/dhcpd.leases ] || touch /v
 Main PID: 3475 (code=exited, status=1/FAILURE)

Jan 18 19:05:34 user-Default-string dhcpd[3475]:
Jan 18 19:05:34 user-Default-string dhcpd[3475]: Not configured to listen on any interfaces!
Jan 18 19:05:34 user-Default-string dhcpd[3475]:
Jan 18 19:05:34 user-Default-string dhcpd[3475]: If you think you have received this message due to a bug rather
Jan 18 19:05:34 user-Default-string dhcpd[3475]: than a configuration issue please read the section on submitting
Jan 18 19:05:34 user-Default-string dhcpd[3475]: bugs on either our web page at www.isc.org or in the README file
Jan 18 19:05:34 user-Default-string dhcpd[3475]: before submitting a bug.  These pages explain the proper
Jan 18 19:05:34 user-Default-string dhcpd[3475]: process and the information we find helpful for debugging..
Jan 18 19:05:34 user-Default-string dhcpd[3475]:
Jan 18 19:05:34 user-Default-string dhcpd[3475]: exiting.

Мой сервер шлюза имеет два порта Ethernet, enp1s0 и enp2s0. Я использую enp1s0 для доступа в Интернет через маршрутизатор, а enp2s0 просто для обслуживания веб-приложения на ноутбуках, подключенных к сети Ethernet. enp2s0 - это тот, для которого DHCP-сервер назначает IP-адреса (для ноутбуков, которым требуется веб-приложение). Я хочу, чтобы enp1s0 получал случайный IP-адрес от подключенного к Интернету маршрутизатора в подсети 192.168.1.0, чтобы этот интерфейс не управлялся isc-dhcp-server, только enp2s0.

Вот "ip-маршрут" без ничего связанного с enp2s0, если это может помочь ...

$ ip route
default via 192.168.1.254 dev enp1s0 proto dhcp metric 100
169.254.0.0/16 dev enp1s0 scope link metric 1000
192.168.1.0/24 dev enp1s0 proto kernel scope link src 192.168.1.76 metric 100

Вот моя настройка dhcpd.conf:

default-lease-time 600;
max-lease-time 7200;

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# This is a very basic subnet declaration.    
subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.200 192.168.2.250;
  # option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
  option broadcast-address 192.168.2.255;
}

Вот моя настройка isc-dhcp-сервера:

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="enp2s0"
INTERFACESv6=""

Одно из решений - перезапустите isc-dhcp-server после подключения ноутбука к enp2s0, но я не хочу делать это после каждой перезагрузки или каждый раз, когда кто-то подключает ноутбук к enp2s0. Сервер DHCP работает после перезапуска службы ...

$ sudo service isc-dhcp-server restart
$ service isc-dhcp-server status
● isc-dhcp-server.service - ISC DHCP IPv4 server
   Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-18 18:22:01 GMT; 14min ago
     Docs: man:dhcpd(8)
 Main PID: 2437 (dhcpd)
    Tasks: 1 (limit: 2016)
   CGroup: /system.slice/isc-dhcp-server.service
           └─2437 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf enp2s0

Есть идеи? Я уверен, что мне не хватает конфигурации, которая решит эту проблему ...

РЕДАКТИРОВАТЬ: Вывод команды «nmcli connection show lan» (AKA: nmcli cs lan)

$ nmcli connection show lan

connection.id:                          lan
connection.uuid:                        96fbb458-1178-4af2-a1b7-ccce301176e0
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp2s0
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.auth-retries:                -1
connection.timestamp:                   1579379514
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            manual
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.2.2/24
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)
ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       ""
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     stable-privacy
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
ipv6.token:                             --
proxy.method:                           none
proxy.browser-only:                     no
proxy.pac-url:                          --
proxy.pac-script:                       --

EDIT2: добавлен вывод из «nmcli -f name, autoconnect connection show»

$ nmcli -f name,autoconnect connection show
NAME                AUTOCONNECT
Wired connection 1  yes
lan                 yes

EDIT3: добавлен вывод из «cat / etc / NetworkManager / system -connections / lan "

[connection]
id=lan
uuid=96fbb458-1178-4af2-a1b7-ccce301176e0
type=ethernet
interface-name=enp2s0
permissions=
timestamp=1579379263

[ethernet]
mac-address-blacklist=

[ipv4]
address1=192.168.2.2/24
dns-search=
method=manual

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
0
задан 19 January 2020 в 01:47
3 ответа

Интерфейс (enp2s0) вообще? Ему необходимо добавить IPv4-адрес, а затем запустить его (запустить)

Не имеет значения, подключены ли какие-либо клиенты к концентратору / коммутатору.

Изменить: Сетевой менеджер?

Я страстно ненавижу эту штуку, но в любом случае: если iface не работает с правильным адресом, dhcpd не запускается, поэтому вам нужно выяснить, как с помощью nmcli создать статическую конфигурацию, которая всегда вверх.

Редактировать: Что это показывает?

nmcli connection show lan

Интересно свойство connection.autoconnection.

Изменить: Что показывает это:

  nmcli -f name,autoconnect connection show

Хорошо, каков статус

  nmcli -f name,autoconnect connection show

после перезагрузки без вашего взлома? Свойство autoconnect должно быть достаточно, чтобы вызвать интерфейс ... незнание, почему что-то выходит из строя в чем-то, что в основном очень простое, - одно из моих антипатий в NetworkManager (слишком сложный для неизвестных преимуществ, я вижу смысл для клиентов, который постоянно на ходу, но серверы, которые должны просто работать ??)

Edit: любые файлы в etc / NetworkManger / system-connections? По крайней мере, так я настроил устройства в своей системе (это конфигурация с мостом), поэтому я использую NetworkManager для запуска машины. Машина является хостом для трех гостей, поэтому устройство enp1s0 является подчиненным.

Изменить: что произойдет, если вы определите устройство локальной сети (сначала полностью удалите его), например:

nmcli connection down lan 
nmcli connection delete lan
nmcli connection add type ethernet ifname enp2s0 con-name lan autoconnect on
nmcli connection modify lan   ipv4.method manual ipv4.addresses 192.168.2.2/24 
nmcli connection lan up
1
ответ дан 21 January 2020 в 01:20

Если нет лучшего решения, сейчас это работает для меня: когда мое веб-приложение запускается, первые две вещи, которые он выполняет:

  1. sudo nmcli conn up lan ('lan' - это имя соединения NetworkManager, назначенное enp2s0)
  2. sudo service isc-dhcp-server restart

Веб-приложение запланировано cron для запуска @reboot, поэтому NetworkManager был запущен к этому моменту.

isc-dhcp-server всегда дает сбой, если enp2s0 еще не "включен", поэтому мне нужно настроить его "вверх", а затем перезапустить службу isc-dhcp-server. Это не очень элегантно, но пока работает.

0
ответ дан 21 January 2020 в 01:20

В СЛУЧАЕ, ЕСЛИ ЭТО ПОМОЖЕТ КОМУ Я только что разобрался с этой надоедливой проблемой на DietPi (Debian Buster)на Pi Zero W и РЕШИЛ ПРОБЛЕМУ.

isc-dhcp-сервер отличный, но ДЕЙСТВИТЕЛЬНО ИМЕЕТ эту особенность, как было отмечено первоначальным запросчиком выше. Я решил проблему -это не ошибка -и это подробно о причине:

  1. isc-dhcp-сервер отказывается (выдает ошибку)если он не видит подсеть сети Ethernet UP во время запуска; он НЕ (вопреки мнению некоторых комментаторов)не требует фактического подключения к Ethernet-порту, с которым он связан.

  2. При разработке устройства точки доступа Wi-Fi обычно используется hostapd в качестве функции сервера точки доступа (, которая пере-настраивает оборудование Wi-Fi для переключения в режим точки доступа). сервер, например isc-dhcp-server, для предоставления услуги аренды IP-адресов.

  3. SO:Обычно начальной точкой является WiFi-устройство, которое при загрузке было настроено как КЛИЕНТСКОЕ устройство, но его необходимо переключен в режим HOST для работы в качестве точки доступа. Таким образом, первым шагом будет установка wlan0 (или чего-либо еще )ВНИЗ перед запуском hostapd.

НО та ситуация, сразу одна из тех, что isc-dhcp-серверу не нравится:если попытаться запустить его до hostapd, он потерпит неудачу, жалуясь, что нет подсети для прослушивания.

  1. Итак, вы можете невинно попытаться,добавление нового IP-адреса (для хоста)в ваш wlan0 (или эквивалент)и повторная-попытка:ЭТО ТАКЖЕ НЕ БУДЕТ РАБОТАТЬ, потому что, хотя теперь у вас есть новый IP-адрес, подключенный к порту Ethernet, вы также обнаружите, что не можете установить его «UP» (ip link set wlan0 up will FAIL). Это связано с тем, что порт "испорчен" все еще-активным устаревший адрес и процесс wpa-supplicant, который его использовал.

  2. ДЛИННАЯ ИСТОРИЯ:вам нужно убить wpa-supplicant, чтобы «освободить» старый адрес / ОЧИСТИТЬ настройки ip для порта / ЗАТЕМ добавить новый IP-адрес для хоста; ДАЖЕ ТОГДА вы обнаружите, что isc-dhcp-server ВСЕ ЕЩЕ не запускается, потому что вы не можете установить интерфейс up -еще. Наконец, -запустите hostapd сейчас, перед isc, и ИТ-отдел (при перенастройке набора микросхем)также УСТАНОВИТ интерфейс wlan0 в UP. Итак, теперь -, наконец, -вы МОЖЕТЕ запустить isc-dhcp-сервер, и он запустится без проблем, и ваша точка доступа будет работать.

На это у меня ушло около пяти часов, надеюсь, это сэкономит кому-то время. Моя дистиллированная заметка:

СОРТИРОВКА ISC-DHCP-СЕРВЕРА вместе с HOSTAPD:РЕШЕНИЕ

ВЫ ДОЛЖНЫ следовать ЭТОЙ ПОСЛЕДОВАТЕЛЬНОСТИ:

  1. УБИТЬ процесс wpa-supplicant (, который поддерживает клиент соединение )таким образом:

     kill -2  $( cat /run/wpa_supplicant.wlan0.pid )
    
     sleep 1
    
     kill -9  $( cat /run/wpa_supplicant.wlan0.pid )
    
  2. ОЧИСТИТЕ настройку IP WLAN, используя:

    ip addr flush dev wlan0
    
  3. ДОБАВЬТЕ новый IP-АДРЕС хоста, используя:

    ip addr add 10.1.1.1/24 dev wlan0
    
  4. START hostapd, который также установит wlan0 UP:

     /usr/sbin/hostapd /etc/hostapd/hostapd.conf &
    
  5. START isc-dhcp-сервер (WLAN работает как хост сейчас):

     sudo service isc-dhcp-server restart
    

ТОГДА точка доступа должна быть ВКЛЮЧЕНА и готова принимать клиентов.

Конечно же, это мои адреса / отредактируйте, чтобы удовлетворить ваши потребности.

ЕЩЕ ДВА СОВЕТА:Файлы конфигурации hostapd.conf и dhcp.conf также могут свести вас с ума: -вот рабочие примеры. ВАЖНО:не перепутайте «имя драйвера» в 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

# COMMENT OUT BOTH OF THE TEMPLATES' 'option domain..' lines.. 
# then ADD THIS AT BOTTOM
#
#
subnet 10.1.1.0 netmask 255.255.255.0 {
        range 10.1.1.100 10.1.1.109;
        option broadcast-address 10.1.1.255;
        option routers 10.1.1.1;
        default-lease-time 600;
        max-lease-time 7200;
        option domain-name "mynetwork.org";
        option domain-name-servers 8.8.8.8, 8.8.4.4;
}
#
#

Хотя эта работа над Pi была на DietPi, который является прямым Debian,так что этот же совет должен подойти многим Linux, включая Ububtus многих разновидностей.

УДАЧИ ВСЕМ

0
ответ дан 22 September 2021 в 11:14

Теги

Похожие вопросы