FritzBox hinter NAT --> SIP/2.0 401 Unauthorized

pzYsTorM

Neuer User
Mitglied seit
20 Apr 2017
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hi,
meine Fritzbox ist nicht direkt mit dem Internet verbunden, sondern hängt an einem Linux-Router. Der Linux-Router hat zwei Netzwerkkarten (188.192.11.22 von Vodafone, 192.168.0.1 intern). Die Fritzbox hat die IP 192.168.0.4

Ich habe ständig das Problem gehabt, dass meine SIP-Nummern, die ich ausschließlich in der Fritzbox eingetragen habe, manchmal nicht erreichbar waren. Das lag wohl daran, dass die SIP Ports von meinem Linux-Router nicht zur Fritzbox weitergeleitet werden. Daher
habe auf dem Linux-Router nun ein paar iptables SNAT Regeln eingefügt, sodass UDP Port 5060 und Ports 7078-7085 zur Fritzbox weitergeleitet werden.

Ich weiß nun jedoch nicht genau was passiert ist, jedoch lassen sich seit einigen Tagen meine Nummern nicht mehr bei Vodafone registrieren. Ich bekomme immer einen "SIP/2.0 401 Unauthorized". Auch wenn ich all meine Änderungen rückgängig mache, bleibt es beim 401. Einen falschen Usernamen bzw. ein falsches Passwort kann ich ausschließen. Das hab ich schon überprüft.

Hier ist ein Mitschnitt per tcpdump:
Code:
01:31:10.438522 IP (tos 0x0, ttl 64, id 57080, offset 0, flags [none], proto UDP (17), length 1007)
    192.168.0.4.5060 > 88.134.209.241.5060: SIP, length: 979
        REGISTER sip:sip.kabelfon.vodafone.de SIP/2.0
        Via: SIP/2.0/UDP 188.192.11.22:1024;rport;branch=z9hG4bK2E975190C1DC1970
        Route: <sip:sip.kabelfon.vodafone.de;lr>
        From: <sip:[email protected]>;tag=953720691
        To: <sip:[email protected]>
        Call-ID: [email protected]
        CSeq: 790 REGISTER
        Contact: <sip:[email protected]:1024;uniq=A9AEA534D04788AC2C3C49FAB030F>
        Authorization: Digest username="933123450", realm="technik.kabel-deutschland.de", nonce="WVzknp9s1JjyfbMh/1+/GQ==", uri="sip:sip.kabelfon.vodafone.de", response="51a8451af111acc8e859f48d2ff46ef4", algorithm=MD5
        Max-Forwards: 70
        Expires: 1800
        User-Agent: AVM FRITZ!Box 7580 153.06.83 (Feb 22 2017)
        Supported: 100rel,replaces
        Allow-Events: telephone-event,refer,reg
        Allow: INVITE,ACK,OPTIONS,CANCEL,BYE,UPDATE,PRACK,INFO,SUBSCRIBE,NOTIFY,REFER,MESSAGE,PUBLISH
        Accept: application/sdp, multipart/mixed
        Accept-Encoding: identity
        Content-Length: 0

01:31:10.461455 IP (tos 0x68, ttl 120, id 0, offset 0, flags [none], proto UDP (17), length 488)
    88.134.209.241.5060 > 192.168.0.4.1024: SIP, length: 460
        SIP/2.0 401 Unauthorized
        Via: SIP/2.0/UDP 188.192.11.22:1024;received=188.192.11.22;branch=z9hG4bK2E975190C1DC1970;rport=5060
        From: <sip:[email protected]>;tag=953720691
        To: <sip:[email protected]>;tag=SD81i2399-hejdsykd
        Call-ID: [email protected]
        CSeq: 790 REGISTER
        WWW-Authenticate: Digest realm="technik.kabel-deutschland.de", nonce="h6M8gj2udlsm0Nh0WzkyBQ==",algorithm=MD5
        Content-Length: 0

Könnt ihr erkennen, warum der Request nicht erfolgreich ist?

Vielen Dank schon mal :)
 
Ah, cool, Danke, das ist schon mal gut zu wissen.
Dann ist das vermutlich das Problem!
Weil: Das Log ist vollständig. Ich hab danach keine weiteren Pakete...
Vermutlich gelangt die Antwort nicht zur Fritzbox ?!
Ich frage mich, ist Port 1024 eigentlich OK für die Antwort? Warum schickt Vodafone nicht auf 5060?
 
UDP 1024
Keine Ahnung, ist aber existent...
Code:
nmap -sU -p1024 188.192.11.22
Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-06 08:54 CEST
Nmap scan report for ipbcc00b16.dynamic.kabel-deutschland.de (188.192.11.22)
Host is up (0.051s latency).

PORT     STATE    SERVICE
1024/udp filtered unknown
Wie siehts mit IPv6 aus?
Hast du einen DS-Lite Anschluss?
 
Zuletzt bearbeitet:
Die IP war nur ausgedacht und nicht meine echte.
Aber UDP ports sind ja grundsätzlich erstmal alle auf filtered.

IPv6 hab ich nicht. DS-Lite auch nicht.

Ich hab nun nochmal etwas ausführlicher ein tcpdump mitlaufen lassen und bisschen ein bisschen weitergekommen.
Aus irgendeinem Grund schickt mir Vodafone eingehende SIP Pakete auf Port 1024/udp.

Ich habe daher eine iptables NAT rule eingefügt:
Code:
root@firewall:~# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 2417 packets, 202K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1516  908K DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:1024 to:192.168.0.4:5060
und ändere den Port auf 5060 und schicke das Paket weiter zur Fritzbox (192.168.0.4)
enp3s0 ist mein Interface zum DSL Modem.

Nun klingelt es wenigstens bei eingehenden Anrufen und die Fritzbox sagt, dass alle Nummern korrekt registriert sind.

Es gibt nun jedoch noch zwei weitere Probleme:
1) Wenn ich angerufen werde, klingelt meine Fritzbox und ich sehe im Callmonitor, dass ich angerufen werde. Ich kann mit dem Handgerät den Anruf jedoch nicht annehmen. Die Verbindung wird nicht aufgebaut. Ich höre den Anrufer nicht und er hört mich nicht. Der Anrufer merkt noch nicht mal, dass ich den Anruf angenommen habe. Beim Anrufer tutet es noch nicht mal.

2) Wenn ich jemanden anrufe, klappt alles und man kann sich gegenseitig hören. Nach 15...16 Minuten wird der Anruf jedoch einfach getrennt.

Bezüglich Problem 1 hab ich nochmal ein paar Pakete mitgeschnitten:

Code:
13:35:52.971921 IP (tos 0x68, ttl 120, id 0, offset 0, flags [none], proto UDP (17), length 1217)
    88.134.209.241.5060 > 192.168.0.4.5060: SIP, length: 1189
        INVITE sip:[email protected];uniq=A9AEA534D04788AC2C3C49FAB030F SIP/2.0
        Via: SIP/2.0/UDP 88.134.209.241:5060;branch=z9hG4bKo3ph01301018vnn2fml0.1
        Call-ID: SD454id01-d90c7a0aa7a336495e482fb470513917-ao94go2030
        From: <sip:[email protected];user=phone>;tag=SD454id01-gj8l13v1-CC-26
        To: <sip:[email protected];user=phone>
        CSeq: 1 INVITE
        Allow: ACK,BYE,CANCEL,INVITE,PRACK,REGISTER,UPDATE
        Contact: <sip:[email protected]:5060;transport=udp>;+g.3gpp.mid-call;+g.3gpp.accesstype="cellular";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";video;+g.3gpp.mid-call;+g.3gpp.ps2cs-srvcc-orig-pre-alerting;+sip.instance="<urn:gsma:imei:35377308-845564-0>"
        Max-Forwards: 56
        Supported: timer
        Session-Expires: 1800;refresher=uac
        Min-SE: 1790
        P-Early-Media: supported
        P-Preferred-Service: urn:urn-7:3gpp-service.ims.icsi.mmtel
        Content-Length: 240
        Content-Type: application/sdp

        v=0
        o=- 3779254372 15162454 IN IP4 88.134.209.249
        s=-
        c=IN IP4 88.134.209.249
        t=0 0
        m=audio 10856 RTP/AVP 9 8 110
        a=rtpmap:9 G722/8000
        a=rtpmap:8 PCMA/8000
        a=rtpmap:110 telephone-event/8000
        a=fmtp:110 0-15
        a=sendrecv
        a=ptime:20
Und die andere Richtung:
Code:
13:35:55.539199 IP (tos 0x0, ttl 64, id 63299, offset 0, flags [none], proto UDP (17), length 1040)
    192.168.0.4.5060 > 88.134.209.241.5060: SIP, length: 1012
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP 88.134.209.241:5060;branch=z9hG4bKo3ph01301018vnn2fml0.1
        From: <sip:[email protected];user=phone>;tag=SD454id01-gj8l13v1-CC-26
        To: <sip:[email protected];user=phone>;tag=F9E8CDE97D532473
        Call-ID: SD454id01-d90c7a0aa7a336495e482fb470513917-ao94go2030
        CSeq: 1 INVITE
        Contact: <sip:[email protected];uniq=A9AEA534D04788AC2C3C49FAB030F>
        User-Agent: AVM FRITZ!Box 7580 153.06.83 (Feb 22 2017)
        Supported: 100rel,replaces
        Allow-Events: telephone-event,refer
        Allow: INVITE,ACK,OPTIONS,CANCEL,BYE,UPDATE,PRACK,INFO,SUBSCRIBE,NOTIFY,REFER,MESSAGE,PUBLISH
        Content-Type: application/sdp
        Accept: application/sdp, multipart/mixed
        Accept-Encoding: identity
        Content-Length:   249

        v=0
        o=user 8892490 8892490 IN IP4 188.192.11.22
        s=-
        c=IN IP4 188.192.11.22
        t=0 0
        m=audio 7078 RTP/AVP 9 8 110
        a=rtpmap:9 G722/8000
        a=rtpmap:8 PCMA/8000
        a=rtpmap:110 telephone-event/8000
        a=fmtp:110 0-15
        a=sendrecv
        a=rtcp:7079
        a=ptime:20

Die Fritzbox sendet auch ganz fleißig per UDP an diese ausgehandelte Verbindung:
Code:
13:35:55.562368 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    192.168.0.4.7078 > 88.134.209.249.10856: UDP, length 172
13:35:55.582378 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    192.168.0.4.7078 > 88.134.209.249.10856: UDP, length 172
13:35:55.602355 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    192.168.0.4.7078 > 88.134.209.249.10856: UDP, length 172

Ich habe auch für udp Port 7078 eine NAT Regel, aber die wird nicht getriggert:
Code:
root@firewall:~# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 10502 packets, 795K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1642  995K DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:1024 to:192.168.0.4:5060
  727  352K DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:5060 to:192.168.0.4
    0     0 DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp spt:5060 to:192.168.0.4
    0     0 DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp spts:7078:7110 to:192.168.0.4
    0     0 DNAT       udp  --  enp3s0 *       0.0.0.0/0            0.0.0.0/0            udp dpts:7078:7110 to:192.168.0.4
enp3s0 ist das Interface nach draußen zum DSL Modem.

Habt ihr noch ne Idee, was fehlt?
 
Du lässt Port 10856 zur Fritzbox?


c=IN IP4 88.134.209.249
t=0 0
m=audio 10856 RTP/AVP 9 8 110
 
88.134.209.249 ist die IP von Vodafone.
Ich hab das noch nicht ganz genau verstanden, was da wie ausgehandelt wird, aber wenn ich mir dann die UDP Pakete angucke:
Code:
13:35:55.562368 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 200)
    192.168.0.4.7078 > 88.134.209.249.10856: UDP, length 172
Dann sieht das für mich eher so aus, dass Vodafone meiner Fritzbox sagt "hey, schicke RTP Pakete bitte zu mir an Port 10586/udp", oder?
Und das tut ja dann auch meine Fritzbox.
 
Moinsen

Nach meinem Verständnis kann 88.134.209.249 nichts an 192.168.0.4 schicken.
Da sollte eher die IPv4 des (deines) Anschlusses auftauchen.
...und nicht irgendeine NAT IP.

Versuch es mal mit STUN in den Einstellungen der 7590 Internetrufnummer.
Dann wird für SIP Aushandlungen die öffentliche IP und eine hohe Portnummer genutzt.
( Durchgehend, zwecks Erreichbarkeit )

Danach werden über SIP/RDP auch öffentliche IP und hohe Portnummern für RTP Audio mitgeteilt/ausgehandelt.
( Für die Dauer des Telefonats )
 
Zuletzt bearbeitet:
Stimmt.
Im Invite von Vodafone mittels SDP von welcher IP mit welchem Port RTP (=Socket) kommt. Die Fritzbox schickt das dann zurück mit ihrem Socket.

Hängen die Gerät hinter einem Router, dann fehlt ihnen die eigene öffentliche IP und schicken eine private zum Softswitch. Der wiederrum schickt RTP zu einer LAN-Adresse, die in seinem Netz nicht geroutet wird.

Den Register gleichen die Router dadurch aus in dem sie NATen. Klappt das auch nicht meldet sich das Endgerät mit einer privaten IP im Contact Header, auf die der Softswitch nicht antworten kann. In dem Fall schicke die z.B. eine Fritzbox sekündlich ein Invite, der vom Softswitch nicht beantwortet werde kann.

Als Krücke kann man z.B. STUN einsetzen, dann steht im Invite vom genateten Endgerät die öffentliche IP. Dann brauchst du aber wieder Portforwards für die RTP und SIP-Ports, da viele Router vielleicht noch den Invite anpassen (natten) aber nicht in den SDP-Header gucken (SIPALG).
 
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.