Debian: automatický start DHCP

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #15 kdy: 31. 08. 2013, 16:38:28 »
Moc děkuji za cenné informace, ukládám. Nicméně jsem pomocí nich jen zjistil, že je daemon spouštěn, ale pak je vypnut, z mě neznámé příčiny. Jal jsem se pátrat směrem k runlevelů, i když prakticky naslepo. Narazil jsem na dosti komplikovaný systém, který bude nutno prostudovat a zorientovat se v něm. Myslím ty runlevely. Tady jsem zjistil možnou příčinu. Zapínám eth1 příkazem ifconfig eth1 172.16.1.1 netmask 255.255.255.0 v souboru /etc/rc.local, který je ale v /etc/rc2.d uveden jako S21rc.local, přičemž isc-dhcp-server má uvedeno S18isc-dhcp-server. Dedukuju z toho, že isc-dhcp-server se spustí ještě před rc.local a tím zhebne na banální chybu nezapnuté eth1.
Z toho mě plynou dva dotazy:
1. Proč jsou soubory uvedeny ve všech runlevelech, aneb asi to nebude tak, že se skripty po startu spouští v pořadí, jak jdou runlevely? čili nejdřív se spustí runlevel 0, pak 1, pak 2?
2. můžu přepsat u všech /etc/rcx.d číslo Sxxrc.local tak, aby bylo menší, v tomto případě kupř. S17rc.local, než je číslo S18isc-dhcp-server, abych docílil přednostního spuštění souboru /etc/rc.local ještě před spuštěním isc-dhcp-server? Nebo mám použít opačný postup, zvýšit S18isc-dhcp-server, na třebas S22isc-dhcp-server, ANIŽ bych způsobil nějakou katastrofu?


Lol Phirae

Re:Debian: automatický start DHCP
« Odpověď #16 kdy: 31. 08. 2013, 17:01:38 »
Šmajrá, ty tam nemáš nastavenou IP adresu? No, tak to se snažíš vopravdu zbytečně. A jinak, takhle blbě se teda ty IP adresy fakt nenastavujou.

https://wiki.debian.org/NetworkConfiguration#Configuring_the_interface_manually

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #17 kdy: 31. 08. 2013, 18:14:52 »
Šmarjá, to jsem také zkoušel, debian ale nenastaví adresu z /etc/network/interfaces dřív, než spustí isc-dhcp-server.
A teď babo raď.

Lol Phirae

Re:Debian: automatický start DHCP
« Odpověď #18 kdy: 31. 08. 2013, 18:40:52 »
Asi to máš rozbitý. Žádný podobný problém nepozoruju.

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #19 kdy: 31. 08. 2013, 18:58:15 »
ifconfig eth1 172.16.1.1 netmask 255.255.255.0
/etc/init.d/isc-dhcp-server start

Tyto dva řádky v souboru /etc/rc.local a odstranění dhcp serveru ze startu v runlevelech situaci vyřešili. Evidentní bug v, a teď nevím v čem, abych někoho neurazil.

Apropo, nevim, co bych moh mít rozbitý, zkoušel jsem to na dvou strojích po čerstvé instalaci debianu. Chovalo se to stejně.


orm

Re:Debian: automatický start DHCP
« Odpověď #20 kdy: 31. 08. 2013, 22:30:29 »
Dobrý den,

přečetl jsem váš příspěvek a je z něj patrné, že nevíte jak funguje boot v linuxu a program init. Se studiem můžete začít zde https://wiki.debian.org/Init.

Co se týká vašeho problému. Za prvé bych odstranil všechno co jste napsal do souboru /etc/rc.local a nechal tam jen exit 0, tak se to prostě nedělá. Síť se v debianu nastavuje v souboru /etc/network/interfaces, ve vašem případě tam dáte něco takového

auto eth1

iface eth1 inet static
   address 172.16.1.1
   netmask 255.255.255.0

Síť se startuje pomoci init skriptu /etc/init.d/networking. Tento skript by měl být spuštěn před skriptem /etc/init.d/isc-dhcp-server. Debian standardně bootuje v runlevelu 2, tj. vás bude zajímat adresář /etc/rc2.d. Každopádně skript na spuštění sítě se dává do adresáře /etc/rcS.d a skripty v tomto adresáři jsou spouštěny před skripty v adresáři specifickém pro runlevel, takže by v tom neměl byt problém.

Debian od verze 6 používá dependency base boot, tj. pokud init skript obsahuje na začátku nějaká data, viz. https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot, a je vložen pomocí programu insserv, tak by spuštění init skriptu ve správném pořadí mělo být zaručeno. Každopádně je možné si ty simlinky v rc*.d měnit ručně, ale pak musíte počítat s tím, že se to v budoucnu může rozbít :-).

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #21 kdy: 31. 08. 2013, 23:33:49 »
Ano, máte naprostou pravdu, skutečně nevím, jak funguje boot, a nejen boot. Jsem teprve začátečník a učím se sám metodou samostudia + pokus/omyl.
To co jste mě odepsal, jsou pro mne další cenné informace, potřebné ke studiu. Určitě je využiju, nicméně nevysvětlují, proč nastala výše popsaná situce s nefukčností dhcp servru po bootu.

orm

Re:Debian: automatický start DHCP
« Odpověď #22 kdy: 01. 09. 2013, 13:45:22 »
Dobrý den, vždyť jste si již sám odpověděl proč vám dhcp po startu spadne. Konfigurujete síť tam kde nemáte, v rc.local. Tento skript je spuštěn až po skriptu který spouští dhcp. Jelikož dhcp potřebuje mít nakonfigurovanou síť na rozhraní na kterém bude poslouchat, jinak se u končí, tak vám spadne a je to také ten důvod, proč vám dhcp jede, když si ho sám spustíte v rc.local až po konfiguraci sítě.

Proč vůbec konfigurujete síť v rc.local a ne na místě k tomu určeném, tj. v interfaces?

O žádný bug se nejedná, jen o váš, chtělo by se napsat, nestandardní způsob konfigurace.

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #23 kdy: 01. 09. 2013, 15:31:08 »
Pane orme, je vidět, že jste nečetl důsledné celou diskuzi, protože jinak by jste věděl, že jsem měl definovanou síť také v /etc/network/interfaces a problém, který řeším, je, proč je dhcp server spuštěn dřív, než se svedne síť, která je v /etc/network/interfaces nadefinovaná.

Výpis ze syslog po rebootu:

Kód: [Vybrat]
Sep  1 15:26:51 debian dhcpd: Internet Systems Consortium DHCP Server 4.2.2
Sep  1 15:26:51 debian dhcpd: Copyright 2004-2011 Internet Systems Consortium.
Sep  1 15:26:51 debian dhcpd: All rights reserved.
Sep  1 15:26:51 debian dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Sep  1 15:26:51 debian dhcpd: Wrote 1 leases to leases file.
Sep  1 15:26:51 debian dhcpd:
Sep  1 15:26:51 debian dhcpd: No subnet declaration for eth1 (no IPv4 addresses).
Sep  1 15:26:51 debian dhcpd: ** Ignoring requests on eth1.  If this is not what
Sep  1 15:26:51 debian dhcpd:    you want, please write a subnet declaration
Sep  1 15:26:51 debian dhcpd:    in your dhcpd.conf file for the network segment
Sep  1 15:26:51 debian dhcpd:    to which interface eth1 is attached. **
Sep  1 15:26:51 debian dhcpd:
Sep  1 15:26:51 debian dhcpd:
Sep  1 15:26:51 debian dhcpd: Not configured to listen on any interfaces!

Výpis po /etc/init.d/isc-dhcp-server start

Kód: [Vybrat]
Sep  1 15:28:35 debian dhcpd: Internet Systems Consortium DHCP Server 4.2.2
Sep  1 15:28:35 debian dhcpd: Copyright 2004-2011 Internet Systems Consortium.
Sep  1 15:28:35 debian dhcpd: All rights reserved.
Sep  1 15:28:35 debian dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Sep  1 15:28:35 debian dhcpd: Internet Systems Consortium DHCP Server 4.2.2
Sep  1 15:28:35 debian dhcpd: Copyright 2004-2011 Internet Systems Consortium.
Sep  1 15:28:35 debian dhcpd: All rights reserved.
Sep  1 15:28:35 debian dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Sep  1 15:28:35 debian dhcpd: Wrote 1 leases to leases file.

skutečně už nevím, jak bych vám vyjasnil lépe, v čem je problém, abyste mě mohli poradit, kde dělám chybu.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Debian: automatický start DHCP
« Odpověď #24 kdy: 01. 09. 2013, 16:03:48 »
Tak kdyz se vam spousti DHCP server pred nahozenim site, tak se podivejte na poradi init skriptu v danem runlevelu.

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #25 kdy: 01. 09. 2013, 17:11:18 »
.........

Síť se startuje pomoci init skriptu /etc/init.d/networking. Tento skript by měl být spuštěn před skriptem /etc/init.d/isc-dhcp-server. Debian standardně bootuje v runlevelu 2, tj. vás bude zajímat adresář /etc/rc2.d. Každopádně skript na spuštění sítě se dává do adresáře /etc/rcS.d a skripty v tomto adresáři jsou spouštěny před skripty v adresáři specifickém pro runlevel, takže by v tom neměl byt problém.
.......

Tady to říká, že síť startuje mnohem dřív než dhcp server v runleveli 2

A tady to říká, že nejsem sám, co narazil na tento problém:

"I had exactly the same problem.

I fixed it by editing /etc/init.d/isc-dhcp-server and adding a sleep 10 at the top.
I tried sleep 5 but it wasn't enough."

Kód: [Vybrat]
http://askubuntu.com/questions/58032/dhcp-server-doesnt-start-at-boot-because-of-wrong-startup-order

Re:Debian: automatický start DHCP
« Odpověď #26 kdy: 01. 09. 2013, 17:34:40 »
A nezapomněl jsi v tom souboru /etc/network/interfaces přidat také následující řádek?
Kód: [Vybrat]
auto eth1
Jinými slovy, když odstraníš ten ifconfig z rc.local, nabootuje to s nastavenou IP adresou na eth1, či nikoli? Pokud to nabootuje bez adresy, máš špatně /etc/network/interfaces a hledej chybu tam. Pokud to nastartuje se správně nakonfigurovanou adresou a přesto se dhcpd nespustí, může být skutečně problém se závislostí skriptů a asi pomůže workaround v podobě sleepu na začátku initskriptu.

Právě jsem se ale podíval na jeden server s Wheezym, kde běží DHCPd a žádnou speciální konfiguraci jsem tam nenašel, takže by to mělo fungovat bez úprav.

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #27 kdy: 01. 09. 2013, 19:21:33 »
No iterfaces mám takto:
Kód: [Vybrat]
This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.2
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.2

allow-hotplug eth1
iface eth1 inet static
address 172.16.1.1
netmask 255.255.255.0
network 172.16.1.0
broadcast 172.16.1.255
gateway 192.168.1.2
# dns-* options are implemented by the resolvconf package, if installed
# dns-nameservers 192.168.1.2

jestli je to dobře, nevim, ale eth1 konfiguroval instalátor debianu a eth1 jsem od něj odkoukal.
Pozn. - samozřejmě, že nemám obě věci současně, buď mám eth1 tak jak je výše, nebo to dám do rc.local, jak jsem psal předtim, ale současně jsem to neměl nikdy.

Rejpal

Re:Debian: automatický start DHCP
« Odpověď #28 kdy: 01. 09. 2013, 19:42:42 »
Problém vyřešen.
Ďekuju všem za příspěvky, každý jeden má pro mě cenné informace.

Takže bug je v tom, že instalátor debianu nenakonfiguroval do /etc/network/interfaces příkaz auto eth0, což přikazuje systému konfigurovat síťovku eth0 skriptem /etc/init.d/networking. Já to tvrdě od něj odkoukal i pro eth1, a  informace, kterou jsem o příkazu auto ethX měl, byla zapadlá prachem. Prostě ta moje stará palice zapoměla. Omlouvám se všem, kdo si teď říkáte - njn, zas jedna lama, kdybych věděl, že to tam nemá....
Ale jsem poučen, nastudoval jsem přitom do jisté míry problematiku runlevelů a posunul se dál.
Ješté jednou díky všem.
Už to jede jak má.