Asterisk an 2 Standorten per IAX Verbindung klappt nicht!

Kasoft

Neuer User
Mitglied seit
20 Aug 2004
Beiträge
168
Punkte für Reaktionen
0
Punkte
0
Hallo,

Ich habe jetzt ein Problem das mich schon seit einer sehr langen Zeit belastet.
Folgender Sachverhalt:

- 2 Standorte
- Beide haben ADSL
- 2 Linux Server mit Debian + Astrisk 1.24
- In den jeweiligen Standorten gibt es verschiedene Endgeräte: SIP, IAX2
- 1 Provider für Anrufe nach extern. Verbindung per IAX2
- 1 Standort hat eine Fritz!Box Fon als DSL-Modem & Router (Standort A)
- 1 Standort hat ein Zyxel DSL-Modem & Router (Standort B)
- Beide Standorte haben dynamische IP-Adressen und nutzen dyndns.org

Folgendes funktioniert:
Beide Standorte können:
- Telefone in Standort A können miteinander telefonieren
- Telefone in Standort B können miteinander telefonieren
- Telefone von Standort A und B können über den Provider telefonieren

Folgendes funktioniert nicht (nicht zuverlässig)
- Standort Telefone aus Standort A können Telefone in Standort B NICHT erreichen (per IAX)
- Standort Telefone aus Standort B können Telefone in Standort A NICHT erreichen (per IAX)


Man sollte glauben das hier eine Fehlkonfiguration vorliegt aber. Manchmal funktioniert alles.
Sprich Telefon aus Standort A kann einen aus Standort B anrufen.
Manchmal (öfters) eben nicht.


Folgende Konfiguration:

Standort A:

iax.conf
Code:
[general]
bindaddr = 0.0.0.0
bindport = 4569
externip = standorta.dyndns.org
context = default
disallow = all
allow = ulaw

; ------CUT ------hier würden alle Clients kommen ----------------CUT

[provider]
type = peer
host = provider.fqdn
user = xxxxxxxxxx
secret = passxxxx


[standortb]
type=user

secret = xxxxxxxxb
host = dynamic
context = default
allow = gsm		; Er soll auch GSM dürfen
;auth = plaintext	; ist eigentlich egal was ich einstelle. Hat trotzdem nie funktioniert

; Warum habe ich keinen User verwendet? Grund war das er als User immer standortb genommen hat. ob mit oder
; ohne user in der Config. In einer anderen Konfig hatte ich gesehen dass es dort auch nicht verwendet wird.


[standorta]
type = peer
host = standortb.dyndns.org
user = standortb
secret = xxxxxxxxb

extension.conf

Code:
[default]


exten => 12345,1,dial(IAX2/standorta/${EXTEN})


; --------CUT ---------- und alle Client verbindungen -------------------


Standort B:

iax.conf
Code:
[general]
bindaddr = 0.0.0.0
bindport = 4569
externip = standortb.dyndns.org
context = default
disallow = all
allow = ulaw

; ------CUT ------hier würden alle Clients kommen ----------------CUT

[provider]
type = peer
host = provider.fqdn
user = xxxxxxxxxx
secret = passxxxx


[standorta]
type=user

secret = xxxxxxxxa
host = dynamic
context = default
allow = gsm		; Er soll auch GSM dürfen
;auth = plaintext	; ist eigentlich egal was ich einstelle. Hat trotzdem nie funktioniert

; Warum habe ich keinen User verwendet? Grund war das er als User immer standortb genommen hat. ob mit oder
; ohne user in der Config. In einer anderen Konfig hatte ich gesehen dass es dort auch nicht verwendet wird.


[standortb]
type = peer
host = standorta.dyndns.org
user = standorta
secret = xxxxxxxxa
extension.conf

Code:
[default]


exten => 12345,1,dial(IAX2/standortb/${EXTEN})


; --------CUT ---------- und alle Client verbindungen -------------------


In Standort B ist die Firewall so konfiguriert das alle Pakete aus dem WAN Port 4569 an den Asterisk geschickt werden (UDP)
In Standort A dasselbe

Per TCP Dump sehe ich auch das Pakete reinkommen. IAX debug sehe ich diese Pakete auch.

Jedoch werden Anrufe nicht ausgeliefert. Komischerweise sehe ich jedes mal aufs neue das die Authentifizierungspakete
ankommen.
Aber wie gesagt. Manchmal kommen die Gespräche durch andermal wiederum nicht.

Ich hatte gelesen das Asterisk alle DNS auflöst und die IP cached. Da bei dynamischer IP die IP - Adresse regelmäßig
sich ändert hat ich schon testweise einen Cronjob laufen der alle 5 Minuten ein iax reload macht.
Trotzdem hat sich an dem verhalten nichts geändert.

Wenn Gespräche nicht ankommen zeigt die Cli in Asterisk auch keine Fehlermeldung auch wenn verbose auf 99999999 gesetzt ist.
nur durch tcpdump und iax debug bin ich mir auch sicher das Pakete ankommen am asterisk.

Kennt jemand dieses Problem?


MfG
Kasoft
 
Hallo,

ich hatte ein ähnliches Problem. Bei mir war es die Firewall.

Stell mal beide Asterisk in die dmz. Und schau dann was geht.
 
Also erst mal generell würd ich das ganze über RSA machen, aber egal geht auch so.

Zweitens hab ich bei mir 2 IAX2 pro Seite damit es funktioniert.

Drittens benutze ich den Befehl Register damit die Verbindung am leben bleibt.

register=standortb-in:[email protected]

[standorta-in]
type=friend
secret=423748237489237
context=from-pstn

[standorta-out]
username=standortb-in
type=peer
secret=42342345589
host=xxx.xxx.xxx.xxx

Das gleiche machst du nun auf der anderen seite und check das die PW stimmen. Andere Methode ist wie schon erwähnt das ganze mit RSA zu machen.

[standorta-in]
type=user
inkeys=standortb.rsa
context=from-pstn
auth=rsa

Das RSA key file kann man mit dem Apache htpasswd programm erstellen. Howto findet man auf www.voip-info.org

Hoffe konnte dir ein wenig helfen.
 
Hallo,

@Liquido so hab ich das auch gemacht:
Ist jeweils ein peer und ein user. Nur nennst du deins -in -out und ich a b

@kombjuder das muss ich mal testen. Trotzdem irritiert mich das ganze. Trotz weitergeleiteten 4569 port das er da so Probleme bereitet. Vorallem aber manchmal gehts andermal nicht. Und ich kann den Fehler nicht dingfest machen. Ich hatte zuerst die Vermutung durch den IP wechsel entsteht ein Fehler und einer der asteriske hat noch die alte IP gecached. Da aber die Pakete trotzdem ankommen (Beweiss per tcpdump) kann das nicht der Fehler sein...
Das ist echt zum grauwerden...
 
Und ich hab bei mir type=peer zu type=friend.

type=user ging bei mir nur wenn ich auth=rsa verwende.
 
Hmm Interessant...Ich werde das morgen erst testen können da mir ein Server abgefatzt ist nachdem ich ihn in die DMZ und wieder raus hab...
Jetzt braucht der erstmal einen restart da ich ihn nicht mehr finde...
Ich mach aber mal ein Friend aus dem Type
 
So jetzt hab ich in type=friend drin aber ich habe gerade eben gesehen woran der Fehler liegen könnte:

Beide Server sind mit einer dynamischen IP im Internet daher nutze ich dyndns.org um beide asterisk zu verbinden.

In Richtung dyndns.org läuft alles korrekt. Ein nslookup gibt die korrekte ip
zurück.
Auch ein Ping geht auf die dyndns Adressen sauber.

Nun ist es doch so das ein Provider wenn man sich einwählt eine dns mitgibt.
Die könnte bei einem T-Online Account p54Axxxxxx.dip.t-dialin.net heißen. Nun ist es in Deutschland auch so das dieser DNS auch sauber aufgelöst wird. Sprich wenn ich diese FQDN anpinge erhalte ich wieder meine Adresse.
Nun hab ich den 2. Server in der Türkei stehen. Auch da erhält man bei der einwahl eine FQDN zugewiesen. Jedoch ist es hier nicht mehr auflösbar. Sprich die FQDN führt zu einem Timeout. Über die dyndns Adresse funktioniert aber ein Ping.

Nun aber wozu diese Ausflug?
Ich habe nachdem beide asterisk sauber miteinander kommuniziert haben 4 Stunden später aber das selbe Problem wieder bestand mal einen tcpdump mitlaufen lassen. Jetzt sendet mein Asterisk in Deutschland wenn ich den Server in der Türkei erreichen will nicht an die IP Adresse die aktuell in der dyndns Adresse angegeben ist, auch nicht an die dyndns Adresse des Servers sondern an die FQDN des Servers. Dieses ist aber nicht erreichbar (obs ne schlechte Konfiguration seitens der türkischen Telekom ist kann ich nicht beurteilen) wie ich vorhin ja schon angesprochen hatte.

Jetzt verstehe ich aber nicht weshalb asterisk so etwas macht. Es gibt doch keinen Grund für einen reverse lookup für die ip-Adresse?
 
Hallo Kasoft,

hat sich in den 4 Stunden die ip-Adresse in der Türkei geändert? Wenn ja wissen das beide Asterisk?

Such mal hier im Board, da gibt es einiges zu diesem Thema.
Zwangstrennung dürfte das Stichwort zur Suche sein.

Wenn dein t-online Vertrag abläuft, solltest du dir mal überlegen ob du nicht den Provider wechselst und einen nimmst, der dir eine feste IP-Adresse bietet. Dann bist du wenigstens auf einer Seite diesen Ärger los.
 
So mein Problem ist gelöst. Nachdem ich nun unnötig viel Zeit mit Fehlersuche durch Sniffing, Asterisk Cli debugging etc gemacht habe war mir das ganze zu blöd. Ich habe fast das gefühl das Asterisk die Namensauflösung fehlerhaft macht unter bestimmten Konstellationen aber das ist nur meine Vermutung!

Ich habe mir das insofern einfach gemacht indem ich "einfach" einen VPN Tunnel zwischen beiden Servern gemacht habe. Das ist bei mir auch in sofern nützlich da ich den E-Mail Traffic über einen Server abwickeln möchte.
Diese Konstellation läuft nun seit Freitag abend. Bisauf das Samba sich verabschiedet hat weil beide als Master stehen wollten läuft alles einwandfrei. Trotzdem werde ich auf beiden Seiten eine statische IP Adresse beantragen. Kann mir da jemand etwas empfehlen? Also Flatrate ohne begrenzung und static ip?

MfG
Kasoft
 
Kasoft schrieb:
Trotzdem werde ich auf beiden Seiten eine statische IP Adresse beantragen. Kann mir da jemand etwas empfehlen? Also Flatrate ohne begrenzung und static ip?

Deutschland portunity.net allerdings habe die keine richtige Flat mehr. Musst mal die Bedingungen lesen. Die wollen Poweruser ausschliessen können.
 
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.