DHCP Einstellungen per Telnet?

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
Hallo,

ist es möglich per Telnet oder debug.cfg zu erfahren ob der DHCP-Server läuft? Welchen Adressbereich er verwendet oder diesen sogar zu verändern?

Ich möchte DnsMasq in der debug.cfg starten und sicher sein das der multid kein DHCP macht. Besser noch wäre DnsMasq mit den im Webinterface eingegebenen Bereich(en) zu starten.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
DHCP kann man doch im Webinterface abschalten, oder? Ich kann dir aber nicht sagen ob der dnsmasq gestartet wird, wenn der multid schon läuft.
Den Bereich für dnsmasq kannst du aus der debug.cfg in eine dnsmasq.conf schreiben...
Was fertiges gibts für dein Problem wohl nicht.

MfG Oliver
 

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
Danke, die Suchfunktion hatte auch schon nichts gebracht. Dnsmasq startet nicht wenn multid läuft da der Port 53 belegt ist. Deshalb wird multid beendet bevor dnsmasq gestartet wird und danach neu gestartet. Bei DHCP ist das irgendwie anders. Der Client erhält wenn im Webinterface DHCP auf On ist seine Daten immer noch von multid.
Deshalb will ich vor dem Start von multid sicherstellen das DHCP aus ist.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Das kann eigentlich nicht sein. Wenn der dnsmasq vor multid gestartet wird, dann lauscht der auf Port 53. Dann kann der multid da keinen Adressen verteilen...

MfG Oliver
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Ups. ;-)
Da muss ich mal schauen wie das im dsmod läuft...

MfG Oliver
 

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
OK, bis jetzt habe ich herausgefunden das das Webinterface die Einstellungen in der ar7.cfg speichert und den multid beendet und startet. Der multid beachtet die Einstellungen in der ar7.cfg, auch wenn ich diese per hand ändere. Das Webinterface nimmt darauf aber keine Rücksicht und zeigt noch die alten Einstellungen bis zum nächsten Neustart der Box an. Die Werte dhcpstart und dhcpend werden nur bei abweichenden Bereichen verwendet, sind also für den Bereich 192.168.178.20-192.168.178.200 = 0.0.0.0.

Ich hoffe jetzt nur das das so stimmt und für alle Boxen gleich ist.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Code:
/var/mod/root # ./lsof |grep "*:67"
dnsmasq    389 root    6u     inet       1011              UDP *:67
/var/mod/root #
Anhang hat leider keine static-libgcc. Hab ich vergessen einzustellen.

MfG Oliver
 

Anhänge

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
Nochmals danke für deine Arbeit, jetzt zeigt sich das Problem. Ich habe mal eine 0815 Fon mit AVM Firmware und Werkseinstellungen genommen. telnet.image drauf und die zwei Dateien geladen. Die Ausgabe von lsfo ist:
Code:
# ./lsfo | grep "*:67"
# ./lsfo | grep "*:53"
multid    521 root    5u     inet      27544             UDP *:53
#
Nun noch schnell ein dnsmasq geladen und die Ausgabe ist:
Code:
# ./lsfo | grep "*:67"
dnsmasq   756 root    6u     inet      54645             UDP *:67
# ./lsfo | grep "*:53"
dnsmasq   756 root    4u     inet      54643             UDP *:53
dnsmasq   756 root    5u     inet      54644             TCP *:53 (LISTEN)
#
Neue IP per DHCP geholt, sie ist übrigens 192.168.178.20. Diese ist nicht aus dem Bereich den ich in dnsmasq angegeben habe.

Der multid macht da irgendetwas anders.

Aber halb so wichtig, ich werde im rc.net Änderungen machen das der multid denkt der DHCP soll nicht gestartet werden und stattdessen dnsmasq und multid starten.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Wo hast du denn den dnsmasq her? Der vom dsmod holt seine Leases aus der /var/flash/leases.cfg.

MfG Oliver
 

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
Mein aktuelles Dnsmasq (version 2.33) nimmt /var/tmp/dnsmasq.leases, habe es hier aus dem Forum.
Ich lese gerade das die Adressvergabe über das Bootstrap Protocol (BOOTP) läuft und DHCP eine Erweiterung dazu ist.
 

Thomas.Heller

Neuer User
Mitglied seit
26 Jan 2005
Beiträge
24
Punkte für Reaktionen
0
Punkte
1
Ok, einige Versuche später habe ich das erste Ergebnis. Ich habe die rc.net geändert, das sie statt multid folgendes Script aufruft (sed -i "s/multid\"/dnsmod\"/g" ... und sed -i "s/multidstart$/eval dnsmod $MULTIDPARAM/g" ...).
Code:
#dnsmod

writeDnsmasqConf()
{
 case `echo "ar7cfg.ethmode" | ar7cfgctl -s` in
 ethmode_bridge)
  interfaces="lan"
  ar7cfgnode="brinterfaces";;
 ethmode_router)
  interfaces=`echo "ar7cfg.brinterfaces.interfaces" | ar7cfgctl -s | tr -d "\","`
  ar7cfgnode="ethinterfaces";;
 *)
  return 0;;
 esac
 sv="10.1.1.1"
 echo "#modDnsMasq" > $1
 echo "read-ethers" >> $1
 echo "domain=XXXX.YYYY" >> $1
 echo "server=/XXXX.YYYY/$sv" >> $1
 echo "dhcp-option=4,$sv" >> $1
 echo "dhcp-option=44,$sv" >> $1
 echo "addn-hosts=/var/tmp/hosts" >> $1
 echo "dhcp-leasefile=/var/tmp/dhcp.leases" >> $1
 ret=0
 for interface in $interfaces;do
  if [ "`echo "ar7cfg.$ar7cfgnode[$interface].dhcpenabled" | ar7cfgctl -s`" = "yes" ] ; then
   ipaddr=`echo "ar7cfg.$ar7cfgnode[$interface].ipaddr" | ar7cfgctl -s`
   echo "dhcp-range=$interface,`echo "ar7cfg.$ar7cfgnode[$interface].dhcpstart" | ar7cfgctl -s`,`echo "ar7cfg.$ar7cfgnode[$interface].dhcpend" | ar7cfgctl -s`" >> $1
   echo "dhcp-option=$interface,3,$ipaddr" >> $1
   echo "dhcp-option=$interface,6,$ipaddr" >> $1
   ret=1
  else
   echo "no-dhcp-interface=$interface" >> $1
  fi
 done
 return $ret
}

 cfd="/var/tmp/dnsmasq.conf"
 tmp="/var/tmp/ar7.org"
 mod="/var/tmp/ar7.mod"
 cfg="/var/flash/ar7.cfg"
 if [ ! -s "$cfd" ] ; then
  if [ -z "`pidof multid`" ] ; then
   multid
   sleep 1
  fi
 fi
 if [ -n "`pidof dnsmasq`" ] ; then
  killall dnsmasq
 fi
 if [ -n "`pidof multid`" ] ; then
  multid -s
  sleep 1
 fi
 if [ "$1" != "-s" ] ; then
  writeDnsmasqConf $cfd
  if [ "$?" = "1" ] ; then
   dnsmasq -C "$cfd"
   cat $cfg > $tmp
   sed "s/dhcpenabled = yes/dhcpenabled = no/" $tmp > $mod
   cat $mod > $cfg
   eval multid $1
   ret=$?
   sleep 1
   cat $tmp > $cfg
   rm $tmp
   rm $mod
  else
   dnsmasq -C "$cfd"
   eval multid $1
   ret=$?
  fi
 fi
 exit $ret
#dnsmod
Leider bin ich mir sicher das dies keine Lösung ist. Es fehlt z.B. eine Prüfung ob dhcpstart und dhcpend 0.0.0.0 sind, wie nach einem Werksreset. Meine Linux kenntnisse sind auch unzureiched, so das ich sagen muss:
BITTE NUR FÜR TESTZWECKE VERWENDEN.

Zur Arbeitsweise:
-Anhand der $cfd prüfe ich ob multid schon einmal gestartet wurde, sonst wird er es.
-dnsmasq und multid werden beendet falls sie laufen.
-falls rc.net multid nur beenden wollte war's das.
-eine .conf wird für dnsmasq erstellt und gestartet
-falls es interfaces mit DHCP geben sollte, werden die Einstellungen der ar7.cfg gesichert, modifiziert und nach dem start von multid zurückgeschrieben.
-multid wird gestartet

Ich hoffe ihr könnt mir bei der Verbesserung helfen.
 

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,831
Beiträge
2,027,214
Mitglieder
350,920
Neuestes Mitglied
askmeforit79