Asterisk hinter NAT: Falsche Source-IP

TobiKrit

Neuer User
Mitglied seit
25 Sep 2004
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

ich habe heute zum ersten mal Asterisk konfiguriert. Trotz des ExternIP-Befehls und Realm, sendet Asterisk bei SIP-Anfragen die falsche IP.

Hier die Configs:
sip.conf
Code:
[general]
language = de
port = 5060
bindaddr = 172.16.0.3
;localnet = 172.16.0.0/16
context = default
externip = xxx.homelinux.org
realm = xxx.homelinux.org
tos = reliability
srvlookup = yes


maxexpiry = 1200
defaultexpiry = 5
register => 4311xxx:[email protected]:5060/431xxx
disallow = all
allow = ulaw
allow = alaw

[sipgate.de]
type=friend
username=4311xxx
secret=xxx
host=sipgate.de
fromuser=4311xxx
fromdomain=sipgate.de
nat=yes
qualify=1200
context=incomingsip1
canreinvite=no

[100]
type=friend
username=100
secret=T1
host=dynamic
qualify=1200


[101]
type=friend
username=101
secret=T2
host=dynamic
qualify=1200

Wenn ich "sip show peers" eingebe, kommt bei sipgate der Status ok. Bei sip show registry allerdings "unregistered".

Der Router natet auch richtig. Oder habe ich irgendwas falsch konfiguriert?

¤dit: hier die genaue Meldung, die bei "sip debug" alle 30 Sekunden erscheint, also beim register-Vorgang?!
Code:
Sip read:
SIP/2.0 482 Loop Detected
Via: SIP/2.0/UDP 172.16.0.3:5660;branch=z9hG4bK59ca79ab;rport=34949;received=172.16.0.3
From: "asterisk" <sip:[email protected]:5660>;tag=as7dc20afa
To: <sip:217.10.79.9>;tag=b11cb9bb270104b49a99a995b8c68544.579e
Call-ID: [email protected]
CSeq: 102 OPTIONS
Server: Sip EXpress router (0.8.12-tcp_nonb (i386/linux))
Content-Length: 0
Warning: 392 217.10.79.9:5060 "Noisy feedback tells:  pid=1533 req_src_ip=172.16.0.3 req_src_port=34949 in_uri=sip:217.10.79.9 out_uri=sip:217.10.79.9 via_cnt==1"

9 headers, 0 lines
Destroying call '[email protected]'


Vielen Dank!
 
Bist Du sicher, dass bei xxx.homelinux.org die externe IP eingetragen ist?
Was sagt denn ein nslookup xxx.homelinux.org ?

Port 5660 ist bewusst so gewählt und auch "geNATed" ?

jo
 
Port 5660 ist bewusst so gewählt

ich tippe eher auf einen Abschreibfehler, der eigentlich 5060 heißen müßte :wink:
 
betateilchen schrieb:
Port 5660 ist bewusst so gewählt

ich tippe eher auf einen Abschreibfehler, der eigentlich 5060 heißen müßte :wink:

Deshalb fragte ichja danach, wenn er sein NAT aber auch so hat sollte es kein Problem sein. Mein * läuft auch mit 5050 ;)

jo
 
rollo schrieb:
betateilchen schrieb:
Port 5660 ist bewusst so gewählt

ich tippe eher auf einen Abschreibfehler, der eigentlich 5060 heißen müßte :wink:

Deshalb fragte ichja danach, wenn er sein NAT aber auch so hat sollte es kein Problem sein. Mein * läuft auch mit 5050 ;)

jo

Ja, war nur ein Abschreibfehler, aber mich wundert, dass Asterisk als Source-IP die LAN-IP angibt.

Ein NSlookup klappt auch.
 
Hi,

versuch mal folgendes:

bindaddr = 0.0.0.0
localnet = 172.16.0.0/255.255.255.0 (oder je nachdem wie dein Netz ist)
externip = xxx.homelinux.org
und den Eintrag: realm = xxx.homelinux.org nicht eintragen.

So wie ich das sehe bindet * durch bindaddr=172.16.0.3 die Adresse als dein "Externe". Deswegen auch "CallerID : (...)@172.16.0.3"

Ich würde auch noch nat=yes setzten, wenn du schon bei reinkommenden Anrufen nat=yes setzt wird das wohl für die Registrierung bei Sipgate auch notwendig sein. Hängt aber von deiner Netzkonfiguration ab...

Hoffe ich konnte helfen, bzw. eine kleine Anregung liefern ...

Gruß
Holg
 
Holg schrieb:
Hi,

versuch mal folgendes:

bindaddr = 0.0.0.0
localnet = 172.16.0.0/255.255.255.0 (oder je nachdem wie dein Netz ist)
externip = xxx.homelinux.org
und den Eintrag: realm = xxx.homelinux.org nicht eintragen.

So wie ich das sehe bindet * durch bindaddr=172.16.0.3 die Adresse als dein "Externe". Deswegen auch "CallerID : (...)@172.16.0.3"

Ich würde auch noch nat=yes setzten, wenn du schon bei reinkommenden Anrufen nat=yes setzt wird das wohl für die Registrierung bei Sipgate auch notwendig sein. Hängt aber von deiner Netzkonfiguration ab...

Hoffe ich konnte helfen, bzw. eine kleine Anregung liefern ...

Gruß
Holg

Hallo Holg,

vielen Dank erstmal.

Wenn ich localnet in die sip.conf eintrage, wird sipgate.de unreachable. hier ist meine sip.conf nochmal:

Code:
[general]
language = de
port = 5060
bindaddr = 0.0.0.0
externip = xxx.homelinux.org
localnet = 172.16.0.0/255.255.0.0

context = default

tos = reliability
srvlookup = yes
nat = yes

maxexpiry = 1200
defaultexpiry = 240
register => 431xxxx:[email protected]:5060/431xxxx
disallow = all
allow = ulaw
allow = alaw

[sipgate.de]
type=friend
username=431xxxx
secret=yyyy
host=sipgate.de
fromuser=431xxxx
fromdomain=sipgate.de
nat=yes
qualify=yes
context=default
canreinvite=no

Sipgate.de ist weiterhin unregistered, wenn localnet eingetragen ist, sogar unreachable.
Interessant ist, das ich abgehend telefonieren kann, bzw. die Fehlermeldung von sipgate höre, da ich noch kein Guthaben habe. In den Call-IDs ist weiterhin die lokale IP eingetragen, obwohl ein NS-Lookup möglich ist.

Grüße,
Tobias
 
Wie sieht denn dein Netz aus? Wo steht asterisk, hinter Router (welcher Router) oder als Router?

Vor deinem register in [default] in sip.conf fehlt noch ein insecure=very, wenn das fehlt blockt sipgate die Anmeldung ab. In [sipgate] muß der Eintrag auch mit rein.



Kleiner Tip zu den codecs:
zuerst alle verbieten und dann die, die du nutzen willst "freigeben" in etwa so:

disallow=all
allow=alaw
allow=ulaw
allow=gsm

Und als kleinen Einstieg, ist folgender Link ganz gut (falls du ihn noch nicht gelesen hast: http://de.bach-online.de/blog/index.php?p=18)
 
Holg schrieb:
Wie sieht denn dein Netz aus? Wo steht asterisk, hinter Router (welcher Router) oder als Router?

Vor deinem register in [default] in sip.conf fehlt noch ein insecure=very, wenn das fehlt blockt sipgate die Anmeldung ab. In [sipgate] muß der Eintrag auch mit rein.



Kleiner Tip zu den codecs:
zuerst alle verbieten und dann die, die du nutzen willst "freigeben" in etwa so:

disallow=all
allow=alaw
allow=ulaw
allow=gsm

Und als kleinen Einstieg, ist folgender Link ganz gut (falls du ihn noch nicht gelesen hast: http://de.bach-online.de/blog/index.php?p=18)

Ok, Danke für den Link.

Also, ich habe einen Draytek 2500We, wird aber in nächster Zeit durhc einen Cisco 2514 ersetzt. Ich habe gerade gelesen, das die Drayteks mit SIP Probleme haben?! Firmware ist 2.51. Der Asterisk-Server ist physikalisch und logisch im selben Netz wie der Router, DMZ ist auch der ASterisk-Server.

¤dit: Standardgateway ist die IP des Routers. Ich kann auch abgehend mti der Fehlermeldung von Sipgate telefonieren, innerhalb des Sipgate-Netzes konnte ich es noch nicht ausprobieren.
 
Hi Tobias

Hast du insecure=very gesetzt?
Kannst du externe Gespräche empfangen?

Bist du jetzt mit sip show registry als "REGISTERED" verzeichnet?
Ich könnte mir gut vorstellen, daß wenn du jemanden anrufst er dich nicht, oder du ihn nicht hörst.

Zu den Drayteks-Problemen kann ich nichts sagen, hab da keine Ahnung.

Poste doch bitte mal deine extensions.conf und auch nochmal sip.conf....

Der Loop, der da gemacht wird ist übrigens normal. Das macht * damit Sipgate weiß, dass du noch online bist.


Holg
 
Habe auch Asterisk hiter einem Vigor 2500 betrieben. Funktioniert mit FW 2.5.1 ohne Einschränkungen, wenn über telnet sys sip_alg=0 gesetzt wird.

Portforwarwardings wirst Du ja entsprechend eingerichtet haben.

jo
 
Holg schrieb:
Hi Tobias

Hast du insecure=very gesetzt?
Kannst du externe Gespräche empfangen?

Bist du jetzt mit sip show registry als "REGISTERED" verzeichnet?
Ich könnte mir gut vorstellen, daß wenn du jemanden anrufst er dich nicht, oder du ihn nicht hörst.

Zu den Drayteks-Problemen kann ich nichts sagen, hab da keine Ahnung.

Poste doch bitte mal deine extensions.conf und auch nochmal sip.conf....

Der Loop, der da gemacht wird ist übrigens normal. Das macht * damit Sipgate weiß, dass du noch online bist.


Holg

Hallo Holg,

hier die sip.conf
Code:
[general]
;language = de
port = 5060
bindaddr = 0.0.0.0
externip = xxx.homelinux.org
;localnet = 172.16.0.0/255.255.0.0

context = default


tos = 0x18

srvlookup = yes
nat = yes
insecure = very
;maxexpiry = 1200
;defaultexpiry = 240
register => 431xxxx:[email protected]/431xxxx
disallow = all
allow = ulaw
allow = alaw
allow = gsm

[sipgate.de]
type=friend
username=431xxxx
secret=yyyy
host=sipgate.de
fromuser=431xxxx
fromdomain=sipgate.de
nat=yes
qualify=yes
context=default
canreinvite=no
insecure=very
tos=0x18


extensions.conf

Code:
[general]
static = yes
writeprotect = no


[globals]
FWUSERID = 431xxxx
FWUSERNAME = Familie xxxx

[default]
include => 100
include => sipoutgoing
include => SIP2ISDN

[sipoutgoing]
;wenn zu SIP-Nummer angerufen wird
exten => _9.,1,SetCallerID(${FWUSDERID})
exten => _9.,2,SetCIDName(${FWUSERNAME})
exten => _9.,3,Dial(SIP/${EXTEN:1}@sipgate.de,60,tr)
exten => _9.,4,Playback(invalid)
exten => _9.,5,Hangup

[ISDN2SIP]
; ISDN -> SIP
exten => 9,1,DISA,no-password|default

[SIP2ISDN]
;SIP -> ISDN
;exten => _0.,1,SetMusicOnHold(default)
exten => _0.,1,StripMSD,0
exten => _0.,2,Dial,CAPI/9:b${EXTEN:1},m
exten => _0.,3,Hangup

[100]
exten => 100,1,SetMusicOnHold(default)
exten => 100,2,Dial(SIP/100,60,m)
exten => 100,3,Hangup

So, jetzt nochmal alles genau:

Wenn ich Asterisk starte, kommt keine Fehlermeldung. Gebe ich sip show peers ein, erscheint sipgate.de als OK (xx ms). Wenn ich sip show registry eingebe, erscheint sipgate.de als "unregistered". Wenn ich abgehend telefoniere, höre ich die Meldung von sipgate. Ich selbst bin bei sipgate wie auch im Asterisk unregistered. Der Asterisk-Server ist im Router vorläufig als DMZ eingetragen. Zur Sicherheit habe ich auch Portforwarding auf den Server eingerichtet, bring aber auch nichts.

Was mich weiterhin wundert ist die Sache mit "localnet=...". Wenn dies in der sip.conf steht, wird sipgate.de selber unreachable, die lokalen IP-Phone bleiben aber weiter OK.

sip show peers:
Code:
tt3*CLI> sip show peers
Name/username    Host            Dyn Nat ACL Mask             Port     Status   
101/101          (Unspecified)    D          255.255.255.255  0        UNKNOWN  
100/100          (Unspecified)    D          255.255.255.255  0        UNKNOWN  
sipgate.de/4311  217.10.79.9          N      255.255.255.255  5060     OK (95 ms)

sip show registrys:
Code:
tt3*CLI> sip show registry
Host                            Username       Refresh State
sipgate.de:5060                 4311303            120 Unregistered

Grüße,
Tobias
 
Ein bißchen seltsam ist das schon ;)

Name/username Host Dyn Nat ACL Mask Port Status
101/101 (Unspecified) D 255.255.255.255 0 UNKNOWN
100/100 (Unspecified) D 255.255.255.255 0 UNKNOWN
sipgate.de/4311 217.10.79.9 N 255.255.255.255 5060 OK (95 ms)

etwas ungewöhnlich fand ich, daß in der letzten Zeile deine SIP-Nummer nicht komplett steht (oder hast du das rausgelöscht?)! Check vielleicht nochmal die Einträge der SIP-Nummer und des Passwortes.
Welche asterisk-version benutzt du denn?
Hast du schon mal versucht, ein Softphone (x-lite) direkt bei sipgate über deren Proxy zu registrieren? (dafür gibt es auf sipgate.de eine sehr gute Anleitung)
So wie es aussieht, geht da bei der Registrierung ordentlich was in die Hose...

Hörst du die Meldung mit dem Guthaben, oder schaffst du es die 10000 anzurufen?

Welche IP und welche Netzmaske hat eigentlich dein Router?

Gruss
Holg


Hier mal meine sip.conf:
Code:
[general]
port=5060
bindaddr=0.0.0.0
externip=xxx.homelinux.com
localnet=192.168.2.0/255.255.0.0
srvlookup=yes
nat=yes
tos=lowdelay
insecure=very
register => 87xxxxx:[email protected]/87xxxxx
context=calls
disallow=all
allow=alaw
allow=ulaw
allow=gsm
canreinvite=no

[sipgate]
type=friend
username=87xxxxx
secret=xxxxxx

dtmfmode=info
host=sipgate.de
context=voipin
fromuser=87xxxxx
fromdomain=sipgate.de
insecure=very
qualify=yes
nat=yes
disallow=all
allow=alaw
allow=ulaw
allow=gsm
canreinvite=no
 
Holg schrieb:
Ein bißchen seltsam ist das schon ;)

etwas ungewöhnlich fand ich, daß in der letzten Zeile deine SIP-Nummer nicht komplett steht (oder hast du das rausgelöscht?)! Check vielleicht nochmal die Einträge der SIP-Nummer und des Passwortes.
Welche asterisk-version benutzt du denn?
Hast du schon mal versucht, ein Softphone (x-lite) direkt bei sipgate über deren Proxy zu registrieren? (dafür gibt es auf sipgate.de eine sehr gute Anleitung)
So wie es aussieht, geht da bei der Registrierung ordentlich was in die Hose...

Hörst du die Meldung mit dem Guthaben, oder schaffst du es die 10000 anzurufen?

Welche IP und welche Netzmaske hat eigentlich dein Router?

Gruss
Holg

So, es klappt jetzt. Danke dir. Es lag nur daran, dass ich zwischen dem = in der sip.conf eine leertaste und danach auch noch eine Leertaste hat. Jetzt klappt das auch mit Localnet. Das Seltsame:

Bevor es geklappt hat, habe ich trotzdem die 10000 anrufen können und konnte die Ansage hören, Asterisk war trotzdem unregistered.. Naja, vielen Dank an alle.

Grüße,
Tobias
 
Bevor es geklappt hat, habe ich trotzdem die 10000 anrufen können und konnte die Ansage hören, Asterisk war trotzdem unregistered..

das eine hat mit dem anderen nichts zu tun :wink:

Probiere mal folgendes: Kommentiere den "register => " mal aus und versuche zu telefonieren - das wird funktionieren.

Der register dient nur dazu, auch erreichbar zu sein, also dazu, dem Sipgate-Server mitzuteilen, wohin er einen ankommenden Ruf schicken soll.
 
betateilchen schrieb:
Bevor es geklappt hat, habe ich trotzdem die 10000 anrufen können und konnte die Ansage hören, Asterisk war trotzdem unregistered..

das eine hat mit dem anderen nichts zu tun :wink:

Probiere mal folgendes: Kommentiere den "register => " mal aus und versuche zu telefonieren - das wird funktionieren.

Der register dient nur dazu, auch erreichbar zu sein, also dazu, dem Sipgate-Server mitzuteilen, wohin er einen ankommenden Ruf schicken soll.

Achso ok, danke..
 
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.