Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: Rejpal 29. 08. 2013, 22:34:41
-
Ahoj, už jsem tady zas. Tentokráte jde o zdánlivě banalitu, ale našl jsem rozporné návody - možná špatně hledám.
Nainstaloval jsem isc-dhcp-server, nastavil v /etc/dhcp/dhcp.conf vše potřebné a také to po ručním spuštění funguje.
Teď bych ale rád nějak nastavil start DHCP servru automaticky po startu. Možná špatně ťukám do googlu, ale kdyby jse mě něčím nakopli, tak bych byl vděčen. Našel jsem nějaký soubor /etc/default/isc-dhcp-server, ale neporozuměl popisu co dál s ním.
Předem děkuju za kopanec.
-
S tímto serverem nemám zkušenost, ale co to udělat cronem? http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/
-
Nainstaluj si utilitu sysv-rc-conf, v ní si to pěkně interaktivně navolíš pro každý runlevel zvlášť. Jinak se k tomu používá systémová utilita update-rc.d.
-
Tyjo, to je parádní utilitka, a já doteď mysle, že jak se někdo může vyznat v těch runlevelech. Coby ne, když to je tak hezky zakřížkováno. Ale stejně, ten isc-dhcp-server tam byl zakřížkován pro 2,3,4,5 runlevel, ale pŕesto po bootu nenajede, nebylo by možné nějak stopnout ty runlevelové nabíhačky abych viděl, co se děje? nějak to debugrovat.
-
Dá se zapnout ukecaný boot - v souboru /etc/default/rcS se zapne VERBOSE=yes.
-
A prečo nestačí chkconfig?
-
Hehe, ten ukecaný boot jsem zapnul, ale i3 to flešla na 0,5 sekundy a pak to smazal login request.
Takže teď jednoznačně vim, že mu něco při startu chybí a já nevim co, protože se nespustí, i když je v runlevelech 2,3,5, volán. :(
-
nedal by se ten boot někam zaznamenat?
-
Myslim chces --noclear v /etc/inittab pro prvni terminal, gugl poradi detaily.
A co pustit ten server rucne? /etc/init.d/strasny-server start
-
U tehle veci casto nekde v konfiguraku nebo v /etc/defaults byva nejaka volba, ktera zabrani nabehnuti a dost mozna treba jenom automatickemu nabehnuti, aby se zabranilo tomu, ze to nabehne s nejakymi nevhodnymi defaultnimi parametry.
-
Tohle tam je:
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPD_CONF=/etc/dhcp/dhcpd.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
Ale nikde nevidím slůvko required. To eth1 jsem povoloval a také cestu pro konfig.
-
Mrknete do /etc/defaults, jestli tam nemaji jeste jeden soubor.
-
Je tam už jenom jediný soubor, týkající se sítě, soubor network:
# Configuration for networking init script being run during
# the boot sequence
# Set to 'no' to skip interfaces configuration on boot
#CONFIGURE_INTERFACES=yes
# Don't configure these interfaces. Shell wildcards supported/
#EXCLUDE_INTERFACES=
# Set to 'yes' to enable additional verbosity
#VERBOSE=no
-
a nemuze byt problem v tom ze pri startu dhcp server nabehne, ale neco se mu nelibi a proto se ukonci?
rika neco /var/log/syslog ?
-
Dobrý den,
1, dhcp loguje do souboru /var/log/daemon.log, tj. tam najdete duvod proc vam dhcp nechce najet, pokud startuje.
grep dhcp /var/log/daemon.log
2, dhcp server pouziva dva soubory /etc/dhcp/dhcpd.conf a /etc/default/isc-dhcp-server. V souboru isc-dhcp-server je potřeba uvést jméno rozhraní na kterém bude dhcp poslouchat.
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
3, Pokud se chcete dostat k hláškám startujících programů při bootu, tak si nainstalujte balíček bootlogd, platí pro wheezy. Pro starší distribuce editujte soubor /etc/default/bootlogd.
# Run bootlogd at startup ?
BOOTLOGD_ENABLE=Yes
Hlášky se ukládají do souboru /var/log/boot.
4, Program update-rc.d byl nahrazen v nových verzích Debianu programem insserv, viz. wiki https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot.
-
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?
-
Š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
-
Š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ď.
-
Asi to máš rozbitý. Žádný podobný problém nepozoruju.
-
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ě.
-
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 :-).
-
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.
-
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.
-
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:
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
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.
-
Tak kdyz se vam spousti DHCP server pred nahozenim site, tak se podivejte na poradi init skriptu v danem runlevelu.
-
.........
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."
http://askubuntu.com/questions/58032/dhcp-server-doesnt-start-at-boot-because-of-wrong-startup-order
-
A nezapomněl jsi v tom souboru /etc/network/interfaces přidat také následující řádek?
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.
-
No iterfaces mám takto:
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.
-
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á.