URL umleiten (URL-Redirect) mit Freetz: bitte um Anleitung

LeeB

Neuer User
Mitglied seit
10 Apr 2019
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Ziel ist es dass alle Anfragen an openapi.klicktel.de umgeleitet werden auf (Beispiel) meinedomain.de/meinscript.php oder meinedomain.de/meinscript

Für beide Adressen MÜSSEN diese beiden URLs benützt werden, KEINE IPs (da die 1. URL komplett abgeschaltet wurde und der Ziel-URL keine eigene IP zugewiesen werden kann).

Freetz + Pakete 'Privoxy' & 'Iptables' laufen und werden bei boot automatisch geladen.

rc.custom habe ich nach Anweisung auf packages/privoxy – Freetz mit folgendem Inhalt "gefüttert" und überprüft, dass er nach Neustart auch noch vorhanden ist:
Code:
modprobe ip_tables
modprobe iptable_filter
modprobe x_tables
modprobe xt_tcpudp
modprobe ipt_REDIRECT
modprobe ip_nat
modprobe iptable_nat
iptables -t nat -A PREROUTING -p tcp -i lan --dport 80 -j REDIRECT --to 8118
[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config
Und nun? Wo und wie trage ich denn den gewünschten redirect openapi.klicktel.de -> meinedomain.de/meinscript.php ein?

Ihr wollt das mit Sicherheit selber erst mal bei euch testen - bitteschön:

Test-URL: https://mahalo.lima-city.de/openapi/

Bsp.-URL: https://mahalo.lima-city.de/openapi/?hm=06234801329

Ziel (funktionierende Umleitung) ist erreicht wenn http://openapi.klicktel.de/?hm=06234801329 das gleiche Ergebnis darstellt wie der Link dadrüber.
 
Zuletzt bearbeitet:
willst du damit ein eigens Online Telefonbuch für ein IP-Telefon aufrufen ?
 
  • Like
Reaktionen: LeeB
Ja. Mein Gigaset DL500a erlaubt es trotz aktuellster Firmware leider nicht (im Ggstz. zu einigen anderen Gigaset Basisstationen) eine URL für ein eigenes Online Telefonbuch hinzu zu fügen.. :( es erlaubt nur, aus der Liste mit vorgegebenen Einträgen zu wählen.

Die Firmware editieren wäre eine andere Route, nur hat das wohl bislang niemand gemacht, und das DL500a erlaubt auch keine lokale FW einzuspielen..
 
Was du machen müsstest, wäre ein Proxy, der den Aufruf umschreibt.
Denn selbst wenn du dem Aufruf eine andere IP zuweist, kommt der Aufruf beim neuen Ziel mit den kompletten Aufrufparameters des originalen Ziels an.
Alleine schon der Name des Zielservers würde auf einem normalen Hosting-Paketes, bei dem IP-Adressen auf mehrere Nutzer aufgeteilt werden, in leere laufen, da du dort eben nicht den Servernamen zuweisen kannst.
"openapi.klicktel.de" wirst du dort nicht eintragen können.
(Wenn du die IP alleine hast, schon eher)

Und da ist ein kompletter Rewrite besser.
 
@Theo Tintensich : die die eine Gigaset mit der Möglichkeit eine eigene URL für's Telefonbuch einzutragen, setzen dort einfach meinedomain.de/oertliche.php ein, und schon läuft alles wieder wie es sollte. Das php-Script ist 100% dem alten auf openapi.klicktel.de nachgebaut. Daher sollte doch ein kompletter rewrite eigentlich nicht nötig sein, oder?

Kleines Update: openapi.klicktel.de scheint laut ping DOCH noch eine eigene IP (145.253.193.190) zu haben, denn die von klicktel.de ist 104.25.223.15. Ich weiß nicht, ob das eine brauchbare Info ist. Zudem geht traceroute nicht komplett durch.

-- Aktualisiert --

Ihr wollt das mit Sicherheit selber erst mal bei euch testen - bitteschön:

Test-URL: https://mahalo.lima-city.de/openapi/

Bsp.-URL: https://mahalo.lima-city.de/openapi/?hm=06234801329

Ziel (funktionierende Umleitung) ist erreicht wenn

http://openapi.klicktel.de/?hm=06234801329

das gleiche Ergebnis darstellt wie der Link dadrüber
 
Zuletzt bearbeitet:
@Theo Tintensich : kannst du am mit den Infos die ich hier reingestellt habe als Beispiel mal einen "kompletten Rewrite" formulieren? Also was für Daten ich in welcher Freetz config eintragen soll?
 
Ähh, nein. Ich kenne nur die Theorie ;-)
 
OK. Sehr schade dass das auf alle (auch im DEB) zutrifft.
 
Wie wäre es denn, per DNS die Auflösung gleich umzuleiten?
 
@WileC : wie genau? fda im DEB hat's schon mit dem Freetz-Paket dnsmasq (100kb - ist in meinem Image leider nicht enthalten) probiert. Er hat..
in der "extras" Sektion vom dnsmasq eingetragen:
Code:
address=/.xxx/192.168.178.1
Damit wird alles was mit ".xxx" endet [auf 192.168.178.1] umgebogen
Als Beispiel-IP wurde hier (wie du natürlich siehst) die F!B genommen. Wenn ich die IP eines Webserver nehme, muss das wohl ein dedizierter Server sein, da bislang weder für dnsmasq noch privoxy noch iptables eine definitive Möglichkeit genannt wurde, auch auf meinedomain.de/openapi umzuleiten.

Ebenso ist noch nicht einmal klar, ob .xxx mit openapi.klicktel.de ersetzt werden kann..

Wie weit kommst denn du damit, die Auflösung gleich per DNS umzuleiten?
 
Ich komme damit überhaupt nicht weit, weil ich dein Szenario nicht benötige. Testen, obs klappt, musst Du leider schon selber. Einfach mal ein freetz-Paket mit dnsmasq erstellen und testen, ob du mit "address=/openapi.klicktel.de/<deine-ip>" weiter kommst... ansonsten wirst du mit einem Proxy, welcher URLs manipulieren kann, arbeiten.

Noch eine Möglichkeit wäre, so aus dem Bauch raus: openapi.klicktel.de auf einen lokalen webserver umleiten, welcher die URL nach deinen Anforderungen manipuliert, oder eben die "offizielle" URL (http://openapi.klicktel.de/?hm=06234801329) abfängt und die Anfrage selbst nach deinen Wünschen beantwortet.

Aber grundsätzlich: ums selbst ausprobieren, welcher Lösungsansatz für Dich der praktikabelste ist, wirst Du nicht drum rum kommen..
 
  • Like
Reaktionen: LeeB
Der Vollständigkeit halber:
redirect ist das relevante Privoxy-Schlüsselwort (damit müsste auch ein URL-Rewrite möglich sein). Wobei dieser Weg vermutlich nur dann zum Erfolg führen würde, wenn Du den Proxy-Server explizit vorgeben kannst und nicht den transparenten IP-Tables basierten Proxy zum Laufen bringen müsstest (IP-Tables auf den aktuellen Boxen zum Laufen zu bekommen, ist ein recht komplexes Thema).

Daher ist der Vorschlag von @WileC es per DNS-Auflösung zu machen durchaus sinnvoll bzw. führt mit weniger Aufwand und größerer Wahrscheinlichkeit zum Erfolg. Damit kann aber nur der openapi.klicktel.de-Teil der URL durch eine feste IP-Adresse ersetzt werden. Unter dieser Adresse muss dann ein Web-Server erreichbar sein, der die Anfragen genauso (unter demselben Pfad und in demselben Format) entgegen nimmt und beantwortet wie es openapi.klicktel.de machen würde bzw. gemacht hat.

Neben der von @WileC bereits genannten Alternative (unter "dnsmasq/extra" im Freetz-WebIf)
Code:
address=/openapi.klicktel.de/<IP-Adresse-des-klicktel-Ersatzservers>

gibt es noch die Möglichkeit es unter "Freetz/hosts" im Freetz-WebIf
Code:
<IP-Adresse-des-klicktel-Ersatzservers> * * openapi.klicktel.de
einzutragen (dnsmasq wird weiterhin benötigt).
 
  • Like
Reaktionen: LeeB
OK danke @WileC @er13 ! Sorry für mich ist das grad eine steile Lernkurve aber ich versuche mein bestes zu geben!

"lokaler Webserver": es hat jemand in Gigaset/ Klicktel thread potentiell einen Rasperry Pie vorgeschlagen. Ist natürlich ein zusätzliches Stück Hardware, und als Webserver konfiguriert werden müsste der auch.

"wenn Du den Proxy-Server explizit vorgeben kannst"
ahem ich dachte Freetz-privoxy IST der Proxy-Server auf der F!B?? Wenn nicht, was denn dann: ein Webserver entweder im lokalen LAN oder im externen Internet der als Proxy-Server konfiguriert ist?

Müssen unter http://fritz.box:81/cgi-bin/conf/privoxy "Einstellungen: Der Privoxy Server ist gebunden an" sowohl "IP Adresse" (Standard: 0.0.0.0) als auch "Port" angegeben werden, und zwar NICHT mit der IP der F!B 192.168.178.1 + z.B. port 8118 sondern mit der IP eines eigenständigen Proxy Servers (extra für diesen *einen* redirect)?

"redirect ist das relevante Privoxy-Schlüsselwort (damit müsste auch ein URL-Rewrite möglich sein)."

Deswegen habe ich ja ein image mit privoxy. Bei den Beispielen sehe ich alle möglichen verschachtelten strings aber keinen einfachen redirect url1 --> url2.

Wäre der rewrite string mit regular expressions für redirect openapi.klicktel.de --> mahalo.lima-city.de/openapi so korrekt:

{ +redirect{http://openapi.klicktel.de} }
http://mahalo.lima-city.de/openapi

bzw. sogar einfach

{ +redirect{openapi.klicktel.de} }
mahalo.lima-city.de/openapi

dann unter http://fritz.box:81/cgi-bin/file/privoxy/user_action eintragen und privoxy neu starten? Bislang ohne Wirkung.

Von mir aus kann der redirect im ganzen LAN hier aktiv sein. Falls privoxy an eine bestimmte IP gebunden sein muss: das Gigaset hat die feste IP 192.168.178.21

"dnsmasq": dafür ist halt ein dedicated ("dedizierter"?) Webserver nötig aber ich habe derzeit nur shared zur Verfügung, und es lohnt sich nicht, extra für die Telefonbuch- und Anruferkennung auf einen dedicated aufzustocken. Ich müsste dafür jemanden mit einem dedicated finden, der eine .htaccess mit mod_rewrite und redirect entweder auf einen Unterordner ../openapi mit dem Script oder auf meinen Server akzeptiert. .. Und dann geht's ja erst zu dasörtliche und wieder alle hoops zurück bis ins Gigaset. Da wäre ein rewrite + redirect via privoxy wahrsch. weniger Sprünge wenn ich wirklich alle Schritte weiß, oder?
 
Privoxy-Alternative

Eine der möglichen Antworten (es gibt durchaus mehrere) lautet
Code:
{+redirect{s@^http://openapi\.klicktel\.de/@https://mahalo.lima-city.de/openapi/@}}
openapi.klicktel.de/
unter Privoxy/user.actions im Freetz-WebIf.

Privoxy ist ein Proxy-Server. Nur weil auf Deiner Fritz!Box ein Proxy-Server läuft, heißt es noch langer nicht, dass alle Web-Anfragen über ihn geleitet werden. Es gibt folgende Möglichkeiten:
  1. Man gibt in jedem Client explizit einen zu verwendenden Proxy-Server vor - sowas müsstest Du z.B. von Deinem Web-Browser kennen "Network Settings/Proxy Server" (oder so ähnlich). Wenn Du Glück hast, gibt es eine ähnliche Einstellung in Deinem Telefon und dann wäre Dein Problem an der Stelle bereits gelöst.
  2. Durch zusätzliche ("Netzwerk-Konfigurations")Maßnahmen sorgt man dafür, dass alle Web-Anfragen transparent für alle Clients (d.h. ohne, dass die Clients es überhaupt mitkriegen) über/an den Proxy-Server und erst danach an den eigentlich angefragten Server geleitet werden. Dies wird als Transparenter Proxy bezeichnet. Um einen transparenten Proxy zu konfigurieren, wird das Paket IPTables benötigt, welches für die aktuellen Boxen/Firmwares out-of-the-box in Freetz NICHT unterstützt wird. Es ist mit recht viel Aufwand verbunden IPTables zum Laufen zu bekommen, es gibt auch keine Garantie, dass es überhaupt klappt. Ich rate explizit davon ab, weil Du Dich dann auf ein Terrain begibst, wo Du noch mehr Fragen (viel mehr als Antworten) haben wirst.
  3. Während ich schrieb, fiel mir eine dritte Alternative ein. Ich selbst habe jedoch keine praktische Erfahrung damit, es kann sogar sein, dass ich mich in Bezug darauf täusche, dass es überhaupt eine Alternative ist. Zunächst mal, die Stichworte: WPAD und PAC. Man könnte versuchen, die Proxy-Konfiguration über DHCP (s. den ersten Bullet-Point) zu verteilen und dann mittels PAC eben den Client den gewünschten Proxy-Server auswählen lassen. Das Ganze setzt voraus, dass Dein Telefon all die Protokolle/entsprechende DHCP-Optionen kennt und unterstützt.
DNS-Alternative

Viel einfacher ist es aber, wie bereits geschrieben, mit einem DNS-Redirect zu lösen. Bzw. mit einer Kombination aus einem DNS-Redirect und dann einem URL-Rewrite/-Redirect auf dem Server, an den der DNS-Redirect umleitet.

Edit: es sieht so aus, dass Dein Telefon die explizite Vorgabe eines Proxy-Servers unterstützt, s. die Seite 15 von diesem Dokument bzw. die Seite 17 von seiner deutschsprachigen Version.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: LeeB
Hervorragend, vielen Dank! Im Browser bin ich schon weiter! Als privoxy Proxy IP 192.168.178.1, Port 8118, unter Privoxy/user.actions den redirect rewrite von dir; im Browser 192.168.178.1:8118 als Proxy, und schon wird openapi.klicktel.de/?hm=06234801329 aufgelöst und auf https://mahalo.lima-city.de/openapi/?hm=06234801329 umgeleitet - Y E S!!

Im Fon ebenfalls 192.168.178.1:8118 als Proxy aktiviert, nur leider funktioniert es dort noch nicht. Der Proxy wird aber angenommen denn im CH-fonbuch kann ich nach wie vor suchen.

Kann sein dass es am https liegt. Es war nicht rauszufinden ob vom Fon aus die Suche nach http oder https geht. Im Browser passiert bei https://openapi.klicktel.de/ nichts (spinning wheel). Folgende Editierung deines Strings bringt nichts:
Code:
{+redirect{s@^https://openapi\.klicktel\.de/@https://mahalo.lima-city.de/openapi/@}}
https://openapi.klicktel.de/
Wie sähe denn der korrekte rewrite für https aus?

Die 2. Möglichkeit ist dass das Fon nach wie vor die URL openapi.klicktel.de erwartet und mit mahalo.lima-city.de/openapi nichts anfangen kann, also keine Daten zurück bekommt weil die URL nicht übereinstimmt auch wenn das Script korrekt ist. Für den Fall: weiß du ob via rewrite auch ein cloaked redirect möglich ist, wo die URL die gleiche bleibt (ähnlich wie bei einem iFrame in HTML)?
Aber vielleicht reicht ja der korrekte https rewrite.

[EDIT]: vielen Dank für's Nachschauen wegen DL500a Proxy !!!!!
 
Zuletzt bearbeitet:
Fixes Weiterleiten nach https, i.e. {http,https}->https
Code:
{+redirect{s@^https?://openapi\.klicktel\.de/@https://mahalo.lima-city.de/openapi/@}}
openapi.klicktel.de

Protokoll getreues Weiterleiten, i.e. http->http, https->https, wobei mahalo.lima-city.de scheint alle http-Anfragen nach https umzuleiten
Code:
{+redirect{s@://openapi\.klicktel\.de/@://mahalo.lima-city.de/openapi/@}}
openapi.klicktel.de

Edit: Path-Patterns zu Host-Patterns wegen FAQ 4.15 geändert
 
Zuletzt bearbeitet:
Dankeschön, aber egal welchen der beiden strings ich unter user.actions speichere, leider nach wie vor im fon "Dienst ist nicht verfügbar" und im Browser bei https://.. spinning wheel. Mit beiden strings wird http://openapi.klicktel.de/ nach wie vor korrekt weiter geleitet. Es scheint irgend eine Kleinigkeit müsste für https noch umgeschrieben werden?

PS1: kann das irgend etwas mit SSH und Autorisierungs-Schlüsseln zu tun haben? Muss ich in der Freetz/SSH Sektion etwas eintragen? eher nicht - https = SSL nicht SSH

PS2: habe das Script auch mal auf unseren Server mit eigener Domain unter <meinserver.de>/openapi kopiert, den string in privoxy/user-actions editiert, gespeichert - keine Änderung.

PS3: Falls du auch Freetz mit privoxy installiert hast: ist es bei dir im Browser genau so wie ich's beschreibe wenn du egal welchen string in user-actions abspeicherst und dann im Browser mit aktiviertem Proxy 192.168.178.1:8118 https://openapi.klicktel.de aufrufst -> Leerlauf?
 
Zuletzt bearbeitet:
Privoxy-Alternative

Eine der möglichen Antworten (es gibt durchaus mehrere) lautet [..]
er13, sind bei all den rewrites die du freundlicherweise geschrieben und geteilt hast bereits alle Möglichkeiten ausgeschöpft, oder gibt es vielleicht noch weitere Alternative(n)?

PS: Hat das "spinning wheel"/ der "Leerlauf" vllcht irgend etwas mit blockiertem traffic zu tun? Du hattest ja die "Path-Patterns zu Host-Patterns wegen FAQ 4.15 geändert":
The only exception to this is blocking by host patterns, as the client needs to tell Privoxy the name of the remote server, so that Privoxy can establish the connection. If that name matches a host-only pattern, the connection will be blocked.
 
Zuletzt bearbeitet:
"https umzuleiten" wird wahrscheinlich mit privoxy nicht gehen oder zumindest habe ich bisher keine Möglichkeit gefunden.

Der Grund kann in etwa wie folgt beschrieben werden. Bei https-Requests wird erst per CONNECT ein TCP/IP Tunnel zwischen dem Client (über den Proxy-Server) zum Ziel-Server aufgebaut. Der Tunnel "verläuft" zwar über den Proxy-Server, aber nur im Sinne des Connection-Pfades, vom Inhalt der Kommunikation kriegt der sich in the middle befindliche Proxy-Server nichts mehr mit (was auch richtig ist, sonst könnte man ja den verschlüsselten Traffic mitlesen). Damit ist auch ein Rewrite von anfragten Pfaden nicht mehr möglich. (s. CONNECT bzw. HTTP CONNECT method für mehr Details).

Das einzige, was ich geschafft habe, ist es den Client-Header so umzuschreiben, dass der über CONNECT aufgebaute Tunnel dann in Wirklichkeit mit dem Ersatzserver aufgebaut wird und nicht mit dem openapi.klicktel.de. Dafür

in Privoxy/user.filter
Code:
CLIENT-HEADER-FILTER: openapi.klicktel.de-to-mahalo.lima-city.de Rewrite https://openapi.klicktel.de to https://mahalo.lima-city.de
s@(CONNECT) openapi\.klicktel\.de:443 (HTTP/\d\.\d)@$1 mahalo.lima-city.de:443 $2@ig

in Privoxy/user.actions
Code:
{+client-header-filter{openapi.klicktel.de-to-mahalo.lima-city.de}}
openapi.klicktel.de

Der Tunnel wird zwar zu mahalo.lima-city.de aufgebaut. Der mahalo.lima-city.de meldet dann aber
Code:
Unter der Adresse "openapi.klicktel.de" ist derzeit keine Webseite auf den Servern von lima-city hinterlegt.
Man muss zusätzlich auch noch aktiv dem Zertifikat vertrauen, da der Client eigentlich ein Zertifikat für openapi.klicktel.de erwartet, aber eins für mahalo.lima-city.de präsentiert bekommt.
 
Genial, ganz dickes Dankeschön! er13 ich hab nen Außentermin & kann morgen testen & mich wieder melden
 
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.