[HowTo] VOIP-Accounts einer Fritz als IP-Client nach IP-Wechsel registrieren

Hallo Novize,

gerne würde ich Deine Änderungen in das Skript mit eintragen, da meine FB7270 nach ein paar Tagen des Tests mit Deinem Originalskript auch noch hin und wieder die VoIP-Registrierung verliert. Allerdings habe ich viel zu wenig Ahnung vom Terminal und wäre glücklich, wenn Du mir Step by Step erklären könntest, wie ich diese Änderungen in die Datei debug.cfg bekomme. Mit vi? Sorry für eine wahrscheinlich saudumme Newbie-Frage.

m00gy

edit: Ich hab's jetzt mal gewagt und diese Folge von Befehlen ins Terminal getippt - müsste, meiner Meinung nach, die alte debug.cfg gelöscht und dann Deine Codezeilen in eine neue debug.cfg geschrieben haben:

Code:
rm -f /var/flash/debug.cfg
cat << 'EOF' >>/var/tmp/debug.cfg
#!/bin/sh
sleep 60
voipd -s
sleep 30
voipd -P 5061
sleep 30
syslogd -C
{
new_ip="$(wget -q -O - http://whatismyip.org)"
logger "VoIP auf folgender Adresse registriert: $new_ip"
eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
old_ip="$new_ip"
while true; do
  if [ "$old_ip" != "$new_ip" ] ; then
        logger "Neue IP-Adresse: $new_ip => VoIP neu registriert"
        eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert"
        voipd -R
    fi
    sleep 600
    old_ip="$new_ip"
    new_ip="$(wget -q -O - http://whatismyip.org)"
done
}&
EOF
cat /var/tmp/debug.cfg > /var/flash/debug.cfg
rm -f /var/tmp/debug.cfg
 
Zuletzt bearbeitet:
Nimm das gewünschte Script (aus den Beiträgen #2..#4) und kopiere es in das Programm Notepad (ich gehe mal davon aus, dass Du Windows nutzt).
Nun kopiere die Änderung auch dort hinein und kopiere alles als Ganzes in die Zwischenablage. Nach Telnetstart in der Fritz kannst Du das Ganze einfach per "Einfügen" in die Box schreiben.

Aaaaber: Fehler mit der VoIP-Registrierung wirst Du so nicht beheben können, denn die Erweiterung betrifft nicht die Registrierung der VoIP-Accounts, sondern nur die Kollisionen der Sprachkanäle.
 
Hallo Novize,

Danke für die Antwort - ich bin auf einem Mac unterwegs, aber ich hab's trotzdem hinbekommen ;-) (ist vielleicht eher die Holzhammermethode, die debug.cfg komplett zu löschen, aber ausser Deinem Skript steht da bei mir ja nicht mehr drin).

Ich hab jetzt mal diesen Thread in seiner Gänze gelesen und gesehen, dass bei einigen, genau wie bei mir, auch das Problem auftritt, dass manchmal scheinbar auf eine "leere" IP verbunden wird, deshalb habe ich jetzt auch testweise mal die Zeile mit DYNDNS eingebunden, so dass das Skript bei mir jetzt so aussieht:

Code:
#!/bin/sh
sleep 60
voipd -s
sleep 30
voipd -P 5061
sleep 30
syslogd -C
{
new_ip="$(wget -q -O - http://checkip.dyndns.org |sed -e 's/^.*Address: //' -e 's/<.*$//')"
logger "VoIP auf folgender Adresse registriert: $new_ip"
eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
old_ip="$new_ip"
while true; do
  if [ "$old_ip" != "$new_ip" ] ; then
        logger "Neue IP-Adresse: $new_ip => VoIP neu registriert DYNDNS"
        eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert DYNDNS"
        voipd -R
    fi
    sleep 600
    old_ip="$new_ip"
    new_ip="$(wget -q -O - http://checkip.dyndns.org |sed -e 's/^.*Address: //' -e 's/<.*$//')"
done
}&
 
Nun beachte nur noch die im ersten Beitrag farblich gekennzeichneten Zeilen (diesmal meine ich dir roten und die grünen) und überlege, was für Deine Box das Beste wäre. ;)
Diese farbigen Zeilen sind nur zur Protokollierung der Aktionen. Da solltest Du sinnigerweise schon entscheiden, welche Protokollierung Dir die angenehmste ist. Beide Log-Funktionen parallel ist Unfug. ;)
 
Oha, stimmt. Beim allerersten Mal als ich Dein Skript in die Box geschrieben hatte habe ich das auch beachtet, nur jetzt nicht. Da ich eine 7270 mit USB-Anschluss habe kann ich die grünen Zeile wohl rauswerfen ;-) Danke für den Hinweis.

In diesem Thread:
http://www.ip-phone-forum.de/showthread.php?t=117428
habe ich auch noch Hinweise zur Portweiterleitung gefunden. Zwar sind meine "Registrierungslämpchen" jetzt erstmal wieder alle grün (habe in der Box die Option "Ports offenhalten, alle 30 Sekunden" aktiviert), aber ich denke, ich werde die Ports dennoch händisch am Router aufmachen. Wenn ich nun Dein modifiziertes Skript anwende, gehe ich davon aus, dass ich nicht Port 5060, sondern 5061 auf die FB durchrouten muss, richtig?

Vielen Dank für die Geduld und die guten Hinweise, toll, dass es Menschen gibt, die sich mit diesem ganzen Kram auskennen.
 
Das "Port offen halten" betrifft nicht(!) den (Sprach=) UDP-Port (5061), sondern den normalen Kommunikationsport mit dem SIP-Provider, damit dieser per "TCP-Antwort" einfach Daten zurücksenden kann. Also musst Du, wie im EDIT2 des Eröffnungsposts beschrieben, auch den UDP-Port 5061 im Router weiterleiten zur Fritzbox
 
Mahlzeit

erstmal vielen Dank an Novize, der hier nen klasse Lösungsvorschlag gebracht.

Aus allen Posts und wenig Ahnung vom Unix Scripting habe ich es dennoch geschafft mir was eigenes zusammenzubauen, um das Problem 7170 hinter 7270 zu lösen.

Warum? Ich hatte oft das Problem, dass eine leere IP zurück kam und das habe ich eben noch mit abgeprüft. Seitdem gibt es keine "Zwischendurch-Neuregistrierungen" mehr.

Ansonsten übernehme ich weitesgehend das, was Novize auf Seite 1 gepostet hatte.

Also so schaut mein Script aus.

Code:
cat << 'EOF' >>/var/tmp/debug.cfg
#!/bin/sh
sleep 60          
{
new_ip="$(wget -q -O - http://checkip.dyndns.org |sed -e 's/^.*Address: //' -e 's/<.*$//')"
eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
old_ip="$new_ip"
while true; do
  if echo $new_ip |egrep -q '.*\..*\..*\..*'; then  
        if [ "$old_ip" = "$new_ip" ] ; then
          sleep 300
        fi       
        if [ "$old_ip" != "$new_ip" ] ; then
          eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert"
          voipd -R
          sleep 300
        fi
     old_ip="$new_ip"
  else 
     eventadd 1 "Keine gueltige IP bekommen: $new_ip"
     sleep 30    
  fi   
new_ip="$(wget -q -O - http://checkip.dyndns.org |sed -e 's/^.*Address: //' -e 's/<.*$//')"
done
}&
EOF
cat /var/tmp/debug.cfg > /var/flash/debug.cfg
rm -f /var/tmp/debug.cfg

Viele Grüße
Nimo
 
edit: Ich hab's jetzt mal gewagt und diese Folge von Befehlen ins Terminal getippt - müsste, meiner Meinung nach, die alte debug.cfg gelöscht und dann Deine Codezeilen in eine neue debug.cfg geschrieben haben:

Code:
rm -f /var/flash/debug.cfg
cat << 'EOF' >>/var/tmp/debug.cfg
#!/bin/sh
sleep 60
voipd -s
sleep 30
voipd -P 5061
sleep 30
syslogd -C
{
new_ip="$(wget -q -O - http://whatismyip.org)"
logger "VoIP auf folgender Adresse registriert: $new_ip"
eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
old_ip="$new_ip"
while true; do
  if [ "$old_ip" != "$new_ip" ] ; then
        logger "Neue IP-Adresse: $new_ip => VoIP neu registriert"
        eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert"
        voipd -R
    fi
    sleep 600
    old_ip="$new_ip"
    new_ip="$(wget -q -O - http://whatismyip.org)"
done
}&
EOF
cat /var/tmp/debug.cfg > /var/flash/debug.cfg
rm -f /var/tmp/debug.cfg

Kann ich dieses Script nehmen, um das alte Script zu löschen und das neue einzufügen? Wo und wie sehe ich dass es erfolgreich war.
Ich bin absoluter Neuling!
Gruss
 
hi,

nein, damit hängst du den inhalt nur an. so würdest du den löschen:
Code:
cat << 'EOF' > /var/tmp/debug.cfg
und damit kannst du den inhalt von der debug.cfg im flash anschauen:
Code:
cat /var/flash/debug.cfg

gruß
 
Danke
Aber welchen Code schlussentlich muss ich nehmen? Wie muss man den einbinden, reicht es wenn ich den gesammten Code kopiere und im Telnet einfüge und mit Enter bestätige? Wie kann ich kontrollieren ob der Code auch wirklich funktioniert zb in den Ereignissen der Fritzbox?
Gruss
 
ja, es reicht wenn du den gesammten Code kopiere und im Telnet einfügst. zur kontrolle hast du doch einen syslogd eingebaut. bemühe doch mal google nach dokumentation und infos über syslog
 
Guten Abend
Ich hab mal google bemüht komme aber nicht weiter!
Wie kann ich das Syslog auslesen und was müsste beschrieben sein wenn der Code erfolgreich implementiert wurde!
Gruss
 
Pardon, genau das ist in den ersten paar Beiträgen schon ausreichend beschrieben worden - je nach Version des Scripts und der Fritzbox, welche Du einsetzt...
Lies mal ausführlich die ersten Beiträge und versuche erst einmal, diese zu verstehen. ;)
 
Code:
# cd /var/flash 
# cat << 'EOF' >>/var/tmp/debug.cfg
> #!/bin/sh
> sleep 60
> {
> new_ip="$(wget -q -O - http://whatismyip.org)"
> eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
> old_ip="$new_ip"
> while true; do
>   if [ "$old_ip" != "$new_ip" ] ; then
>     eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert"
>     voipd -R
>   fi
>   sleep 600
>   old_ip="$new_ip"
>   new_ip="$(wget -q -O - http://whatismyip.org)"
> done
> }&
> EOF
# cat /var/tmp/debug.cfg > /var/flash/debug.cfg
# rm -f /var/tmp/debug.cfg
# cat debug.cfg 
#!/bin/sh
sleep 60
{
new_ip="$(wget -q -O - http://whatismyip.org)"
eventadd 1 "VoIP auf folgender Adresse registriert: $new_ip"
old_ip="$new_ip"
while true; do
  if [ "$old_ip" != "$new_ip" ] ; then
    eventadd 1 "Neue IP-Adresse: $new_ip => VoIP neu registriert"
    voipd -R
  fi
  sleep 600
  old_ip="$new_ip"
  new_ip="$(wget -q -O - http://whatismyip.org)"
done
}&
# Jun 24 23:53:41 chronyd[1283]: Source ---------- offline
Jun 24 23:53:41 chronyd[1283]: Source --------- offline
Jun 24 23:53:41 chronyd[1283]: Source --------- offline
starting pid 1511, tty '/dev/console': '/bin/sh'
stopping USB-Subsystem ..
unload dsl and dependend driver ..
Jun 24 23:53:52 telefon[976]: SIGTERM received!
Jun 24 23:53:52 pbd[985]: received signal: Terminated.
Jun 24 23:53:52 pbd[985]: terminating.
killall: cannot kill pid 986: No such process
killall: cannot kill pid 998: No such process
killall: cannot kill pid 999: No such process
killall: cannot kill pid 1509: No such process
Jun 24 23:53:53 telefon[976]: SIGCHLD received!
Jun 24 23:53:53 telefon[976]: SIGCHLD received!
rmmod: rfcntl
rmmod: isdn_fbox_fon4
rmmod: isdn_fbox_fon3
rmmod: isdn_fbox_fon2
rmmod: isdn_fbox_fon
rmmod: ubik2
rmmod: tiatm
  PID  Uid        VSZ Stat Command
    1 root       1424 S   init       
    2 root            SWN [ksoftirqd/0]
    3 root            SW  [watchdog/0]
    4 root            SW< [events/0]
    5 root            SW< [khelper]
    6 root            SW< [kthread]
   18 root            SW< [kblockd/0]
   32 root            SW  [pdflush]
   33 root            SW  [pdflush]
   34 root            SW< [kswapd0]
   35 root            SW< [aio/0]
   72 root            SW  [pm_info]
   76 root            SW< [CPMAC]
   80 root            SW  [mtdblockd]
  102 root            SW  [tffsd_mtd_0]
  210 root            SW  [cleanup_timer_f]
  225 root            SW  [dectuart_route]
  233 root            SWN [jffs2_gcd_mtd5]
  279 root            SW< [capi_oslib]
  281 root            Z   [capitransp]
  288 root            Z   [glob_codecs]
  292 root            SW< [avm_dect_thread]
  294 root            SW  [ksock tcp worke]
  295 root            SW  [ksock tcp serve]
  313 root            SW< [khubd]
  384 root            Z N [reboot]
  711 root            Z N [ctlmgr]
  729 root            Z N [ctlmgr]
  734 root            Z N [ctlmgr]
  921 root       3028 S   hostapd -B /var/tmp/wlan_ath0_topology 
  967 root       3156 S   /bin/configd 
  972 root            Z   [usermand]
  976 root            Z   [telefon]
  985 root            Z   [pbd]
  991 root       1432 S   /usr/sbin/inetd 
  995 root        984 S   /bin/run_clock -c /dev/tffs -d 
 1003 root            Z   [dect_manager]
 1118 root       1556 S   /bin/sh /etc/init.d/rc.S 
 1128 root       1424 S   init       
 1236 root            Z   [multid]
 1283 root       1300 S   /sbin/chronyd -f /var/tmp/chrony.conf 
 1395 root       1428 S   telnetd -l /sbin/ar7login 
 1402 root       1448 S   -sh 
 1451 root       1424 S   sleep 600 
 1510 root       1424 S   init       
 1511 root       1424 S   /bin/sh -c /var/post_install 
 1512 root       1424 S   /bin/sh /var/post_install 
 1602 root       1444 R   /bin/sh /etc/init.d/rc.dsl.sh stop 
 1669 root       1424 R   ps 
Module                  Size  Used by    Tainted: P  
rtc_sysfs               2704  0 
rtc_proc                3847  0 
rtc_dev                 5493  1 
sch_sfq                 5619  4 
sch_llq                 9102  1 
sch_tbf                 5664  1 
wlan_scan_ap            8477  1 
wlan_acl                4090  1 
wlan_wep                6102  0 
wlan_tkip              12505  2 
wlan_ccmp               8508  0 
wlan_xauth              1182  0 
ath_pci               152519  0 
ath_rate_atheros       61891  1 ath_pci
wlan                  229840  9 wlan_scan_ap,wlan_acl,wlan_wep,wlan_tkip,wlan_ccmp,wlan_xauth,ath_pci,ath_rate_atheros
ath_dfs                39236  2 ath_pci,wlan
ath_hal               237540  4 ath_pci,ath_rate_atheros,ath_dfs
avm_ath_extensions     41498  4 ath_pci,ath_rate_atheros,wlan,ath_hal
usbcore               125996  1 
dect_io                21126  0 
avm_dect              390881  1 dect_io
pcmlink               263471  1 avm_dect
rtc_avm                 6573  2 pcmlink
rtc_core                7083  4 rtc_sysfs,rtc_proc,rtc_dev,rtc_avm
rtc_lib                 2712  3 rtc_sysfs,rtc_avm,rtc_core
dsl_ur8               173781  0 
jffs2                 115345  1 
Piglet_noemif          36534  0 
led_modul_Fritz_Box_7270_16    63229  1 ath_hal
system is going down ..
Connection closed by foreign host.

Ist das so korrekt?
Gruss
 
Zuletzt bearbeitet von einem Moderator:
ich glaube nicht. da fehlt doch an anfang ne menge - siehe dazu #128
 
Hallo
Scheinbar funktionierts, die Fritzbox registriert VOIP alle 10 Minuten :p
 
logisch, alles außer syslogd funktioniert
 
Meinen ersten Beitrag möcht ich mit einem alternativen Lösungsvorschlag beginnen. Dieser ist aus der Not heraus entstanden und dem minimalen Verständnis von Shell-Skript.

Hatte folgendes gemacht:
Jeweils auf die 7141 und die 7050 als ATA Freetz mit Dropbear drauf geschmissen und unter onlinechanged auf der 7141 ein Skript abgelegt.

Das Skript hat folgendes gemacht:
Jedesmal wenn die online-Verbindung wieder hergestellt wurde, hat sich die 7141 als ssh-client mit der 7050 verbunden und ein voipd -R abgesetzt.

War nicht mehr als ein 3-Zeiler-Skript.

Das ganze geht natürlich auch ohne Freetz. Es muss lediglich beim Hochfahren der Boxen Dropbear nachgeladen(beispielsweise von USB-Speicher per ftp) und konfiguriert werden. In einer Schleife alte WAN-IP und aktuelle WAN-IP mit Hilfe von showdsldstat vergleichen. Bei Änderung der WAN-IP wird eine ssh-Verbindung zur ATA-Box hergestellt und ein voipd -R abgesetzt.

Vielleicht hat jemand Lust diesen Lösungsansatz in ein Shell-Skript umzusetzen. Mir fehlt da das Programmierungs-Know-How
 
Zuletzt bearbeitet von einem Moderator:
... habe ich kurzerhand den UDP-Port der Client-Fritz (5060) auf den freien Port 5061 verlegt.

Das habe ich in den vergangenen Tagen auch - vergeblich - versucht.
In der aktuellen FW tuts der Schalter -P des voipd aber wohl nicht mehr. Das führte dazu, dass der voipd - und damit auch die Telefonie - nach einem Boot der Clientbox erstmal garnicht lief.
Ich verwende nun wieder den Standardport 5060 und das Script aus dem ersten Beitrag. Telefon überlebt nun einen IP-Wechsel genauso wie einen Boot der Boxen.

MeWe
 
Ich habe das Problem mit dem Port so gelöst:

Meine Vernetzung:

Internet <--- DSL ---> Fritzbox 7112 <--- LAN ---> Fritzbox 7050

Da die Fritzbox 7112 nur 2 TAE-Anschlüsse besitzt und ich ein 3. Telefon anschließen muss brauche ich die Fritzbox 7050 um dies zu ermöglichen. Ich habe zu diesem Zeitpunkt alle VoIP-Nummern schon richtig eingetragen. Die Beschreibung was nun folgt basiert auf dieser Vorkonfiguration (ich habe es nicht anders bis jetzt getestet, da ich keine Zeit dazu habe).

In der Fritzbox 7112 habe ich eine Portweiterleitung des Ports 5061 an die Fritzbox 7050 eingerichtet. Somit kommen schon mal alle Packete die über diesen Port reinkommen an die richtige Box.
Nun hab ich mich über telnet auf der Fritzbox 7050 eingeloggt und habe folgendes ausgeführt:

nvi /var/flash/voip.cfg

dann bekommt man diese Ausgabe:
Code:
/*
 * /var/flash/voip.cfg
 * Thu Sep 23 19:30:33 2010
 */

voipcfg {
        dnsport = 7077;
        rtpport_start = 7078;
        sip_srcport = [B]5060[/B];
        ua1 {
...
Nun ändert man einfach den sip_srcport auf den Port, den man in der ersten Box als Protweiterleitung eingerichtet hat (z.B. 5061)

Es sollte dann so aussehen:
Code:
/*
 * /var/flash/voip.cfg
 * Thu Sep 23 19:30:33 2010
 */

voipcfg {
        dnsport = 7077;
        rtpport_start = 7078;
        sip_srcport = [B]5061[/B];
        ua1 {
...

Den Rest einfach wie gewohnt mit dem Skript von Novize. Dabei ist darauf zu achten, dass man den braunen Teil mit dem voipd -P 5061 weglässt, da sonst das Skript nicht läuft. Da man dies ja mit dem ändern des sip_srcport bewirkt.

Ich hoffe ich habe es ausführlich geschrieben und es gibt keine Verwirrungen. Ansonsten bin ich gerne für Verbesserungsvorschläge offen.

Gruß,

opa-ben
 

Statistik des Forums

Themen
246,146
Beiträge
2,246,879
Mitglieder
373,654
Neuestes Mitglied
hstoff
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.