Ich möchte einen öffentlichen Hotspot für HTTP(s) und FTP verwenden.
(Dieser erlaubt keine anderen Server-Zielports und nur IPv4) -
Währenddessen möchte ich 5G (mobiles Daten-Volumen) für "alle anderen"
Server-Zielports erlauben. Dafür aber wiederum kein HTTP(s) oder FTP
über das 5G.
Ziel ist es, damit z.B. YouTube, Webradio oder Debian-Updates über den
Hotspot laufen zu lassen - Und alles andere, wie geschäftliche Mail SMTP
oder online Spielen parallel über das 5G zu fahren. Ich möchte das
mobile Datenvolumen "schonen" und dafür - wo eben möglich - den
öffentlichen Hotspot benutzen.
Ich habe schon einiges mit Routen versucht, aber es wird meistens die 5G
Verbindung für alles benutzt (Metrik?) - oder es ging gar nichts mehr.
Ich möchte vermeiden iptables zu installieren, außer es lässt sich nicht
vermeiden.
Es reicht, dies "per Session temporär" z.B. per Skript einmalig
einzustellen bzw. auszuführen, und muss nicht "permanent" sein. Am
besten wäre natürlich das per statischer Schnittstellenbezeichnung und
nicht per temporär zugewiesener IP-Adressen zu konfigurieren. Ich hatte
bisher keine Erfolge.
H/W 'wlp0' ist der Hotspot.
Und 'enx0' das 5G Modem.
ip a (gekürzter Abschnitt)
1
wlp0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
mit Routing alleine wird das imho nicht gehen, weil das nur die IP
berücksichtigt.
Imho musst du den Paketfilter (netfilter) bemühen.
Ich denke, du musst dort auch Masquerading machen, weil dir sowohl das
Mobilfunknetz, also auch der Hotspot je eine IP-Adresse zuweist und du
deinen Anwendungen vermutlich nicht direkt sagen kannst, welche
IP-Adresse sie als Absender nehmen sollen.
Ich bin aus dem Netzwerkspiel allerdings seit langem raus, konkretere
Tips kann ich dir leider nicht geben.
Tilo R. schrieb:> Ich denke, du musst dort auch Masquerading machen,
Ist ja schon wegen der privaten Adressen notwendig.
Ralf D. schrieb:> Auch das wird aber netfilter benötigen
Irgendwer muss ja die Arbeit machen. 😂
Das wird alles warschl. nicht funktionieren weil immer eine andere IP
vergeben wird und evtl. auch das GW sich ändert. Aber Policy Based
Routing plus Browser "Umbiegung" sollte gehen. Ist nur temporär und echt
ein gefrickel. Permanent ginge es wenn du beim booten die ip des enx0
ermittelst und den Rest in ein script packst könnte es gehen...
1. default route f. enx0 entfernen
ip r del default via 10.209.138.103 dev enx0
2. Policy based routing f. enx0 erstellen
echo "100 enx0" >> /etc/iproute2/rt_tables
3. roules erstellen
iptables -A INPUT -i enx0 -p tcp -m multiport --dports 22,443 -j ACCEPT
# und die ports f. Mail etc. nicht vergessenn
iptables -A INPUT -i enx0 -m conntrack --ctstate ESTABLISHED,RELATED -j
ACCEPT
iptables -A INPUT -i enx0 -j DROP
3.
Zwei Browser für je f.d. getrennten Interfaces.
Dem Browser Mitteilen, dass es mit der IP des enx0 raus gehen soll
chromium --bind-address=<ip von enx0>
Tim S. schrieb:> Ich möchte vermeiden iptables zu installieren, außer es lässt sich nicht> vermeiden.
Iptables (also das netfilter-Backend) ist Teil des Kernels und somit
sowieso immer installiert, außer du hast einen eigenen Kernel ohne
kompiliert. Der iptables-Befehl ist nur ein simples User Interface um
den sowieso installierten netfilter zu konfigurieren.
Für den unwahrscheinlichen Fall, dass Tim "systemd-networkd" verwendet:
Trag dem hotspot.network eine
[Route]
Table=555 # Nummer egal, oder Namen vergeben
Und eine oder mehrere
[RoutingPolicyRule]
DestinationPort=443
Table=555
ein.
ggfs. noch Metric setzen.
Ersetzt das Gefrickel mit händisch angelegten Routing-Tables und
Firewall-Rules (Ob wohl die da auch als PolicyRule gingen,
"FirewallMark=") durch Gefrickel mit den systemd-config-Files, die auch
nur marginal besser dokumentiert sind.
Tim S. schrieb:> Ich möchte einen öffentlichen Hotspot für HTTP(s) und FTP verwenden.> (Dieser erlaubt keine anderen Server-Zielports und nur IPv4) -> Währenddessen möchte ich 5G (mobiles Daten-Volumen) für "alle anderen"> Server-Zielports erlauben. Dafür aber wiederum kein HTTP(s) oder FTP> über das 5G.
Okay, ich frage mal genauer.
Du befindest Dich in zwei Netzen, einem Hotspot und einem mobilen. Der
Hotspot lässt aber nur Verbindungen zu bestimmten Zielports zu: HTTPS,
HTTP und FTP. Diese Ports möchtest Du gerne über den Hotspot routen,
alle anderen hingegen über Dein mobiles Netz. Wenn das soweit stimmt,
würden ein Proxy und einige Environment-Variablen zweifellos helfen. :-)
Sheeva P. schrieb:> Wenn das soweit stimmt,> würden ein Proxy und einige Environment-Variablen zweifellos helfen.
Würde zwar gehen, (Proxy auf Source-IP für Outgoing Connections binden
usw.), aber unpraktisch, wenn sich die IP, die er vom Hotspot kriegt,
regelmäßig ändert.
Die Lösung über die Routing-Tables (egal über welches Tool eingerichtet)
erlaubt über die Metric der default-Routes ein einigermaßen nahtloses
Fallback. Wenn das Hotspot Interface down ist, greift einfach die zweite
Route über 5G.
Ich denke ich werde es vorerst "aufgeben" müssen! Nun fummel ich schon
einige Tage immer mal wieder an einem Skript herum, und habe auch die
Google-KI befragt, die auch eure entsprechenden Tipps wiedergeben hat.
Das zuerst vorgeschlagene "Policy Based Routing" mit "modernen"
Nftables, NAT, Masquerading und sogar im Kernel das "Routing"
eingeschaltet - In vielen Variationen und Coding-Styles war alles dabei.
Der Code sah auch sehr plausibel aus, aber das Skript hat immer das
"Modem" bevorzugt.
Chrome und "--bind address" klingt sehr einfach, das werde ich dann noch
versuchen. Oder hat jemand vielleicht noch eine Idee? Ich habe mal das
letzte Skript mit "KI-Unterstützung" an gehangen. (Dort sind die
Interface-Namen original ungekürzt)
Εrnst B. schrieb:> Die Lösung über die Routing-Tables (egal über welches Tool eingerichtet)> erlaubt über die Metric der default-Routes ein einigermaßen nahtloses> Fallback. Wenn das Hotspot Interface down ist, greift einfach die zweite> Route über 5G.
Ja, dort wollte ich auch ansetzen. Wäre toll, wenn es "out of the box"
mit Debian (ohne großartig weitere Pakete) funktionieren könnte...
Bisher habe ich nichts installieren müssen.
Tim S. schrieb:> Ja, dort wollte ich auch ansetzen. Wäre toll, wenn es "out of the box"> mit Debian (ohne großartig weitere Pakete) funktionieren könnte...
ich verwende networkd-systemd unter debian (wenn schon systemd, dann
"all the way"). Aber das wäre was zum Nachinstallieren.
Config wäre in etwa:
mobilfunk.network
1
[Match]
2
Name=enx663e217cf456
3
[Network]
4
DHCP=ipv4
5
RouteMetric=2000 # Setzt die Metric der Routen, die per DHCP kommen, hier eigentlich egal.
6
7
# Bei dem Part bin ich mir nicht ganz sicher, ob der so klappt:
8
# Mobilfunk-Gateway auch als default-Route in der 555er-Table anlegen
9
[Route]
10
Gateway=_dhcp4
11
Table=555
12
Metric=3000
hotspot.network
1
[Match]
2
Name=wlp0s20f3
3
4
[Network]
5
DHCP=ipv4
6
RouteMetric=1000 # Höher priorisiert
7
RouteTable=555 # DHCP-Gateway landet in dieser Table
8
9
[RoutingPolicyRule]
10
DestinationPort=443
11
Table=555
12
13
[RoutingPolicyRule]
14
DestinationPort=80
15
Table=555
Fertig.
Der Teil mit dem Eintragen vom Mobilfunk-Gateway in die 555er Tabelle
könnte auch unnötig sein. Systemd-Networkd sollte eigentlich die
RoutingPolicyRules deaktivieren, wenn wlp0 down geht.
Aber ich will hier wirklich niemanden zu systemd drängen. Du verlierst
die Option einfach per Klicki-Bunti-GUI das Netzwerk zu
verkonfigurieren, die dir der NetworkManager bringt.
Tim S. schrieb:> Bisher habe ich nichts installieren müssen.
Davon sprichst Du jetzt schon zum wiederholten Mal. Warum ist es für
Dich so wichtig, ob Du etwas installieren mußt?
Ein anderer Weg, den ich früher einmal für etwas ähnliches (AP der nur
bestimmte Ports/Protokolle zulässt) genutzt habe ist ein VPN.
Evtl. einmal probieren einen VPN Server aufzusetzen, der auf Port 443
lauscht, wenn der AP die Verbindung darüber zulässt kann man den
kompletten Datenverkehr durch den Tunnel schicken.
Jemand hier macht mir bestimmt einen VPN-Server auf Port 443 IPv4 auf,
und gibt mir die Adresse? TOR-Netzwerk funktioniert jedenfalls. Aber da
ich eh nur bis morgen an dem Standort bin, wo dieses Thema eine Rolle
spielt, ist es nicht mehr so wichtig... Solch ein funktionierendes
Skript könnte ich künftig dennoch gut gebrauchen. Dankeschön trotzdem
für die vielen Mühen! Liebe Grüße tsx
Tim S. schrieb:> Jemand hier macht mir bestimmt einen VPN-Server auf Port 443 IPv4 auf,> und gibt mir die Adresse?
Ich wüsste da was, aber um ehrlich zu sein, möchte ich hier nicht einmal
den Namen nennen -- sonst werde ich am Ende noch Mittäter oder
Mitstörer. Es hat etwas mit Weinflaschen zu tun, das Setup ist nicht
völlig trivial und bedarf eines frei konfigurierbaren SSH-Servers. :-)