isc-dhcp-server autorun after reboot

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 08.04.2020 14:39:47

/etc/init.d/isc-dhcp-server

Code: Alles auswählen

#!/bin/sh

### BEGIN INIT INFO
# Provides:          isc-dhcp-server
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:      $local_fs slapd $named
# Should-Stop:       $local_fs slapd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DHCP server
# Description:       Dynamic Host Configuration Protocol Server
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

test -f /usr/sbin/dhcpd || exit 0

DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp-server}"

# It is not safe to start if we don't have a default configuration...
if [ ! -f "$DHCPD_DEFAULT" ]; then
        echo "$DHCPD_DEFAULT does not exist! - Aborting..."
        if [ "$DHCPD_DEFAULT" = "/etc/default/isc-dhcp-server" ]; then
                echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem."
        fi
        exit 0
fi

. /lib/lsb/init-functions

# Read init script configuration
[ -f "$DHCPD_DEFAULT" ] && . "$DHCPD_DEFAULT"

NAME4=dhcpd
NAME6=dhcpd6

DESC4="ISC DHCPv4 server"
DESC6="ISC DHCPv6 server"

# use already specified config file or fallback to defaults
DHCPDv4_CONF=${DHCPDv4_CONF:-/etc/dhcp/dhcpd.conf}
DHCPDv6_CONF=${DHCPDv6_CONF:-/etc/dhcp/dhcpd6.conf}

# try to read pid file name from config file or fallback to defaults
if [ -z "$DHCPDv4_PID" ]; then
        DHCPDv4_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"\(.*\)"[ \t]*;.*$/\1/p' < "$DHCPDv4_CONF" 2>/dev/null | head -n 1)
fi
if [ -z "$DHCPDv6_PID" ]; then
        DHCPDv6_PID=$(sed -n -e 's/^[ \t]*dhcpv6-pid-file-name[ \t]*"\(.*\)"[ \t]*;.*$/\1/p' < "$DHCPDv6_CONF" 2>/dev/null | head -n 1)
fi
DHCPDv4_PID="${DHCPDv4_PID:-/var/run/dhcpd.pid}"
DHCPDv6_PID="${DHCPDv6_PID:-/var/run/dhcpd6.pid}"

test_config()
{
        VERSION="$1"
        CONF="$2"

        if ! /usr/sbin/dhcpd -t $VERSION -q -cf "$CONF" > /dev/null 2>&1; then
                echo "dhcpd self-test failed. Please fix $CONF."
                echo "The error was: "
                /usr/sbin/dhcpd -t $VERSION -cf "$CONF"
                exit 1
        fi
}

check_status()
{
        OPTION="$1"
        PIDFILE="$2"
        NAME="$3"

        if [ ! -r "$PIDFILE" ]; then
                test "$OPTION" != -v || echo "$NAME is not running."
                return 3
        fi

        if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
                test "$OPTION" != -v || echo "$NAME is running."
                return 0
        else
                test "$OPTION" != -v || echo "$NAME is not running but $PIDFILE exists."
                return 1
        fi
}

start_daemon()
{
        VERSION="$1"
        CONF="$2"
        NAME="$3"
        PIDFILE="$4"
        DESC="$5"

        shift 5
        INTERFACES="$*"

        test_config "$VERSION" "$CONF"
        log_daemon_msg "Starting $DESC" "$NAME"

        if [ -e "$PIDFILE" ]; then
                log_failure_msg "dhcpd service already running (pid file $PIDFILE currenty exists)"
                exit 1
        fi

        touch /var/lib/dhcp/$NAME.leases

        start-stop-daemon --start --quiet --pidfile $PIDFILE \
                --exec /usr/sbin/dhcpd -- $VERSION -q -cf $CONF $INTERFACES
        sleep 2

        if check_status -q $PIDFILE $NAME; then
                log_end_msg 0
        else
                log_failure_msg "check syslog for diagnostics."
                log_end_msg 1
                exit 1
        fi
}

stop_daemon()
{
        if check_status -q $DHCPDv4_PID $NAME4; then
                log_daemon_msg "Stopping $DESC4" "$NAME4"
                start-stop-daemon --stop --quiet --pidfile $DHCPDv4_PID
                log_end_msg $?
                rm -f "$DHCPDv4_PID"
        fi

        if check_status -q $DHCPDv6_PID $NAME6; then
                log_daemon_msg "Stopping $DESC6" "$NAME6"
                start-stop-daemon --stop --quiet --pidfile $DHCPDv6_PID
                log_end_msg $?
                rm -f "$DHCPDv6_PID"
        fi
}

case "$1" in
        start)
                if test -n "$INTERFACES" -a -z "$INTERFACESv4"; then
                        echo "DHCPv4 interfaces are no longer set by the INTERFACES variable in" >&2
                        echo "/etc/default/isc-dhcp-server.  Please use INTERFACESv4 instead." >&2
                        echo "Migrating automatically for now, but this will go away in the future." >&2
                        INTERFACESv4="$INTERFACES"
                fi
                if test -n "$INTERFACESv4"; then
                        echo "Launching IPv4 server only."
                        start_daemon "-4" "$DHCPDv4_CONF" "$NAME4" \
                                "$DHCPDv4_PID" "$DESC4" "$INTERFACESv4"
                fi
                if test -n "$INTERFACESv6"; then
                        echo "Launching IPv6 server only."
                        start_daemon "-6" "$DHCPDv6_CONF" "$NAME6" \
                                "$DHCPDv6_PID" "$DESC6" "$INTERFACESv6"
                fi
                if test -z "$INTERFACESv4" -a -z "$INTERFACESv6"; then
                        echo "Launching both IPv4 and IPv6 servers (please configure INTERFACES in /etc/default/isc-dhcp-server if you only want one or the other)."
                        start_daemon "-4" "$DHCPDv4_CONF" "$NAME4" \
                                "$DHCPDv4_PID" "$DESC4" ""
                        start_daemon "-6" "$DHCPDv6_CONF" "$NAME6" \
                                "$DHCPDv6_PID" "$DESC6" ""
                fi
                ;;
        stop)
                stop_daemon
                ;;
        restart | force-reload)
                $0 stop
                sleep 2
                $0 start
                if [ "$?" != "0" ]; then
                        exit 1
                fi
                ;;
        status)
                if test -n "$INTERFACES" -a -z "$INTERFACESv4"; then
                        INTERFACESv4="$INTERFACES"
                fi
                if test -n "$INTERFACESv4"; then
                        echo -n "Status of $DESC4: "
                        check_status -v $DHCPDv4_PID $NAME4 || exit $?
                fi
                if test -n "$INTERFACESv6"; then
                        echo -n "Status of $DESC6: "
                        check_status -v $DHCPDv6_PID $NAME6 || exit $?
                fi
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|force-reload|status}"
                exit 1
esac

exit 0
kann man hier sowas wie

Code: Alles auswählen

Wants=network-online.target
After=network-online.target
einarbeiten?

mat6937
Beiträge: 2956
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server autorun after reboot

Beitrag von mat6937 » 08.04.2020 14:43:36

mat6937 hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:31:14
Stue hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:25:29

Code: Alles auswählen

Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/isc-dhcp-server
Das ist eine generierte (und keine native) service-unit. Die kann man nicht editieren/optimieren.

Wenn man was optimieren kann, dann evtl. nur indirekt in Start-Stop-Script "/etc/init.d/isc-dhcp-server". Welche "Abhängigkeiten" sind im Start-Stop-Script eingetragen?
EDIT:

Lauscht dein DHCP-Server evtl. auch für IPv6 (obwohl das nicht benötigt wird bzw. ignoriert wird)? Wenn ja, dann ändere:

Code: Alles auswählen

net.ipv6.ip_nonlocal_bind = 0
in

Code: Alles auswählen

net.ipv6.ip_nonlocal_bind = 1
Wenn Du auf deinem PI kein IPv6 benutzt, dann mit dem boot-parameter in der /boot/cmdline.txt temporär deaktivieren und testen.

mat6937
Beiträge: 2956
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server autorun after reboot

Beitrag von mat6937 » 08.04.2020 14:47:45

Stue hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:39:47
/etc/init.d/isc-dhcp-server

Code: Alles auswählen

#!/bin/sh

### BEGIN INIT INFO
# Provides:          isc-dhcp-server
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:      $local_fs slapd $named
# Should-Stop:       $local_fs slapd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DHCP server
# Description:       Dynamic Host Configuration Protocol Server
### END INIT INFO
kann man hier sowas wie

Code: Alles auswählen

Wants=network-online.target
After=network-online.target
einarbeiten?
Versuch mal in der Zeile:

Code: Alles auswählen

# Required-Start:    $remote_fs $network $syslog
mit "$all":

Code: Alles auswählen

# Required-Start:    $remote_fs $network $syslog $all
und schau nach der Änderung und dem rebooten nach, ob diese Ergänzung eine Auswirkung auf dem Inhalt der generierten service-unit hat und wenn ja, dann auch auf das Startverhalten des isc-dhcp-server.

Benutzeravatar
MSfree
Beiträge: 10810
Registriert: 25.09.2007 19:59:30

Re: isc-dhcp-server autorun after reboot

Beitrag von MSfree » 08.04.2020 14:58:54

Stue hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:01:08
ja es ist immer schwierig, sich unmissverständlich auszudrücken. Vieleicht so:

Internet <- Fritzbox(192.168.178.0 bzw. fritz.box) <- RPi4b -> DLINK (192.168.251.0 bzw. my.home)
Nochmal: du willst, daß der Raspi per wlan0 mit dem DLINK als Client verbunden ist und gleichzeitig als WLAN-AP auf der selben wlan0 Schnittstelle arbeitet?
Ist es so ungewöhnlich, dass isc-dhcp-service automatisch nachm boot starten soll?
Nein, da ist eigentlich das gewollte Verhalten und funktioniert bei mir auch völlig problemlos. Allerdings versuche ich auch nicht, wlan0 als WLAN-Client und als WLAN-Server gleichzeitig zu betreiben und ich behaupte einfach mal, daß geht nicht.

Dein Problem ist also nicht das Startverhalten des DHCP-Servers sondern der Versuch, deine WLAN-Schnittstelle in einer Art und Weise zu verwenden, die so nicht vorgesehen ist.

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 08.04.2020 15:55:41

MSfree hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:58:54
Nochmal: du willst, daß der Raspi per wlan0 mit dem DLINK als Client verbunden ist und gleichzeitig als WLAN-AP auf der selben wlan0 Schnittstelle arbeitet?
DLINK = 192.168.251.1 (static IP)
2,4 WiFi AP (stellt WLAN-Name + SSID bereit)
kein DHDCP, kein DNS
alle Clients melden sich per WLAN am DLINK an

Raspi = 192.168.251.200 (static IP)
2,4 WiFi (Client)
DNS+DHCP Server (bind9+isc-dhcp)
MSfree hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:58:54
Nein, da ist eigentlich das gewollte Verhalten und funktioniert bei mir auch völlig problemlos. Allerdings versuche ich auch nicht, wlan0 als WLAN-Client und als WLAN-Server gleichzeitig zu betreiben und ich behaupte einfach mal, daß geht nicht.
wenn ich dich richtig verstehe, gehst du davon aus, dass sich die Clients beim Raspi anmelden sollen. Das ist aber nicht der Fall. Die Clients melden sich WiFi-mäßig beim DLINK an und bekommen dann DHCP+DNS vom Raspi
MSfree hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:58:54
Dein Problem ist also nicht das Startverhalten des DHCP-Servers sondern der Versuch, deine WLAN-Schnittstelle in einer Art und Weise zu verwenden, die so nicht vorgesehen ist.

Äääääh. Ich drücke mich wahrscheinlich zu "nicht fachmännisch" aus.
Eigentlich will ich einfach nur den DNS und DHCP Server vom Router auslagern. Das klappt ja auch alles in real. nur der Dienst muss immer händisch getriggert werden.

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 08.04.2020 16:00:58

mat6937 hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 14:43:36
Wenn Du auf deinem PI kein IPv6 benutzt, dann mit dem boot-parameter in der /boot/cmdline.txt temporär deaktivieren und testen.

Code: Alles auswählen

sudo sysctl -p
net.ipv4.ip_nonlocal_bind = 1
net.ipv6.conf.all.disable_ipv6 = 1

beim reboot und anschließendem automatischen Start vom isc-dhcp-service kommt weiterhin "
Apr 08 12:45:36 ns1 dhcpd[547]: No subnet declaration for wlan0 (no IPv4 addresses).
Apr 08 12:45:36 ns1 dhcpd[547]: ** Ignoring requests on wlan0. If this is not what
Apr 08 12:45:36 ns1 dhcpd[547]: you want, please write a subnet declaration
Apr 08 12:45:36 ns1 dhcpd[547]: in your dhcpd.conf file for the network segment
Apr 08 12:45:36 ns1 dhcpd[547]: to which interface wlan0 is attached. **
ich komm gar nicht hinterher, die ganzen Tipps auszuprobieren :P

EDIT:
vielleicht mal die nichts-sagende Ausgabe, wenn ich den service händisch starte:
sudo /etc/init.d/isc-dhcp-server start
Apr 08 15:02:09 ns1 isc-dhcp-server[855]: Launching IPv4 server only.
Apr 08 15:02:09 ns1 dhcpd[865]: Internet Systems Consortium DHCP Server 4.4.1
Apr 08 15:02:09 ns1 dhcpd[865]: Copyright 2004-2018 Internet Systems Consortium.
Apr 08 15:02:09 ns1 dhcpd[865]: All rights reserved.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: isc-dhcp-server autorun after reboot

Beitrag von eggy » 08.04.2020 16:07:33

Stue hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 11:45:21
Entweder irgendeine config passt bei mir nicht, oder dieses Verhalten ist "normal".
Ja, ist "normal". Ist auch irgendwo in der ISC-DHCPD Doku ausführlich dokumentiert.
Grundsätzlich gilt, ein DHCP-Server sollte immer die zum Range passenden Antworten liefern.
Stell Dir vor, Dein Server hätte zwei Netzwerkkarten und liefert 10.x.x.x und 192.168.2.x aus.
Wäre blöd, wenn die Clients auf der linken Seite, die eigentlich die 10er bekommen sollen, nun ab und an mal mit 192ern versorgt werden würde.
Also, daher Server liefert nur das aus, was ans Interface passt. Wenn der Server beim Start nicht weis, was passen würde, startet er eben nicht.
Lösung: erst WLAN starten, warten bis IP da, dann den isc-dhcpd. Früher via /etc/network/if-up.d/ heute via systemd unit.
Bessere Lösung: dem DHCP-Server ne statische IP geben und die im Range ausschließen.

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 08.04.2020 16:16:41

eggy hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 16:07:33
Lösung: erst WLAN starten, warten bis IP da, dann den isc-dhcpd. Früher via /etc/network/if-up.d/ heute via systemd unit.
Bessere Lösung: dem DHCP-Server ne statische IP geben und die im Range ausschließen.
Ja genau die Befehle dafür suche ich ja die ganze Zeit (bzw. die passenden confs)

Mein Raspi hat ja ne statische IP aufm wlan0-Interface und eth0 wird vom dhcp nicht betrachtet (siehe /etc/default/isc-dhcp-server ). Diese IP ist auch außerhalb der DHCP-Range

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: isc-dhcp-server autorun after reboot

Beitrag von eggy » 08.04.2020 16:32:26

/etc/network/interfaces

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 08.04.2020 21:31:39

Mit den systemd units komm ich eher schlecht zurecht.
Unabhängig davon:

sudo systemd-analyze blame:

6.750s hciuart.service
2.435s isc-dhcp-server.service
2.131s dev-mmcblk0p2.device
1.133s rpi-eeprom-update.service
1.132s udisks2.service
535ms systemd-timesyncd.service
532ms dphys-swapfile.service
473ms raspi-config.service
468ms systemd-logind.service
445ms systemd-udev-trigger.service
436ms bind9.service
436ms wpa_supplicant.service
429ms keyboard-setup.service
392ms systemd-fsck@dev-disk-by\x2dpartuuid-97709164\x2d01.service
388ms networking.service
386ms plymouth-quit-wait.service
352ms lightdm.service
339ms systemd-journald.service
321ms avahi-daemon.service
316ms dhcpcd.service
310ms ssh.service
307ms triggerhappy.service
297ms rsyslog.service
286ms media-usbstick.mount
246ms rng-tools.service
245ms polkit.service
238ms gldriver-test.service
234ms user@1000.service
220ms systemd-fsck-root.service
194ms systemd-remount-fs.service
158ms systemd-udevd.service
136ms systemd-tmpfiles-setup.service
112ms dev-mqueue.mount
110ms run-rpc_pipefs.mount

Nach meinem empfinden kann der Dienst doch gar nicht später (automatisch) gestartet werden.
Müssten zu diesem Zeitpunkt nicht schon die Interfaces startklar sein (und der ganze Rest)?

mat6937
Beiträge: 2956
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server autorun after reboot

Beitrag von mat6937 » 08.04.2020 22:46:38

Stue hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 21:31:39
sudo systemd-analyze blame:

316ms dhcpcd.service

Nach meinem empfinden kann der Dienst doch gar nicht später (automatisch) gestartet werden.
Müssten zu diesem Zeitpunkt nicht schon die Interfaces startklar sein (und der ganze Rest)?
Benutzt Du dhcpcd für das zuweisen der statischen IP-Adresse beim wlan0-Interface? Wenn ja, dann versuch mal mit systemd-networkd (und deaktiviertem dhcpcd).

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 09.04.2020 15:08:02

mat6937 hat geschrieben: ↑ zum Beitrag ↑
08.04.2020 22:46:38
Benutzt Du dhcpcd für das zuweisen der statischen IP-Adresse beim wlan0-Interface? Wenn ja, dann versuch mal mit systemd-networkd (und deaktiviertem dhcpcd).
habe dhcpcd disabled, systemd-networkd erfolgreich eingerichtet, aber der isc-dhcp-server failed weiterhin beim initial boot.
starte ich den isc-dhcp-server manuell, läuft alles wie es soll.

Ist die Dauer der Anmeldung am WifiRouter (SSID+passphrase) vielleicht einfach länger, als der boot-Vorgang? Also der Raspi ist fertig mit booten, die Interfaces sind "aktiv", aber der "Handshake" zwischen wlan0 und DLINK läuft noch, während isc-dhcp-server initial getriggert wurde und feststellt, dass noch keine WLAN-Verbindung abgeschlossen wurde?

kann man isc-dhcp-server anweisen zu restarten, bis eine Verbindung aufgebaut wurde (vielleicht mit nem delay)?
Wenn das per systemd units geschehen soll bräuchte ich genauere Infos. Damit bin ich noch nicht so warm geworden.

Benutzeravatar
MSfree
Beiträge: 10810
Registriert: 25.09.2007 19:59:30

Re: isc-dhcp-server autorun after reboot

Beitrag von MSfree » 09.04.2020 16:18:13

Stue hat geschrieben: ↑ zum Beitrag ↑
09.04.2020 15:08:02
Ist die Dauer der Anmeldung am WifiRouter (SSID+passphrase) vielleicht einfach länger, als der boot-Vorgang?
Sagen wir es mal so, die WiFi-Anmeldung ist noch nicht fertig, wenn der dhcpd gestartet wird.
kann man isc-dhcp-server anweisen zu restarten, bis eine Verbindung aufgebaut wurde (vielleicht mit nem delay)?
Nein. Das größte Problem ist, daß der isc-dhcp-server noch nach der traditionellen SysV-Init-Methode gestartet wird. systemd stellt dafür automatisch Startunits her, und daß deren Reihenfolge korrekt ist, kann man nur hoffen. Beeinflussen kann man sie meines Wissens nicht.

Vielleicht solltest du einfach mal einen anderen DHCP-Server versuchen. Debiandnsmasq käme mir da in den Sinn. Das ist ein kombinierter DNS/DHCP-Server, der auch noch deutlich einfacher zu konfigurieren ist als das bind9/isc-dhcp-server-Gespann. Der ist dann vielleicht auch schon "richtig" auf systemd umgestellt.

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 09.04.2020 16:52:27

Naja, jetzt wo ich mich stundenlang zum thema bind9 und isc-dhcp belesen habe, das Ding endlich am laufen habe fällt es mir schwer mich dazu zu motivieren, dnsmasq (ja, wäre von Anfang an die simplere Methode gewesen) zu nutzen, nur weil der isc-dhcp-dienst nicht automatisch startet.
Laienhaft betrachtet brauch ich doch nur nen "script" einbauen, was ca. 60 Sekunden nachm booten sagt:
"Hey, ich checke, ob wlan0 ne Verbindung aufgebaut hat und starte jetzt den isc-dhcp-server per "systemctl start isc-dhcp-server.service. Was?! Noch keine Verbindung? Hey dann probier ich es in 60 Sekunden nochmal!".

Also ich kenne mich ja nicht wirklich mit linux aus, aber das muss doch möglich sein?! Alleine, dass man nen retry nicht direkt im Dienst oder beim booten angeben kann verwundert mich schon sehr. 8O

Benutzeravatar
MSfree
Beiträge: 10810
Registriert: 25.09.2007 19:59:30

Re: isc-dhcp-server autorun after reboot

Beitrag von MSfree » 09.04.2020 18:33:06

Stue hat geschrieben: ↑ zum Beitrag ↑
09.04.2020 16:52:27
Laienhaft betrachtet brauch ich doch nur nen "script" einbauen, was ca. 60 Sekunden nachm booten sagt:
"Hey, ich checke, ob wlan0 ne Verbindung aufgebaut hat und starte jetzt den isc-dhcp-server per "systemctl start isc-dhcp-server.service. Was?! Noch keine Verbindung? Hey dann probier ich es in 60 Sekunden nochmal!".
Das ist die denkbar häßlichste Lösung, deshalb habe ich dazu auch noch keine Anleitung gegeben. :wink:
Von solchem Pfusch halte ich nämlich gar nichts.
Also ich kenne mich ja nicht wirklich mit linux aus, aber das muss doch möglich sein?! Alleine, dass man nen retry nicht direkt im Dienst oder beim booten angeben kann verwundert mich schon sehr. 8O
Natürlich geht das. Mit systemd gibt es den Parameter RETRY in den Startunits. Blöd nur, daß isc-dhcpd nicht durch eine native systemd-Unit gestartet wird sondern über eine SysV-Init-Kompatibilitätsunit. Das haben die Debianmeintainer offensichtlich noch nicht portiert.

Als absolutes Notfallworkaround kannst du den Aufruf

Code: Alles auswählen

/etc/init.d/isc-dhcp-server start
in die Datei /etc/rc.local einbauen. /etc/rc.local wird auf jeden Fall als letzter Vorgang im Bootprozeß aufgerufen. Sollte /etc/rc.local nicht existieren, dann lege sie neu mit einem Editor an und schreibe folgendes dort rein:

Code: Alles auswählen

#!/bin/sh -e
/etc/init.d/isc-dhcp-server start
exit 0
Die Datei muß dann noch root gehören und ausführbar sein:

Code: Alles auswählen

chown root.root /etc/rc.local
chmod 755 /etc/rc.local

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 09.04.2020 19:48:14

MSfree hat geschrieben: ↑ zum Beitrag ↑
09.04.2020 18:33:06
Das ist die denkbar häßlichste Lösung, deshalb habe ich dazu auch noch keine Anleitung gegeben. :wink:
Von solchem Pfusch halte ich nämlich gar nichts.
Sie gefällt mir genau so wenig und deswegen habe ich ja auch diesen Beitrag gepostet und gehofft, dass erfahrene Nutzer den richtigen, sauberen Weg kennen und erläutern.
Aber wenn es keine andere saubere Möglichkeit gibt isc-dhcp-server mit wlan0 als "wifi-Client-interface" (wieder missverständlich) zu verbinden, dann muss ich wohl erstmal darauf zurück greifen.

Ich bedanke mich für die Erläuterungen und Hilfestellungen.

Wenn jemand noch ne saubere Möglichkeit kennt: ich bin weiterhin beratungswillig :THX:

Benutzeravatar
MSfree
Beiträge: 10810
Registriert: 25.09.2007 19:59:30

Re: isc-dhcp-server autorun after reboot

Beitrag von MSfree » 09.04.2020 20:15:21

Wie gesagt, probier einfach mal die "Lösung" mittels rc.local, die ich oben vorgeschlagen habe.

Als letzten Notanker kann man natürlich auch einen Job durch cron starten lassen, der z.B. 2 Minuten nachm dem Boot gestartet wird.

mat6937
Beiträge: 2956
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server autorun after reboot

Beitrag von mat6937 » 10.04.2020 00:47:10

Stue hat geschrieben: ↑ zum Beitrag ↑
09.04.2020 15:08:02
kann man isc-dhcp-server anweisen zu restarten, bis eine Verbindung aufgebaut wurde (vielleicht mit nem delay)?
Wenn das per systemd units geschehen soll bräuchte ich genauere Infos. Damit bin ich noch nicht so warm geworden.
Ja, das sollte kein Problem sein, denn dafür gibt es mit systemd die timer-units.
Du deaktivierst die generierte service-unit für isc-dhcp-server und schreibst eine native service-unit für isc-dhcp-server. Als Muster kannst Du den Inhalt der generierten service-unit benutzen. Die native service-unit musst Du nicht aktivieren, denn zum starten der nativen service-unit benutzt Du einer timer-unit. Die timer-unit kann isc-dhcp-server nach dem booten (z. b. 60 Sekunden) starten.

Siehe z. B.: https://wiki.ubuntuusers.de/systemd/Timer_Units/

EDIT:

Teste aber vorher wie eine timer-unit mit der generierten service-unit umgehen kann. D. h., ob die timer-unit die generierte service-unit, 60 Sekunden nach dem booten (re)starten kann. Wenn ja, dann wäre das m. E. die einfachste Lösung.

Stue
Beiträge: 25
Registriert: 29.03.2020 20:08:58

Re: isc-dhcp-server autorun after reboot

Beitrag von Stue » 10.04.2020 10:54:48

Ich werde das so umsetzen.

Nur nice to know:
Wie bewertet der "Fachmann" die Timer Unit-Variante? Ist diese Lösung ähnlich "unsauber" wie cronjob oder rc.local?
Timer Units können also Aufgaben übernehmen, welche traditionell von Cron ausgeführt werden. Aber Timer Units können nicht nur Befehle zu einem festen Zeitpunkt ausführen (z.B. "um Mitternacht"), sondern auch relativ zum Systemstart (z.B. "5 Minuten später").
Wo liegen außerdem die Vorteile bei Timer Units, bzw. die Nachteile bei cronjobs?

Naiv gefragt: Warum gilt das als unsauber?

mat6937
Beiträge: 2956
Registriert: 09.12.2014 10:44:00

Re: isc-dhcp-server autorun after reboot

Beitrag von mat6937 » 10.04.2020 11:00:19

Stue hat geschrieben: ↑ zum Beitrag ↑
10.04.2020 10:54:48
Wo liegen außerdem die Vorteile bei Timer Units, ...
Mit einer timer-unit hast Du erweiterte Möglichkeiten bei der Konfiguration des Zeitpunktes bzw. der Zeitpunkte der Ausführung. Siehe z. B. die manpages für systemd.timer und systemd.time.

ohneordnung
Beiträge: 1
Registriert: 25.01.2021 18:51:38

Re: isc-dhcp-server autorun after reboot

Beitrag von ohneordnung » 25.01.2021 19:00:00

Ich habe den DHCP Client deaktiviert und eine statische IP konfiguriert. Jetzt startet das von selbst nach dem Neustart.

Antworten