.titleBar { margin-bottom: 5px!important; }

Asterisk hinter NAT: Falsche Source-IP

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von TobiKrit, 25 Sep. 2004.

  1. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    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:xxx@sipgate.de: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:asterisk@172.16.0.3:5660>;tag=as7dc20afa
    To: <sip:217.10.79.9>;tag=b11cb9bb270104b49a99a995b8c68544.579e
    Call-ID: 65415cdd01e873b92bb0211e5f7f4337@172.16.0.3
    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 '65415cdd01e873b92bb0211e5f7f4337@172.16.0.3'


    Vielen Dank!
     
  2. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,282
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    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
     
  3. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    ich tippe eher auf einen Abschreibfehler, der eigentlich 5060 heißen müßte :wink:
     
  4. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,282
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    Deshalb fragte ichja danach, wenn er sein NAT aber auch so hat sollte es kein Problem sein. Mein * läuft auch mit 5050 ;)

    jo
     
  5. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ja, war nur ein Abschreibfehler, aber mich wundert, dass Asterisk als Source-IP die LAN-IP angibt.

    Ein NSlookup klappt auch.
     
  6. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hat niemand eine Idee?
     
  7. Holg

    Holg Neuer User

    Registriert seit:
    17 Sep. 2004
    Beiträge:
    139
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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:yyyy@sipgate.de: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
     
  9. Holg

    Holg Neuer User

    Registriert seit:
    17 Sep. 2004
    Beiträge:
    139
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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)
     
  10. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  11. Holg

    Holg Neuer User

    Registriert seit:
    17 Sep. 2004
    Beiträge:
    139
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  12. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,282
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    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
     
  13. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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:yyyy@sipgate.de/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
     
  14. Holg

    Holg Neuer User

    Registriert seit:
    17 Sep. 2004
    Beiträge:
    139
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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


    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:xxxxxx@sipgate.de/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
    
    
     
  15. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  16. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    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.
     
  17. TobiKrit

    TobiKrit Neuer User

    Registriert seit:
    25 Sep. 2004
    Beiträge:
    9
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Achso ok, danke..