Forum: PC-Programmierung Debian - Ein Netzwerk für Zielports verwenden


von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Lesenswert?

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
2
    link/ether 0e:22:c2:ac:c3:75 brd ff:ff:ff:ff:ff:ff
3
    inet 10.101.91.184/21 brd 10.101.95.255 scope global dynamic noprefixroute wlp0
4
       valid_lft 40571sec preferred_lft 40571sec
5
    inet6 fe80::71e4:a667:90b5:fce8/64 scope link noprefixroute 
6
       valid_lft forever preferred_lft forever
7
8
9
enx0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default
10
    link/ether 5e:d2:e6:0d:61:17 brd ff:ff:ff:ff:ff:ff
11
    inet 10.209.138.155/24 brd 10.209.138.255 scope global dynamic noprefixroute enx0
12
       valid_lft 2370sec preferred_lft 2370sec
13
    inet6 2a02:3038:278:f1e3::176/128 scope global dynamic noprefixroute 
14
       valid_lft 83650sec preferred_lft 83650sec
15
    inet6 2a02:3038:278:f1e3:f977:1795:c7d7:f7a1/64 scope global noprefixroute 
16
       valid_lft forever preferred_lft forever
17
    inet6 fe80::e406:295c:5e90:8b96/64 scope link noprefixroute 
18
       valid_lft forever preferred_lft forever

ip r (routes)
1
default via 10.209.138.103 dev enx0 proto dhcp src 10.209.138.155 metric 100 
2
default via 10.101.88.1 dev wlp0 proto dhcp src 10.101.91.184 metric 600 
3
10.101.88.0/21 dev wlp0 proto kernel scope link src 10.101.91.184 metric 600 
4
10.209.138.0/24 dev enx0 proto kernel scope link src 10.209.138.155 metric 100

Vielleicht kann mir hier ja jemand helfen. Liebe Grüße, tsx

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

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.

von Mario M. (thelonging)


Lesenswert?

Du brauchst "Policy Based Routing".

von Ralf D. (doeblitz)


Lesenswert?

Mario M. schrieb:
> Du brauchst "Policy Based Routing".

Auch das wird aber netfilter benötigen, um die verschiedenen 
Routingtabellen auszuwählen.

von Mario M. (thelonging)


Lesenswert?

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. 😂

von Sentürk (movray)


Lesenswert?

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>

von Mario M. (thelonging)


Lesenswert?


von Sentürk (movray)


Lesenswert?

stimmt "fwmark"  ,  ..leider kann ich meinen Beitrag nicht mehr 
editieren ...

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.