[HowTo] Korrekte Uhrzeit auf Cisco 8961/9951/9971 an Fritzbox

So, habe gerade nach fast fünf Jahren mal wieder in diesen Thread geschaut und bin erfreut, dass es scheinbar einigen Leuten geholfen hat :)

Vielen Dank auch JoergR für deine Weiterentwicklung, die auch auf Buster funktioniert, das hat mir sehr geholfen. Ich hatte nur ein paar Probleme mit libnetfilter_queue, da die Version, die man über apt bekommt nicht kompatibel zu sein scheint.

Zum selberbauen habe ich folgendes getan:
Bash:
./configure --prefix=/usr
make
make install

Danach konnte ich auch die C-Applikation sipdate kompilieren.

Grüße
Hanjo
 
Guten Abend zusammen,
bin gerade dabei mir auf einer Linux VM die Lösung nach zu bauen, nur leider finde ich das Paket nfqueue-bindings-perl nicht mehr. Hat jemand von euch eine kurze Anleitung wie ich das heruntergeladen und installiert bekomme, wäre echt cool.

VG
Henrik
 
Welches Linux genau (also incl Versionsangabe) soll denn verwendet werden?

Mein RPi mit Raspbian 9 kennt das Paket
Code:
sudo apt install nfqueue-bindings-perl

Code:
cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
 
Guten Morgen,
ich nutze Ubuntu in der Version 21.04. Wenn ich den Befehl eingebe erhalte ich folgende Meldung,

sudo apt install nfqueue-bindings-perl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package nfqueue-bindings-perl
 
Hast du dies und das gelesen? Steht doch alles in diesem Thread ;)
 
Guten Abend Zusammen,

nachdem ich meine Fehler von heute morgen selber erkannt habe bleibe ich nun beim Skript am Punkt hängen
"Make" hängen. Hier erhalte ich folgende Fehlermeldung
root@dehmr01-lxs001:/home/pi/sipdate# make
g++ -O2 -c sipdate.c
sipdate.c:16:10: fatal error: libnetfilter_queue/libnetfilter_queue.h: No such file or directory
16 | #include <libnetfilter_queue/libnetfilter_queue.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:10: sipdate.o] Error 1

Zudem bekomme ich bei den beiten Patchvorgänge folgende Meldungen
"
patching file ./sipdate/sipdate.c
patch unexpectedly ends in middle of line
Hunk #2 succeeded at 28 with fuzz 1.
"
"
patching file ./sipdate/pktbuff.c
Hunk #1 succeeded at 92 (offset 9 lines).
patch unexpectedly ends in middle of line
Hunk #2 succeeded at 103 with fuzz 1 (offset 9 lines).
"

Kann mir hier eventuell jemand weiterhelfen.

Viele Grüße
Henrik
 
Hallo zusammen,

lese schon längere Zeit mit und kämpfe aktuell damit die Geschichte für das Einfügen des timestamps in die SIP Pakete ans fliegen zu bekommen.
Habe den Thread schon hoch und runter gelesen und werde einfach nicht schlauer dabei.

Rahmenbedingung ist:

9971 hinter einer Fritzbox, funktioniert so normal weg auch und registriert sich.
Ansatz: Routing über VM (Debian Strech mit 192.168.1.81 und 192.168.2.81 als IP) zwecks Modifikation der SIP Pakete.
FB 192.168.1.1 (mit statischer Route auf 192.168.2.0/24 via 192.168.1.81 (VM zum Routen))
Telefon 192.168.2.10 (Standardrouter auf 192.168.2.81 (2. IP der VM))

Vorbereitend gemacht wurde:
Code:
net.ipv4.ip_forward=1
iptables -A FORWARD -s 192.168.1.1/32 -d 192.168.2.10/32 -p udp -m udp --sport 5060 --dport 5060 -j NFQUEUE --queue-num 0

Das Problem ist nun, dass sich das Telefon bei der Konfiguration via VM nicht mehr registriert, man sieht zwar Anfragen via tcpdump.
Soweit ich die Einträge jetzt richtig verstanden habe, gibt es letztlich 2 Möglichkeiten die Pakete zu modifizieren, einmal via Perl-Skript,
alternativ mittel des C-Programms.

Leider bekomme ich die Sourcen von joergR aus seinem git-repository via ./make_sipdate.sh nicht erfolgreich gebuildet. Hat da vielleicht
jemand 'ne Idee wo es da die Probleme gibt?

Code:
Cloning into 'libnetfilter_queue'...
remote: Counting objects: 1334, done.
remote: Compressing objects: 100% (602/602), done.
remote: Total 1334 (delta 855), reused 1084 (delta 717)
Receiving objects: 100% (1334/1334), 388.57 KiB | 0 bytes/s, done.
Resolving deltas: 100% (855/855), done.
patching file ./sipdate/sipdate.c
patching file ./sipdate/pktbuff.c
Hunk #1 succeeded at 92 (offset 9 lines).
Hunk #2 succeeded at 103 (offset 9 lines).
g++ -O2 -c sipdate.c
g++ -O2 -c pktbuff.c
g++ -O2 -c udp.c
udp.c:17:0: warning: "_GNU_SOURCE" redefined
 #define _GNU_SOURCE

<command-line>:0:0: note: this is the location of the previous definition
g++ -O2 -c checksum.c
g++ -O2 -c ipv4.c
g++ -O2 -c ipv6.c
g++ sipdate.o pktbuff.o udp.o checksum.o ipv4.o ipv6.o -lnetfilter_queue -o sipdate
sipdate.o: In function `cb(nfq_q_handle*, nfgenmsg*, nfq_data*, void*)':
sipdate.c:(.text+0x121): undefined reference to `nfq_get_uid'
sipdate.c:(.text+0x136): undefined reference to `nfq_get_gid'
sipdate.c:(.text+0x14b): undefined reference to `nfq_get_secctx'
collect2: error: ld returned 1 exit status
Makefile:14: recipe for target 'sipdate' failed
make: *** [sipdate] Error 1
cp: cannot stat './sipdate': No such file or directory
● sipdate.service - Start sipdate
   Loaded: loaded (/etc/systemd/system/sipdate.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sat 2023-03-11 22:35:50 CET; 3ms ago
  Process: 1049 ExecStart=/usr/local/sbin/sipdate (code=exited, status=203/EXEC)
 Main PID: 1049 (code=exited, status=203/EXEC)

Alternative Tests mit dem Perl-Skript wollen auch nicht so Recht klappen.
 
Zuletzt bearbeitet:
Rahmenbedingung ist:

9971 hinter einer Fritzbox, funktioniert so normal weg auch und registriert sich.
Ansatz: Routing über VM (Debian Strech mit 192.168.1.81 und 192.168.2.81 als IP) zwecks Modifikation der SIP Pakete.
FB 192.168.1.1 (mit statischer Route auf 192.168.2.0/24 via 192.168.1.81 (VM zum Routen))
Telefon 192.168.2.10 (Standardrouter auf 192.168.2.81 (2. IP der VM))

Vorbereitend gemacht wurde:
Code:
net.ipv4.ip_forward=1
iptables -A FORWARD -s 192.168.1.1/32 -d 192.168.2.10/32 -p udp -m udp --sport 5060 --dport 5060 -j NFQUEUE --queue-num 0

Funktioniert denn das Routing. Kannst du das Gateway auf der 192.168.2.81 sowie das Telefon auf der 192.168.2.10 von deinem "normalen" Rechner anpingen?

Dort kannst du auch mit

Code:
tracert 192.168.2.10

den Weg der Pakete verfolgen.

Auf dem VM-Router kannst du dir anschauen, ob (und was) das Telefon auf dem Port 5060 sendet.

Code:
tcpdump -v udp port 5060

Kommt da was an?

Was sagt das Logfile vom TFPT Server?
Siehst du das Telefon mit der 192.168.2.10 Dateien abrufen?
 
Hi,

danke für die Rückmeldung.

Ja das normale Routing aus dem 192.168.1.0 zu .2.10 oder .2.81 klappt. Das sieht man auch via tracert, dass er den hop über die VM nimmt zum Ziel.

Code:
C:\>tracert -d 192.168.2.10

Routenverfolgung zu 192.168.2.10 über maximal 30 Hops

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     1 ms    <1 ms    <1 ms  192.168.1.81
  3     1 ms    <1 ms    <1 ms  192.168.2.10

Ablaufverfolgung beendet.

C:\>tracert -d 192.168.2.81

Routenverfolgung zu 192.168.2.81 über maximal 30 Hops

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     1 ms    <1 ms    <1 ms  192.168.2.81

Ablaufverfolgung beendet.

Nach weiteren Tests war ich dann gestern irgendwann soweit, dass er zunächst einmal ohne Paketmodifikationen einfach nur die Registrierung via VM GW machte.
Zu dem Zeitpunkt hatte ich dann keine iptables Regel für FORWARD angelegt. Interessanterweise wurden via tcpdump trotzdem immer nur die Pakete von der FB zum Telefon angezeigt. Aber es lief dann erst mal.

Hatte ich dann die iptables Regel aktiviert, versandeten offenbar alle Pakete weil kein funktionierendes Skript oder C-Programm lief. Irgendwann habe ich dann noch mal die überarbeitete Perl-Skript Version aus dem Beitrag #12 verwendet. Die wich auf jeden Fall von meiner bisherigen Version ab. Startete man diese dann konnte man dort erstmals auch Pakete einlaufen sehen, welche um einen Zeitstempel ergänzt wurden.

Nach Neuregistrierung des Telefons wird nun das Datum korrekt angezeigt.

Das Problem mit dem builden des C-Programms besteht zwar weiter, aber wenn es mit dem Perl-Skript läuft, kann ich damit erst mal leben.
 
  • Like
Reaktionen: seelenreiter
Wie hanjov in #41 geschrieben hat, muss man die git Version von libnetfilter_queue benutzen.
Ich habe das Skript entsprechend upgedatet.
Eine alte Version sollte man vorher deinstallieren.
 
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.