[gelöst] 2 asterisk mit dynamischer IP, nur eine Richtung stabil

debitux

Neuer User
Mitglied seit
21 Nov 2007
Beiträge
44
Punkte für Reaktionen
0
Punkte
6
Hallo,

ich habe zwei Asterisk per iax2 gekoppelt. Beide haben dynamische IP und sind per dyndns angebunden.

Verbindung von Asterisk 1 (1.4.18.1) zu Asterisk2 (1.6.0.3) geht immer, Verbindungen in umgekehrter Richtungen hängen manchmal. Nach einer Anwahl von Asterisk1 zu Asterisk 2 findet Asterisk2 dann auch bei abgehenden Verbindungen den Asterisk1 in der Regel wieder; manchmal ist jedoch sogar ein Neustart beider (!?!) Asterisk *und* Anwahl von Ast1 zu Ast2 notwendig.

Wie kann ich die Verbindung stabilisieren?

Hier die Auszüge der iax.conf:

Asterisk 1:
Code:
[vonAst2] 
 type=user
 context=asterisk-in
 host=asterisk2.dyndns.biz
; host=dynamic
 auth=rsa
 inkeys=ast2inkey

[zuAst2]
 type=peer
 username=vonAst1
 host=asterisk2.dyndns.biz
 auth=rsa
 outkey=ast1outkey

Asterisk2
Code:
[zuAst1]
 type=peer
 username=vonAst2
 host=asterisk1.dyndns.biz 
 auth=rsa
 outkey=ast2outkey


[vonAst1]
 type=user
 context=asterisk-in
 host=asterisk1.dyndns.biz 
 auth=rsa
 inkeys=ast1inkey

Eine Registrierung des Asterisk2 bei Asterisk1 könnte helfen, dachte ich. Aber Registrierungen werden ja (wohl) auch bei dynamischen IPs per dyndns (oder no-ip.org) nicht akzeptiert... auch nicht, wenn der user auf Asterisk1 als host=dynamic angegeben ist...


Vielen Dank für's Mitdenken,

Gruß,

debitux
 
Zuletzt bearbeitet:
Aber Registrierungen werden ja (wohl) auch bei dynamischen IPs per dyndns (oder no-ip.org) nicht akzeptiert... auch nicht, wenn der user auf Asterisk1 als host=dynamic angegeben ist...

Wäre mir neu. Bei mir geht das problemlos.

Wenn die ip häufig wechselt, bleibt nur Registrierung (register => ... und host=dynamic)
Ansonsten in der Datei dnsmgr.conf enable auf yes und ggf. den Wert für refreshinterval kürzer stellen.

Ist der Port 4569 udp in der firewall offen?

[vonAst1]
type=user
context=asterisk-in
host=asterisk1.dyndns.biz
auth=rsa
inkeys=ast1inkey
[/code]

Hier hast du auch ein Problem! Du solltest immer inkeys und outkey angeben, sonst läuft eine Richtung unverschlüsselt oder funktioniert nicht.
Inkeys gibt den oder die Schlüssel an, mit dem die Daten eingehen, outkey gibt den Schlüssel für ausgehende Daten an.

Edit Guard-X: Beiträge zusammengeführt!
 
Wäre mir neu. Bei mir geht das problemlos.

Danke erstmal für die Antwort ;)

Hmm. Meldung im log von Asterisk1:
Code:
[Feb  5 17:58:54] NOTICE[16152] chan_iax2.c: No registration for peer 'asterisk2' (from 88.xx.yyy.zzz)

und korrespondierend im log von Asterisk2
Code:
chan_iax2.c: Registration of 'asterisk1' rejected: 'Registration Refused' from: '88.xx.yyy.zzz'

und selbstverständlich korrespondierend für die "Gegeneinträge".

Wenn die ip häufig wechselt, bleibt nur Registrierung (register => ... und host=dynamic)
Ansonsten in der Datei dnsmgr.conf enable auf yes und ggf. den Wert für refreshinterval kürzer stellen.

Danke. Habe ich beides bei Ast1 geändert. Ast2 ist momentan offline. Ändere ich morgen.

Ist der Port 4569 udp in der firewall offen?
Ja - 4568-4570 sind offen.
Sonst könnte doch ja auch gar keine Verbindung durchkommen, wenn ich das richtig sehe??

Hier hast du auch ein Problem! Du solltest immer inkeys und outkey angeben, sonst läuft eine Richtung unverschlüsselt oder funktioniert nicht.
Inkeys gibt den oder die Schlüssel an, mit dem die Daten eingehen, outkey gibt den Schlüssel für ausgehende Daten an.

geändert/wird morgen geändert. In den zu Rate gezogenen HowTo's habe ich davon nichts gelesen. Danke - wieder was gelernt ;)

Vielleicht lag der Fehler ja auch in den Einstellungen der dnsmgr.conf? Werde das morgen bei Ast2 ändern und berichten.

Einstweilen Danke,

Gruß,

debitux
 
Ja - 4568-4570 sind offen.
Sonst könnte doch ja auch gar keine Verbindung durchkommen, wenn ich das richtig sehe??

Doch wenn der Asterisk nach aussen aufmacht, ist der Port offen. Der bleibt nach Benutzungsende meist noch etwas offen. Diese "etwas" hängt ganz extrem von der Firewall/Router ab.
IAX2 benutzt nur einen Port für beide Richtungen. Daher ist es ja so interessant bei der Benutzung mit Firewall und NAT.
 
Wenn die ip häufig wechselt, bleibt nur Registrierung (register => ... und host=dynamic)
Ansonsten in der Datei dnsmgr.conf enable auf yes und ggf. den Wert für refreshinterval kürzer stellen.

Danke. Habe ich beides bei Ast1 geändert. Ast2 ist momentan offline. Ändere ich morgen.

also - die Änderungen bewirken leider nichts. Nach wie vor

'No registration' und 'Registration refused'.


Gruß,

debitux
 
Hallo kombjuder,

Was sagt den iax2 debug?

Hier der debug von Asterisk1:
Code:
Feb 18 14:11:15] NOTICE[9012]: chan_iax2.c:5316 register_verify: No registration for peer 'vonAst2' (from 88.xxx.yyy.zzz)
Tx-Frame Retry[-01] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00009ms  SCall: 00002  DCall: 11363 [88.xxx.yyy.zzz:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00017ms  SCall: 00002  DCall: 11363 [88.xxx.yyy.zzz:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00017ms  SCall: 11363  DCall: 00002 [88.xxx.yyy.zzz:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00010ms  SCall: 00003  DCall: 00000 [88.xxx.yyy.zzz:4569]
   USERNAME        : vonAst1
   REFRESH         : 60

Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00010ms  SCall: 05538  DCall: 00003 [88.xxx.yyy.zzz:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00015ms  SCall: 05538  DCall: 00003 [88.xxx.yyy.zzz:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

[Feb 18 14:11:39] NOTICE[9019]: chan_iax2.c:8013 socket_process: Registration of 'vonAst1' rejected: 'Registration Refused' from: '88.xxx.yyy.zzz'
Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00015ms  SCall: 00003  DCall: 05538 [88.xxx.yyy.zzz:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00003ms  SCall: 10886  DCall: 00000 [127.0.0.1:4570]
   USERNAME        : iaxmodem
   REFRESH         : 60
Ast1*CLI>
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGACK
   Timestamp: 00005ms  SCall: 00001  DCall: 10886 [127.0.0.1:4570]
   USERNAME        : iaxmodem
   DATE TIME       : 2009-02-18  14:11:50
   REFRESH         : 60
   APPARENT ADDRES : IPV4 127.0.0.1:4570

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00005ms  SCall: 10886  DCall: 00001 [127.0.0.1:4570]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00009ms  SCall: 14595  DCall: 00000 [88.xxx.yyy.zzz:4569]
   USERNAME        : vonAst2
   REFRESH         : 60
Ast1*CLI>
[Feb 18 14:12:05] NOTICE[9012]: chan_iax2.c:5316 register_verify: No registration for peer 'vonAst2' (from 88.xxx.yyy.zzz)
Tx-Frame Retry[-01] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00009ms  SCall: 00004  DCall: 14595 [88.xxx.yyy.zzz:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00017ms  SCall: 00004  DCall: 14595 [88.xxx.yyy.zzz:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

Hier ist noch ein iaxmodem (für Hylafax) mit geloggt. Da ich mir hinsichtlich der Zuordnung der Einträge nicht sicher bin, habe ich diese aber nicht gelöscht.

Korrespondierend der debug von Asterisk2:
Code:
[Feb 18 14:14:35] NOTICE[4694]: chan_iax2.c:9369 socket_process: Registration of 'vonAst2' rejected: 'Registration Refused' from: '80.aaa.bbb.ccc'
Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00016ms  SCall: 08056  DCall: 00003 [80.aaa.bbb.ccc:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00018ms  SCall: 00002  DCall: 00000 [80.aaa.bbb.ccc:4569]
   USERNAME        : vonAst1
   REFRESH         : 60

[Feb 18 14:14:59] NOTICE[4688]: chan_iax2.c:6258 register_verify: No registration for peer 'vonAst1' (from 80.aaa.bbb.ccc)
Tx-Frame Retry[-01] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00018ms  SCall: 15366  DCall: 00002 [80.aaa.bbb.ccc:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00004ms  SCall: 15366  DCall: 00002 [80.aaa.bbb.ccc:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00004ms  SCall: 00002  DCall: 15366 [80.aaa.bbb.ccc:4569]
    -- Refreshing DNS lookups.
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00010ms  SCall: 15316  DCall: 00000 [80.aaa.bbb.ccc:4569]
   USERNAME        : vonAst2
   REFRESH         : 60

Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00010ms  SCall: 00001  DCall: 15316 [80.aaa.bbb.ccc:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00003ms  SCall: 00001  DCall: 15316 [80.aaa.bbb.ccc:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

[Feb 18 14:15:25] NOTICE[4693]: chan_iax2.c:9369 socket_process: Registration of 'vonAst2' rejected: 'Registration Refused' from: '80.aaa.bbb.ccc'
Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00003ms  SCall: 15316  DCall: 00001 [80.aaa.bbb.ccc:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00004ms  SCall: 00003  DCall: 00000 [80.aaa.bbb.ccc:4569]
   USERNAME        : vonAst1
   REFRESH         : 60

[Feb 18 14:15:49] NOTICE[4694]: chan_iax2.c:6258 register_verify: No registration for peer 'vonAst1' (from 80.aaa.bbb.ccc)
Tx-Frame Retry[-01] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00004ms  SCall: 06737  DCall: 00003 [80.aaa.bbb.ccc:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00010ms  SCall: 06737  DCall: 00003 [80.aaa.bbb.ccc:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00010ms  SCall: 00003  DCall: 06737 [80.aaa.bbb.ccc:4569]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00010ms  SCall: 10156  DCall: 00000 [80.aaa.bbb.ccc:4569]
   USERNAME        : vonAst2
   REFRESH         : 60

Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00010ms  SCall: 00002  DCall: 10156 [80.aaa.bbb.ccc:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGREJ
   Timestamp: 00017ms  SCall: 00002  DCall: 10156 [80.aaa.bbb.ccc:4569]
   CAUSE           : Registration Refused
   CAUSE CODE      : 29

Soso. Ich hoffe, hieraus läßt sich etwas ersehen...?:confused:

[EDIT]Edit: Ich sollte noch korrigieren, daß die peer und user jeweils auch im Kontext gleich dem korrespondierenden User benannt sind, also nicht vonAstX und zuAstX. Das hatte ich im ersten Posting der Übersichtlichkeit halber vorgenommen.

richtigerweise heißt es:

Asterisk 1:
Code:
[Ast2] 
 type=user
 ...

[Ast1]
 type=peer
 username=Ast1
...

Asterisk2
Code:
[Ast2]
 type=peer
 username=Ast2
...

[Ast1]
 type=user
 ...


[/EDIT]

Danke für weitere Hilfe im Voraus,

Gruß,

debitux
 
Zuletzt bearbeitet:

Du hast ein Authentifizierungsproblem.

Ändere type=user in friend

Wenn es dann immer noch nicht geht

ändere auth=rsa in auth=md5 und trage ein Passwort ein.

Wenn es dann geht, passt was mit deinen Schlüssel nicht.

Wenn du Probleme mit dem Dialplan hast, kommt als Fehlermeldung "no authority found". Das hat, glaube ich, den Code 50.
 
Du hast ein Authentifizierungsproblem.

Aha, Fehler schon mal lokalisiert, Danke sehr ;)
Damit ich was lerne: An welcher Meldung sehe ich das?

Aber warum schlägt dann "nur" die Registrierung fehl, Anrufe gehen jedoch trotzdem (in beide Richtungen) und nur manchmal hängt die Richtung Ast2->Ast1?

Ändere type=user in friend

Wenn es dann immer noch nicht geht

ändere auth=rsa in auth=md5 und trage ein Passwort ein.

Wenn es dann geht, passt was mit deinen Schlüssel nicht.

hmm,
type=friend (auf beiden Seiten, d.h. type=user auf type=friend und type=peer auf type=friend geändert), auth=md5 und secret=passwort, trotzdem geht's nicht:

Code:
Ast1 (1.4.18.1)
chan_iax2.c:6130 registry_rerequest: No secret associated with peer 'Ast1'

bzw.
Code:
Ast2 (1.6.0.3)
chan_iax2.c:7148 registry_rerequest: No secret associated with peer 'Ast2'

Für weitere Hilfe dankbar,

Gruß,

debitux
 
Hallo kombjuder,


Da steht doch was nicht passt. Ast1und Ast2 haben kein Passwort zugewiesen.

Da steh' ich jetzt auf dem Schlauch:
type=friend, auth=md5 und secret=passwort gesetzt.
Die Paßwörter stimmen auch überein:

auf ast2:
Code:
[ast2] ; der User auf ast1
;type=peer
type=friend
host=xyz.dyndns.org
;auth=rsa
auth=md5
secret=geheimespasswort
;outkey=ast2
;inkeys=ast1
username=ast2

und entsprechend auf ast1
Code:
[ast2]
; type=user
type=friend
 context=asterisk-in
 host=dynamic
;auth=rsa
auth=md5
secret=geheimespasswort
;inkeys=ast2
;outkey=ast1

und entsprechend für die Verbindung in anderer Richtung (ausgehend von der ursprünglichen Konfiguration mit peer und user).

Wieso haben ast1 und ast2 kein Paßwort zugewiesen?

fragt ratlos und mit der Bitte um Hilfe

debitux
 
[ast2]

host=dynamic

host=dynamic braucht ein register, sonst weiss der Gegenüber nicht wen er anrufen soll, bzw von wem das Gespräch kommt.

Hast du in deiner iax.conf mehr als einen Eintrag für den anderen Server, also z.B. einen getrennten Eintrag für ein- und ausgehend?

Wenn ja, muss eingehend zum Schluss stehen, weil bei iax2 immer der letzte zutreffende Kontext verwendet wird.
 
Hallo kombjuder,


nochmal Danke für die Antwort.

host=dynamic braucht ein register, sonst weiss der Gegenüber nicht wen er anrufen soll, bzw von wem das Gespräch kommt.

Klar.

Hast du in deiner iax.conf mehr als einen Eintrag für den anderen Server, also z.B. einen getrennten Eintrag für ein- und ausgehend?

Wenn ja, muss eingehend zum Schluss stehen, weil bei iax2 immer der letzte zutreffende Kontext verwendet wird.

Ja - ausgehend davon, daß die von Ast1 auf Ast2 weitergeleiteten Gespräche über die Konfiguration "Ast1 als peer und Ast2 als user", bzw. von Ast2 über Ast1 abgehenden Gespräche ebenfalls (in umgekehrter Richtung) "Ast2 als peer und Ast1 als user" eingerichtet werden hatte ich dies so umzusetzen versucht.


hier noch einmal die zwischenzeitlich aufgrund des Thread abgewandelte iax.conf von Ast1

Code:
register => [email protected]


[ast1]
type=friend
host=ast2.dyndns.biz 
auth=md5
secret=geheimespasswort
username=ast1

[ast2]
type=friend
context=asterisk-in
host=dynamic
auth=md5
secret=geheimespasswort

bzw. umgekehrt die iax.conf von Ast2

Code:
register => [email protected]


[ast2]
type=friend
host=ast1.dyndns.biz 
auth=md5
secret=geheimespasswort
username=ast2

[ast1]
type=friend
context=asterisk-in
host=dynamic
auth=md5
secret=geheimespasswort

Auf Ast2 hatte ich vor Deinem Hinweis tatsächlich zuerst die eingehende Verbindung (den user) vor der abgehenden peer.

Aber auch nach dieser Änderung erhalte ich weiterhin die Meldung (Ast2)

Code:
 chan_iax2.c:7148 registry_rerequest: No secret associated with peer 'ast2'

bzw. gleichlautend auf Ast1 (No secret associated with peer 'ast1')

:confused::confused:

Danke und Gruß,

debitux
 

Das Register ist falsch
register => ast1:[email protected]

Benutze mal nur folgenden Einträge in den iax.conf:

Server 1:

[ast2]
type=friend
context=asterisk-in
host=ast2.dyndns.biz
auth=md5
secret=geheimespasswort

den 2. Eintrag für ast2 auskommentieren

Server 2:

[ast1]
type=friend
context=asterisk-in
host=ast1.dyndns.biz
auth=md5
secret=geheimespasswort

den 2. Eintrag für ast1 auskommentieren

Kein Register.

config.conf für rausrufen anpassen.
 
Danke, kombjuder.


Auch mit den Änderungen erhielt ich nachfolgende Fehlermeldung:

Code:
NOTICE[4558] chan_iax2.c: Peer 'ast1' is not dynamic (from 80.xx.yyy.zzz)

Aber Dein Hinweis brachte mich auf die Lösung, daß ich offensichtlich peer und user bei der Registrierung vertauscht habe (da ich offensichtlich einen Knoten bei der Benennung im Hirn hatte) und übersehen habe, daß sämtliche Hosteinträge, sowohl bei peer, als auch user auf host=dynamic zu setzen sind, und die dyndns-Adresse nur im registry-Eintrag anzugeben ist... :rolleyes:


Nachfolgende Konfiguration läuft nunmehr stabil, sogar mit auth=rsa.

Ast1:
Code:
register => [email protected]

[ast1zuast2]
type=peer
username=ast1zuast2
host=dynamic
auth=rsa
outkey=keyast1
inkeys=keyast2

[ast2zuast1@ast2]
type=user
context=asterisk-in
host=dynamic
auth=rsa
inkeys=keyast2
outkey=keyast1

Ast2
Code:
register => [email protected]

[ast2zuast1@ast2]
type=peer
host=dynamic
auth=rsa
outkey=keyast2
inkeys=keyast1
username=ast2zuast1

[ast1zuast2]
type=user
context=asterisk-in
host=dynamic
auth=rsa
inkeys=keyast1
outkey=keyast2

Danke fürs Durchhalten und die zielführende Lösung!

Gruß,

debitux
 
Nachfolgende Konfiguration läuft nunmehr stabil, sogar mit auth=rsa.

Ich hatte nur gesagt rsa raus, weil dann die Fehler einfacher zu finden sind. Die Keys können dann nicht die Fehlerursache sein.
Wenn es erst mal funktioniert, ist die Umstellung auf Key einfach. Wenn es dann nicht geht, kanns nur noch der Key oder einer seiner Einträge sein.

Ich arbeite hier ohne Register. Ich habe nur in der dnsmgr.conf den Aktualisierungsintervall relativ kurz gesetzt. Das läuft absolut problemlos, wenn du nicht von häufigen dsl-Unterbrüchen geplagt bist.
 
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.