Hi Portman.
Die SIP-Kommunikation bassiert auf dem Protokoll UDP over IP. Da dieses verbindungslos ist, wird eine Anfrage abgeschickt, ohne zu wissen ob sie angekommen ist oder nicht.
Im IP-Header ist zwar die Absender und Empfänger IP-Adresse sowie der Absender und Empfänger Port definiert, aber das SIP-Protokoll besagt, dass man auch für eine andere Gegenstelle eine Anfrage stellen kann.
Aus diesem Grund, dass man für andere eine Anfrage stellen kann sendet Asterisk im SIP-Protokoll einen Eintrag mit der unseren Rechner identifiziert z.B.
SIP/2.0 REGISTER [email protected]:5060
Das würde heissen, dass alle Anrufe die auf der Rufnummer 12345 eingehen, an den Rechner 81.123.456.78 weitergeleitet werden müssen.
Jetzt zur Problematik
Ein Asterisk
hinter einem Router hat eine interne IP-Adresse z.B. 10.0.0.235, wenn jetzt Asterisk sich bei 1und1 registrieren würde, käme dabei folgendes Protokoll zu stande:
SIP/2.0 REGISTER [email protected]:5060.
Da die 10.0.0.235 eine interne IP-Adresse ist, sendet 1und1 seine Antwort
SIP/2.0 OK an eine IP-Adresse, die er NIEMALS erreichen wird. Schließlich ist unsere ja die 81.123.456.78.
Damit 1und1 jetzt die Route zurück zu unserem Server findet geben wir ihm anstatt einer IP-Adresse einen Hostnamen, der immer dynamisch von unserem Router bei Erhalt einer neuen IP-Adresse updated.
sip.conf
externip = xxxxyyyyy.dyndns.org
WICHTIG
Es muss auch ein Account bei DynDNS - Dynamic DNS Hosting angelegt werden, und dieser dynDNS Host über den Router oder einer anderen Software geupdated werden, dass unsere aktuelle IP-Adresse immer auf diesen Eintrag zeigt.
Wenn alles klappt sieht es folgender maßen aus:
Erstellen der REGISTER-SIP-MESSAGE
Lokale IP-Adresse durch xxxxyyyyy.dyndns.org ersetzen...
Anfrage an sip.1und1.de (212.227.15.197) ......
.... warten auf Antwort ........
Empfange Daten von sip.1und1.de (212.227.15.197) auf (xxxxyyyyy.dyndns.org).
Der Router muss konfiguriert sein!
Der Router muss Port-Forwarding unterstützen und die Ports 5060, 10000-20000 (je nach Einstellung in rtp.conf start und end-port) auf den Asterisk Rechner weiterleiten welcher eine
FESTE IP-Adresse besitzt.
Grüße Michael.