.titleBar { margin-bottom: 5px!important; }

DHCP Einstellungen per Telnet?

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von Thomas.Heller, 11 Nov. 2006.

  1. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  2. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  3. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  4. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  5. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Port 53 (TCP und UDP) ist DNS und nicht DHCP. DHCP ist UDP-Port 67 und genau da könnte das problem liegen, vieleicht antwortet hier multid einfach nur schneller.
     
  6. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Ups. ;-)
    Da muss ich mal schauen wie das im dsmod läuft...

    MfG Oliver
     
  7. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  8. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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:

  9. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  10. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Wo hast du denn den dnsmasq her? Der vom dsmod holt seine Leases aus der /var/flash/leases.cfg.

    MfG Oliver
     
  11. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  12. Thomas.Heller

    Thomas.Heller Neuer User

    Registriert seit:
    26 Jan. 2005
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.