Wenn der DNS verschwindet hängt sich Asterisk auf

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,844
Punkte für Reaktionen
0
Punkte
36
Hallo Gemeinde,

ich habe schon lange Asterisk und es ist geradezu mehr als Glück das mir dieses hier noch nie vorher passiert ist.

In folge einer DSL Umstellung habe ich nun einige Tage keinen DSL Anschluss.

Findet Asterisk nun kein DSL bleibt er in einer Aktion hängen nämlich beim Modul SIP, man kann ihn in dieser Phase (er hatte DSL, verlor es aber) noch beenden mit zB stop now.

Gestoppt und wieder gestartet ist Asterisk aber noch fieser, er bleibt im Load bei SIP hängen, kein Befehl der über "si" hinaus geht wird ermöglicht, auch kein "st"op.

Weiss jemand wo ich da etwas verbockt habe das Asterisk zum Betrieb ständig DSL benötigt ?

Grüsse, Stefan
 
Zuletzt bearbeitet:
HobbyStern schrieb:
Weiss jemand wo ich da etwas verbockt habe das Asterisk zum Betrieb ständig DSL benötigt ?

Du hast nichts verbockt. Dein Sip ist so mit DNS-Anfragen beschäftigt, dass sonst nichts mehr geht.

Zwei Lösungen:

Du hast einen internen DNS-Server, oder
du trägst die aufzulösenden Namen in die Hosts ein.
 
Hallo Kombjuder,

Recht hast Du - ich habe zwar einen lokalen DNS (MaraDns) und nochmals dnsmasq auf dem router (dd-wrt) , aber ich sollte diese auch dem system als diese bekannt geben, ich hatte nur den dns des routers eingetragen - und wie auch immer - da scheint dnsmasq nicht viel mit caching zu tun zu haben.

Ich muss nun mal schauen wie es mit der neuen Lösung mit maradns läuft, aber einen test mit dsl disconnect hat mara und asterisk tadellos überstanden.

Grüsse, Stefan
 
So - Resonanz zur Lösung.

DynDNS mit MaraDNS scheint gut zu funktionieren - jedoch habe ich in den letzten 2 Jahren noch nie soviel Theather auf einem Haufen mit meinem Asterisk gehabt...

Soweit.

Grüsse, Stefan
 
Das Problem mit sip haben scheinbar noch mehr. Meiner Meinung nach ist das ein Designfehler im Asterisk, dass sip so ins stottern kommt, aber Digium will nichts davon wissen.

Obwohl ich ohnehin einen lokalen DNS einsetze, habe ich die Adressen schliesslich in der hosts-Datei fest verdrahtet.

Wichtig dabei auch in der sip.conf:
srvlookup = no

Wenn du dabei noch ein Skript für die Rückwärtssuche im Einsatz hast, solltest du mal testen, ob das bei Internetausfall nicht die Abarbeitung des Dialplan verhindert.

Gruss,
Sachmet.
 
Hi Sachmet,

ich habe das Problem nun auch in etwas älterer Version auf den Digium Seiten usw usf gefunden.

Alle hatten dasselbe Problem, ist die Namensauflösung futsch ist es mit Asterisk aus - es sei denn man setzt einen Cache ein und umgeht das Problem so - wenigstens für eine Zeit.

Ich habe mal Dein srvlookup=no umgesetzt, bei mir war es auf yes und Du hast Recht - wie Du diesem Man entnehmen kannst.

Ich muss nur einfach mal dahintersteigen was mir zZt meine Nebenstellen morgens unerreichbar macht.

Bei mir ist es so das * seit nun 2 Jahren hier läuft, es gab immer etwas, aber meistens war es nur Kleinkram. Nun habe ich nach und nach einige Nebenstellen (FBF) an den Asterisk angeschlossen die den Geschäftsalltag erreichbar sein sollen, also direkt anzurufen sind - sie haben weiterhin eine Festnetznummer - nur über * kann man sich einiges sparen, wie auch immer.

Morgens (meist ab 5) passiert folgendes :

- Die Nebenstellen haben eine IP, sind registriert
- Ruft man diese an, hört man die Gegenstelle nicht und sie hört einen auch nicht

Nun schreit jeder sofort - NAT ! - das Problem ist, der Weg ist frei für den UDP Verkehr - und es ging auch in der Vergangenheit...

Restarte ich Asterisk oder starte meinen DD-WRT Router neu läuft wieder alles wie gewohnt sauber...

Naja, das wird mich noch ein paar Tage durchleuchten des Fehlerszenarios kosten..

Danke erstmal für Deinen Beitrag !

Grüsse, Stefan
 
Na da häng ich mich mal mit rein.
Das problem hatte ich letzte Woche als für ca 5 Stunden in unserem Gebiet kein DSL verfügbar war.
Unsere Anlage hatte total verückt gespielt und ich Streß...

Mein erster Gedanke war auch DNS, hatte aber noch keine Zeit das ganze richtig zu untersuchen.

Wie ich heute festgestellt habe bleibt Asterisk ohne DNS beim Neustart bei den selben Modulen "hängen" wie die Zeiten des DEBUG zeigen:

Code:
[Nov  7 14:36:57] VERBOSE[3549] logger.c: cdr_custom.so => (Customizable Comma Separated Values CDR Backend)
[Nov  7 14:36:57] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/dundi.conf': [Nov  7 14:36:57] VERBOSE[3549] logger.c: Found


[Nov  7 14:37:06] VERBOSE[3891] logger.c:   == Parsing '/etc/asterisk/manager.conf': [Nov  7 14:37:06] VERBOSE[3891] logger.c: Found
[Nov  7 14:37:07] VERBOSE[3549] logger.c: app_nbscat.so => (Silly NBS Stream Application)
[Nov  7 14:37:07] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/mgcp.conf': [Nov  7 14:37:07] VERBOSE[3549] logger.c: Found

[Nov  7 14:37:17] VERBOSE[3549] logger.c:   == Registered channel type 'MGCP' (Media Gateway Control Protocol (MGCP))
[Nov  7 14:37:17] VERBOSE[3549] logger.c: chan_mgcp.so => (Media Gateway Control Protocol (MGCP))
.....
[Nov  7 14:37:17] VERBOSE[3549] logger.c: app_system.so => (Generic System() application)
[Nov  7 14:37:17] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/sip.conf': [Nov  7 14:37:17] VERBOSE[3549] logger.c: Found
[Nov  7 14:37:17] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/sip_registrations.conf': [Nov  7 14:37:17] VERBOSE[3549] logger.c: Found
[Nov  7 14:37:17] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/sip_additional.conf': [Nov  7 14:37:17] VERBOSE[3549] logger.c: Found
[Nov  7 14:37:17] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/users.conf': [Nov  7 14:37:17] VERBOSE[3549] logger.c: Found

[Nov  7 14:38:27] VERBOSE[3549] logger.c:   == SIP Listening on 0.0.0.0:5060
[Nov  7 14:38:27] VERBOSE[3549] logger.c:   == Parsing '/etc/asterisk/skinny.conf': [Nov  7 14:38:27] VERBOSE[3549] logger.c: Found
[Nov  7 14:38:27] VERBOSE[3902] logger.c:     -- Message count requested for mailbox 61@device but voicemail not loaded.


[Nov  7 14:38:37] VERBOSE[3549] logger.c:   == Registered channel type 'Skinny' (Skinny Client Control Protocol (Skinny))

Weitere Erfahrungen:

Wenn DSL weg ist können sich auch die SIP Clients nicht mehr beim Asterisk registrieren.

Die Clients senden Registrierungsrequests bekommen aber vom Asterisk keine Antwort.

Sobald DSL wieder da ist registrieren sie sich.


Ich werde das Problem heute weiterverfolgen.


Sven
 
Hi,

schön das es noch mehr "von diesem schrott" gibt ;)

Bei mir ist es so das die Klienten sich JETZT sofort (auch ohne DSL) registrieren können , durch meinen lokalen DNS (den ich auch schon vorher hatte, nur das ich ihn nicht richtig in der resolv.conf eingetragen hatte).

Dafür habe ich mir aber anscheinend ein neues Problem gebuddelt....das mit den Gesprächen die nicht durchkommen obwohl NAT existiert.

Ich kann das immer morgens beobachten und werde das ganze nun nach den Änderungen morgen früh mal testen.

Schreib doch mal was Deine Erfahrungen waren..!

Grüsse, Stefan
 
konabi schrieb:
Weitere Erfahrungen:

Wenn DSL weg ist können sich auch die SIP Clients nicht mehr beim Asterisk registrieren.

Sobald DSL wieder da ist registrieren sie sich.

Hallo Sven,

wie oben geschrieben, kommt Asterisk vor lauter DNS-Anfragen zu nichts anderem mehr. Also auch ISDN-Leitungen werden nicht mehr bedient, Sip-Klients verlieren ihre Registrierung.

Ein interner DNS löst das Problem zuverlässig.

Achtung: Die kastrierten DNS auf vielen Routern helfen nicht.
Da hier eh ein unterbeschäftigtes Linux läuft, hat das noch einen Bind bekommen.
 
Meine Erfahrungen zum Problem.

Das Problem hat in der Tat etwas mit einem nicht verfügbaren DNS Server zu tun.
Ich würde das nicht einmal auf den Asterisk beschränken sondern Linux selber kann ohne erreichbaren DNS Server nicht wie erwartet arbeiten.

Das kann man recht gut nachvollziehen indem man in der /etc/resolv.conf einfach mal einen DNS Server einträgt den es so nicht gibt, und danach auf der Bash Shell netstat -a eingibt.
Man wird sehen daß es sehr lange dauert bis die Liste der Netzwerkdienste vollständig ist.
Auch eine Anmeldung per ssh dauert ohne gültigen DNS länger, da ssh prüfen möchte wer da eine Verbindung aufbaut.

Im Hintergrund sendet der Linux-Server eine Anfrage an den DNS Server mit der IP xxx.xxx.xxx.xxx. und erwartet eine Antwort. Nachdem er mitbekommt daß es diesen DNS Server so nicht gibt sendet er verstärkt ARP Pakete als Broadcast, mit der Anfrage who has IP xxx.xxx.xxx.xxx.

Es entseht also neben den verstärkten DNS Verkehr auch noch Netztlast durch Broadcastnachrichten. Diese Broadcast Nachrichten werden auch verstärkt durch andere Netzgeräte generiert die keinen DNS Server mehr finden können z.B. angeschlossene VoIP Clients.

Ich denke das ist das eigentliche Problem.

Die Lösung ist, wie kombjuder schon sagt, ein lokaler DNS Server wie beispielsweise BIND auf dem Asterisk Server. Dieser nimmt alle DNS Fragen an und leitet sie an einen externen Server weiter.

Ist dieser wegen ein DSL Ausfall nicht erreichbar, bekommt der Linux Server vom Router ein ICMP Destination unreachable und gut ist.

Ich denke dem Linux ist es wichtig einen DNS Server "als Ansprechpartner" zu haben auch wenn dieser nicht alle Anfragen z.B. wegen einem DSL Ausfall beantworten kann.

Auch interressant:
netstat -a listet die Liste der laufenden Netzwerkdienste schnell auf wenn in der resolv.conf 127.0.0.1 als DNS Server eingetragen ist. Auch wenn kein DNS Server auf dem Rechner installiert ist. Wahrscheinlich nutzt der Rechner dann einfach die /etc/hosts zur Namensauflösung und ist damit "zufrieden".


Auf jedenfall sollten folgende Dateien welche für DNS relevant sind richtig konfiguriert sein:

/etc/resolv.conf
/etc/hosts
/etc/networks
/etc/host.conf
/etc/hostname


Viele Grüße
Sven
 
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.