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

Howto: ADSL 24h disconnect macht Router Probleme

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von Blackvel, 23 Sep. 2004.

  1. Blackvel

    Blackvel Mitglied

    Registriert seit:
    4 Mai 2004
    Beiträge:
    624
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    selbständig als IT-Consultant (VoIP, Asterisk, J2E
    Ort:
    Nürnberg, Einsatzorte Schwerpunkt D6-D9 (MCH, STG,
    Hi Admins. Kann man das Ding irgendwie Global über alle VOIP Hardware-/Software + alle Router hängen ? :)

    Ich habe die Ursache der Probleme gefunden, dass Software/Hardware sich nicht mehr neu bei Sipgate registrieren kann.

    Trifft auf alle Router zu, incl. Linux.
    Ebenso nicht nur auf Asterisk, sondern auch auf alle ATA's und Hardware Phones.

    Ursache:
    NAT, DSL mit dynamischer IP.

    Wo die Probleme nicht auftauchen:
    Kein NAT.
    Kein 24h disconnect.
    Feste IP bei Provider.
    Asterisk direkt auf Linux-Router (keine externip gesetzt, falls doch, dann auch hier!)

    Problembeschreibung:
    Asterisk kann sich nicht mehr bei Sipgate (die Meldungen kamen zwar bei Nikotel nicht, aber trotzdem ist es falsch, auch für IAX!) registrieren.

    Meldungen flooden den Bildschirm:
    Sep 23 15:59:18 NOTICE[81925]: chan_sip.c:3922 sip_reg_timeout: Registration for '123456789@sipgate.de' timed out, trying again
    Sep 23 15:59:24 WARNING[81925]: chan_sip.c:673 retrans_pkt: Maximum retries exceeded on call 0216231b1f16e9e81190cde766ef438d@192.168.1.2 for seqno 187 (Critical Request)

    Dieses Problem tritt auf, wenn man beim ISP gekickt wird (24h disconnect).
    Der Router wählt sich daraufhin wieder neu ein.

    Das Problem ist aber NAT, wo unter Linux die ip connection tracking table weiterhin die alten Connections sind.
    Code:
    udp      17 175 src=192.168.1.2 dst=217.10.79.9 sport=5060 dport=5060 src=217.10.79.9 dst=213.23.37.141 sport=5060 dport=5060 [ASSURED] use=1 mark=0 
    udp      17 172 src=192.168.1.2 dst=69.73.19.178 sport=4569 dport=4569 src=69.73.19.178 dst=213.23.37.141 sport=4569 dport=4569 [ASSURED] use=1 mark=0 
    
    Das Problem ist jetzt, die alte IP in dem gespeicherten Paket.
    Der Router scheint einfach keine neue Connection in die Conntrack Table einzustellen, trotz alldem Asterisk sich ständig versucht, bei Sipgate neu zu registrieren.

    NAT denkt wohl, er hätte schon die richtige Connection in der NAT Tabelle.
    Aber halt leider mit der falschen Destination, d.h Sipgate schickt das Packet an die falsche Zieladresse.

    Workaround.
    1. Möglichkeit
    Crontab, und den Router nachts z.B um 4am rebooten.
    Damit wird die IP resettet, ebenso wird die NAT Tabelle geflusht.

    Es tritt nicht nur bei Linux Routern auf!
    Auch andere Route haben eine NAT Tabelle, die falsche Einträge beinhaltet!!!

    Dann kann z.B per Crontab Asterisk um 4:10am angewiesen werden, einen reload durchzuführen (Aktualisierung der externip dyndns IP).
    -> Dies ist leider notwendig, aber Asterisk spezifisch (da sonst One-Way Audio, weil Asterisk sich noch falsche IP merkt).

    2. Möglichkeit
    Per crontab das ADSL Stoppen und wieder neu starten.
    -> Der Router bekommt eine neue IP.
    -> Vorteil von crontab : Man macht es nachts, wo es nicht stört.

    Dann muss man aber ebenso die NAT Tabelle löschen.
    Unter Linux:
    rmmod ip_conntrack
    insmod ip_conntrack

    Ein Schelm der da ist, der connection tracking mit in den Linux Kernel kompiliert hat.
    Der hat hier leider das nachsehen, da es scheinbar laut Netfilter Mailinglist keine Möglichkeit gibt, die Tabelle ohne Modul Reload zu flushen.

    Hier noch eine Anleitung für einen ATA + Nicht-Linux Router:
    1. Im ATA /IP-Telefon wird man nix machen müssen (der merkt sich ja keine IP, oder doch ?)
    2. Per Zeitschaltuhr den Router nachts auschalten, und wieder einschalten lassen.

    Dann ist die IP eine Neue + NAT Tabelle gelöscht.

    Viel Spaß beim Fluchen

    Blackvel

    PS: Die Welt ist grausam! :)
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Wer einen Linux-Router mit aufgesetztem Asterisk hinter einem ATA486 betreibt, hat die Probleme nicht - warum auch immer. Diese Sache habe ich noch nicht weiter ergründet, es reicht mir einfach, daß alles wunderbar funktioniert.
     
  3. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Vielleicht löschen einige Router nach einem Reconnect die NAT -Tabelle, andere widerrum nicht. Also, meiner macht das wohl nicht.
     
  4. TOM

    TOM Mitglied

    Registriert seit:
    31 Mai 2004
    Beiträge:
    701
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das problem gabs auch beim fli4l router bis version 2.08. seit 2.17 ist das problem behoben, lt. newsgroup soll es mit der umstellung auf kernel 2.4x zusammenhängen, der anscheinend eine korrekte neuinitialisierung der nat tabelle vornimmt.
     
  5. CoAXx

    CoAXx Neuer User

    Registriert seit:
    9 Feb. 2005
    Beiträge:
    123
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi Blackvel, danke für deine Ausführungen, jetzt weiss ich wenigstens, worum bei mir dieses Problem auftaucht. Ich kann bestätigen, was du schriebst. Leider funktioniert bei mir aber ein entladen des conntrack Modules nicht weil es busy ist. Ich setze IpCop ein und habe keine "-f" Option.

    Leider bleibt mir nur ein

    asterisk: "stop now"
    ipcop: "restart"
    ipcop: update dyndns (die in sip.conf verwendet wird)
    asterisk: start

    Das ist aber mehr als unbefriedigend. Ich will nicht jede Nacht ein Restart machen, da ich den Serve rauch noch für andere Zwecke verwende.

    Gibt es denn nicht noch eine andere Lösung?
     
  6. traxanos

    traxanos Mitglied

    Registriert seit:
    15 Juli 2004
    Beiträge:
    486
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    im normal fall reicht es den asterisk nachts für 2 minuten zustopen. das werden die einträge automatisch gelöscht! außnahmen sind die die andere TimeOutWerte als die Standardwerte verwenden.
     
  7. CoAXx

    CoAXx Neuer User

    Registriert seit:
    9 Feb. 2005
    Beiträge:
    123
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ok dann wäre das bei meinem debian also sagen wir mal um

    04.00 Uhr: /etc/init.d/asterisk stop
    04.03 Uhr: /etc/init.d/asterisk start

    Aber vorher muss ich noch für eine Neueinwahl des Routers sorgen (inkl dyndns update), sonst passiert mir das ja im laufe der nächsten 24h nach Asterisk restart wieder, da nn kein sip mehr geht :-(

    Insgesamt eine ziemliche Frickelei.. (2min kein Telefon ist auch etwas blös finde ich; und was ist, wenn DSL im Laufe des Tages mal ausfällt??-> dann gibts bis 4.03 Uhr kein Telefon))

    Ich bin immer nocha uf der Suche nach einer besseren Lösung...
     
  8. inion

    inion Neuer User

    Registriert seit:
    28 Okt. 2004
    Beiträge:
    33
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo zusammen!

    hat jemand eine andere Lösung mittlerweile gefunden?
    ich kenne das astipwatch, aber das funzt irgendwie bei mir nicht.
    dann hatte ich mal eine tiptel voIP-Box, die ist ja wie ein ata286 und bei manuelle konf (anleitung von sipgate und hier ausm forum) ging der einen tag, mit der tiptel-software ging es ohne probleme (leider konnte ich nicht vergleichen, da das gerät zum kunden ging)

    es muss also eine andere lösung geben! die ata-box konnte es auch! muss der registrar oder proxy raus?
    das asterisk-hinter-ipcop problem konnte ich bisher leider auch noch nicht lösen

    mfg
     
  9. CoAXx

    CoAXx Neuer User

    Registriert seit:
    9 Feb. 2005
    Beiträge:
    123
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #9 CoAXx, 12 Jan. 2006
    Zuletzt bearbeitet: 16 Jan. 2006
    Hier ist die Linux Lösung

    Servus,

    das mit dem Neustarten ist natürlich alles Quaaak und nicht wirklich eine saubere Lösung, daher:

    es gibt eine andere Lösung für Linux Router!

    auf dem Router (kernel >2.4.?) ist nach der Neueinwahl folgendes zu tun:

    Code:
    #  echo 0 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream; echo 0 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
    # sleep 10
    # echo 180 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout_stream; echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
    
    So das wars schon und schon sind alle udp Verbindungen weg und nun versucht es ja Asterisk periodisch sowieso neu, also wird es innerhalb von Sekunden klappen!

    Meldet mal, ob es bei Euch klappt!

    //update
    mit sipgate klappt es bei mir, bei gmx habe ich zwarkeine registry Probleme, aber die neue externe ip bleibt gmx verborgen,sodass noch ein "reload" des asterisk notwendig ist. (Bei sipgate geht es ohne!!)