Bandbreite zum Surfen zur Außenstelle begrenzen

Forum zum Thema Firewall

Moderator: Lancom-Systems Moderatoren

Antworten
Benutzeravatar
Bernie137
Beiträge: 1698
Registriert: 17 Apr 2013, 21:50
Wohnort: zw. Chemnitz und Annaberg-Buchholz

Bandbreite zum Surfen zur Außenstelle begrenzen

Beitrag von Bernie137 »

Hallo zusammen,

ich dachte, ich wäre der Lancom Firewall mächtig, aber ich komme an dieser Stelle gerade nicht weiter bzw. sehe ich den Wald vor lauter Bäumen nicht mehr...

Involviert sind zwei Router Lancom 1781EF+, 10.12.0612RU11. Einer ist das zentrale VPN-Gateway, der andere die Filiale, beide miteinander verbunden über VPN. Die Clients der Filiale surfen über die Zentrale und genau dieser Traffic soll etwas eingedämmt werden, d.h. mit max 20Mbit. Konkret sollen die Clients der Außenstelle max. 20MBit/s Download aus dem Internet haben für http, https, ftp und demzufolge max. 20 Mbit Upload im Router der Zentrale in Richtung Filiale für http, https, ftp. Das Einrichten der "Bremse" im Router der Zentrale bereitet mir Schwierigkeiten, denn da sind nicht die einschlägigen Ports involviert und daher greift die Regel nie...
Vor dem Router der Zentrale hängt eine Watchguard die die Verbindung ins Internet bereit stellt. Der Router der Zentrale macht Policy-based-Routing zur Watchguard (RtgTag: 3).

Code: Alles auswählen

[IP-Router] 2019/02/05 14:25:37,786  Devicetime: 2019/02/05 14:25:34,447
IP-Router Rx (LAN-1, INTRANET, RtgTag: 3): 
DstIP: 10.7.1.118, SrcIP: 62.153.130.142, Len: 1400, DSCP: CS0/BE (0x00), ECT: 0, CE: 0
Prot.: TCP (6), DstPort: 62063, SrcPort: 47732, Flags: A
Seq: 3601916426, Ack: 4079750678, Win: 342, Len: 1360
Route: WAN Tx (SCHULE)
Das ist ein Beispiel, wenn der Client 10.7.1.118 das Tool LanConfig vom FTP lädt. Aufgenommen am Router der Zentrale.

Meine Firewall Regel schaut folgendermaßen aus:
Quelle: 10.7.1.0/24
Quellport: alle
Ziel: alles
Zielport: TCP 80, TCP 443, TCP 21
Aktion: Bei 20000 kBit global Verwerfen

Aber das funktioniert so nicht. Kann mir bitte jemand auf die Sprünge helfen?
Später soll auch der Upload ins Internet begrenzt werden auf 10 MBit/s.

Viele Grüße
Bernie
Zuletzt geändert von Bernie137 am 11 Feb 2019, 14:25, insgesamt 1-mal geändert.
Man lernt nie aus.
Benutzeravatar
Bernie137
Beiträge: 1698
Registriert: 17 Apr 2013, 21:50
Wohnort: zw. Chemnitz und Annaberg-Buchholz

Re: Bandbreite zum Surfen in der Außenstelle begrenzen

Beitrag von Bernie137 »

Hi,

ich habe mir damit beholfen, dass ich eine Begrenzung jeweils in den Außenstellen eingerichtet habe.
Hat das jemand schon mal am zentralen Router eingerichtet, wenn ja wie?

Gruß Bernie
Man lernt nie aus.
GrandDixence
Beiträge: 1047
Registriert: 19 Aug 2014, 22:41

Re: Bandbreite zum Surfen zur Außenstelle begrenzen

Beitrag von GrandDixence »

Bitte mal die unter:
fragen-zum-thema-vpn-f14/sitetosite-vpn ... tml#p91268
präsentierte QoS-Lösung testen (ganz nach unten scrollen). Aufgeschlüsselt:

Code: Alles auswählen

Begrenzen der maximalen Datenübertragungsrate (Senderichtung)
--------------------------------------------------------------------------------

%Lgdstw1024%d

%L	QoS (Limit)	Begrenzen der Datenübertragungsrate auf einen maximalen
			Wert

g	global		Gilt für alle Verbindungen und Netzwerkteilnehmer
			zusammen

d	Datenrate
s	pro Sekunde

t	Transmit	Senderichtung (WAN-Schnittstelle senden; von LAN zu WAN)

w	WAN		Richtungsangabe in Bezug zur WAN-Schnittstelle

1024	1024 KBit/s	=> 1 MBit/s

%d	Drop 		Datenpakete verwerfen, wenn die maximal zulässige
			Datenübertragungsrate überschritten wird.
			
			
			
Begrenzen der maximalen Datenübertragungsrate (Empfangsrichtung)
--------------------------------------------------------------------------------

%Lgdsrw1024%d

%L	QoS (Limit)	Begrenzen der Datenübertragungsrate auf einen maximalen
			Wert

g	global		Gilt für alle Verbindungen und Netzwerkteilnehmer
			zusammen

d	Datenrate
s	pro Sekunde

r	Receive		Empfangsrichtung (WAN-Schnittstelle empfangen; von WAN zu LAN)

w	WAN		Richtungsangabe in Bezug zur WAN-Schnittstelle

1024	1024 KBit/s	=> 1 MBit/s

%d	Drop 		Datenpakete verwerfen, wenn die maximal zulässige
			Datenübertragungsrate überschritten wird.
Siehe auch: LCOS-Referenzhandbuch => https://www.lancom-systems.de/docs/conf ... 33508.html

Eine Anleitung für LANconfig findet man unter:
https://support.lancom-systems.com/know ... d=32982682

Wichtig: Der Datenverkehr muss über den WAN-Port der Firewall laufen und eine entsprechende Firewallregel muss wirken! => Ob eine Firewallregel für die zu untersuchende TCP- oder UDP-Verbindung wirkt, ist unter:
LCOS-Menübaum/Status/IP-Router/Verbindungsliste
ersichtlich.

Achtung: Option "t" (Transmit) und Option "r" (Receive) funktionieren nur mit dem Parameter "%L"!

Wichtig: Die Datenübertragungraten der Netzwerkverbindung am WAN-Port muss im LANCOM-Router korrekt unter:
/Setup/Schnittstellen/DSL/Upstream-Rate
/Setup/Schnittstellen/DSL/Downstream-Rate
konfiguriert sein. Sowohl die Upstream-Rate wie auch die Downstream-Rate muss korrekt konfiguriert sein!
https://www.lancom-systems.de/docs/conf ... 48334.html

In den meisten Einsatzfällen muss die Datenübertragungsrate der WAN-Schnittstelle künstlich gedrosselt werden, damit QoS überhaupt wirken kann:

https://wiki.untangle.com/index.php/Bufferbloat

aktuelle-lancom-router-serie-f41/fragen ... 16835.html

fragen-zum-thema-firewall-f15/qos-funkt ... tml#p86139

Wichtig: Immer testen, ob QoS die gewünschte Wirkung zeigt!

Korrekte Funktionstüchtigkeit der Konfiguration unter:
LCOS-Menübaum/Status/IP-Router/QoS
kontrollieren.

Meiner Erfahrung nach wirken folgende QoS-Mechanismen in LCOS 10.34 effektiv:

a) Limitierung mit DROP im Downstream/Downlink (Download-Richtung) am WAN-Port für TCP-Verbindungen: %Lgdsrw1024%d
b) "Mindestbandbreite garantieren" im Upstream/Uplink (Upload-Richtung) mit "Forcierung" (Parameter "f") am WAN-Port: %Qfcds128
c) "Mindestbandbreite garantieren" wirkt im Downstream/Downlink (Download-Richtung) mit "Forcierung" (Parameter "f") zuverlässig, wenn der Internetanschluss relativ konstante Datenübertragungsraten gewährleistet (zum Beispiel FTTH-Glasfaser oder EuroDOCSIS (Internet über Fernsehkabelnetz) UND alle TCP-Verbindungen im Downstream gemäss a) limitiert werden.

Code: Alles auswählen

Minimale Datenübertragungsrate gewährleisten
--------------------------------------------------------------------------------

%Qfgds120

%Q	QoS (Qualität)	Gewährleisten einer minimalen Datenübertragungsrate

f	Forcieren 	Datenübertragungsrate zwingend reservieren (auch wenn  
                     	keine Datenpakete übertragen werden)

g	global		Gilt für alle Verbindungen und Netzwerkteilnehmer
			zusammen

d	Datenrate
s	pro Sekunde

120	120 KBit/s
Der Einsatz von QoS per "Mindestbandbreite garantieren" (Firewallregelparameter: "%Q") ist in meinen Augen nur sinnvoll für kleine, zeitkritische Datenströme, wie zum Beispiel VoIP-Telefonie (zum Bespiel: 128 kbit/s pro Telefon => %Qfcds128 ; Parameter "c" für "Connection") oder NTP.

Bei TCP-Verbindungen über den Internetanschluss mit "Begrenzen der maximalen Datenübertragungsrate (Empfangsrichtung)" ( %Lgdsrw1024%d ) reduziert die Firewall die Datenübertragungsraten der TCP-Verbindungen im Downstream um rund 50 %, sobald mindestens eine Verbindung mit "Minimale Datenübertragungsrate gewährleisten" ( %Qfgds120 ) aktiv ist. Im Beispiel erfolgt eine Reduktion der TCP-Verbindung im Downstream von 1 MBit/s auf 0.5 MBit/s. Diese massive Reduktion der Datenübertragungsrate von TCP-Verbindungen mit DROP könnte die Übertragung von zeitkritischen Datenströmen im Downstream (Download-Richtung) verbessern.

Zu QoS bitte auch beachten:
- QoS für MS Teams und MS Skype for Business:
viewtopic.php?f=41&t=18478

- Gute Performance Regel Nr. 10, 11, 21, 22, 29 für einen (Schweizer) EuroDOCSIS-Internetanschluss:
https://community.upc.ch/d/4397-diagnos ... e-probl/27


Bufferbloat
--------------------------------------------------------------------------------------------------------------
LCOS 10.32 fehlen geeignete Massnahmen gegen Bufferbloat:

https://en.wikipedia.org/wiki/Bufferbloat

https://www.bufferbloat.net/

https://www.youtube.com/watch?v=-D-cJNtKwuw

Als wirksamste Massnahme gegen Bufferbloat gilt fq_codel:

https://www.bufferbloat.net/projects/bl ... fferbloat/

https://en.wikipedia.org/wiki/CoDel

https://www.bufferbloat.net/projects/codel/wiki/

https://www.youtube.com/watch?v=y5KPryOHwk8

Generell empfiehlt sich der Einsatz einer eigenen Hardware-Firewall/Router auf Basis des Linux-Kernels. Siehe auch:

aktuelle-lancom-router-serie-f41/vdsl-u ... ml#p101750

Linux basierte, moderne Hardware-Firewall/Router unterstützen fq_codel. Aber Achtung: Nicht alle Netzwerkkarten unterstützen unter Linux fq_codel:

https://www.bufferbloat.net/projects/bl ... d_drivers/

fq_codel kann wie folgt unter Linux aktiviert werden:

Code: Alles auswählen

# more /etc/sysctl.conf |grep -i qdisc
net.core.default_qdisc = fq_codel

# ip addr show
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
Damit fq_codel wirksam ist, muss die Datenübertragungsrate des Internetanschlusses in beiden Richtungen (Downstream + Upstream) künstlich gedrosselt werden (siehe oben).

Durch die fehlenden Massnahmen gegen Bufferbloat im LANCOM-Router (mit LCOS-Betriebssystem) sollte man sich Gedanken machen, ob man für den Internetanschluss (WAN-Port) nicht QoS-Mechanismen in anderen Netzwerkkomponenten verwenden will.
fragen-zur-lancom-systems-routern-und-g ... ml#p106483

Moderne Netzwerkkomponenten wie EuroDOCSIS 3.1-Kabelmodeme verfügen über bessere QoS-Mechanismen als ein LANCOM-Router. Als Einstieg ins Thema "QoS" und für Internetanschlüsse über Fernsehkabelnetze (EuroDOCSIS) empfiehlt sich die Lektüre der "White paper" von CableLabs zu AQM und "Low Latency DOCSIS":

https://www.cablelabs.com/how-docsis-3- ... management

https://www.cablelabs.com/technologies/ ... ncy-docsis

https://community.cablelabs.com/wiki/pl ... 3956899065

CableLabs ist das Standardisierungsgremium von (Euro-)DOCSIS:
https://de.wikipedia.org/wiki/Data_Over ... cification
GrandDixence
Beiträge: 1047
Registriert: 19 Aug 2014, 22:41

Re: Bandbreite zum Surfen zur Außenstelle begrenzen

Beitrag von GrandDixence »

Um die fehlenden Massnahmen gegen Bufferbloat kompensieren zu können, kann ein Linux-Rechner als "Traffic Shaper" eingesetzt werden. Zum Thema "Traffic Shaping" siehe auch:
https://de.wikipedia.org/wiki/Traffic-Shaping

Zum Thema "fehlende Massnahmen gegen Bufferbloat" bei LANCOM-Routern mit dem Betriebssystem LCOS siehe auch:
fragen-zur-lancom-systems-routern-und-g ... ml#p106483

Diese Anleitung soll den Einsatz eines Mini-Computers Raspberry Pi 4 Modell B mit Ubuntu 20.04 LTS (focal) als "Traffic Shaper" aufzeigen.

Für das bessere Verständnis der Angaben in dieser Anleitung wird das vorgängige Lesen der "Gute Performance"-Regeln Nr. 21, 22 und 29 unter:
https://community.upc.ch/d/4397-diagnos ... e-probl/27
dringend empfohlen!

Für das "Traffic Shaping" wird der Gigabit-Ethernet-Netzwerkanschluss vom Raspberry Pi 4 Modell B eingesetzt. Dieser Gigabit-Ethernet-Netzwerkanschluss wird von der internen, integrierten Netzwerkkarte im Raspberry Pi 4 als eth0 bereit gestellt.

Der als "Traffic shaper" fungierende Linux-Rechner kann als einzige, eigene Hardware-Firewall-/Router des Internetanschlusses betrieben werden (Standalone-Betrieb). Im Standalone-Betrieb muss der Linux-Rechner an einem VLAN-fähigen Switch betrieben werden. Die Trennung von WAN- und LAN-Seite (Heimnetzwerk/Firmennetzwerk) erfolgt per VLAN. Als Einstieg in das Thema VLAN siehe auch:

https://www.heise.de/ct/artikel/VLAN-Vi ... 21621.html

fragen-zur-lancom-systems-routern-und-g ... tml#p90529

fragen-zum-thema-firewall-f15/portfreig ... tml#p99671

Alternativ kann der Linux-Rechner parallel zu einem LANCOM-Router an einem Internetanschluss betrieben werden (Parrallelbetrieb). Beim Parallelbetrieb muss auf dem LANCOM-Router eine oder mehrere LAN-Bridges korrekt konfiguriert werden.

- LCOS-Menübaum > Setup > LAN-Bridge > Isolierter-Modus:=nein
- LCOS-Menübaum > Setup > LAN-Bridge > Port-Daten

Die Trennung von WAN- und LAN-Seite (Heimnetzwerk/Firmennetzwerk) erfolgt beim Parallelbetrieb ebenfalls per VLAN. Beim Parallelbetrieb muss der LANCOM-Router (DHCP-Server) und alle LAN-seitigen Netzwerkkomponenten und Netzwerkteilnehmern so konfiguriert werden, dass als Gateway der Linux-Rechner (IP: 192.168.7.55) verwendet wird und somit jeglicher Datenverkehr von und zum Internet über den Linux-Rechner abgewickelt wird.

In dieser Anleitung wird folgendes Beispiel realisiert:

Code: Alles auswählen

eth0.14 	VLAN-ID 14 auf eth0	Internetanschluss (WAN)
eth0.7  	VLAN-ID  7 auf eth0	Anschluss eines Windows-PC im Heimnetzwerk/Firmennetzwerk (LAN)
Für die Grundlagen zu Hardware und Software des Linux-Rechners sowie dessen Grundkonfiguration siehe:
aktuelle-lancom-router-serie-f41/vdsl-u ... ml#p101750

fragen-zum-thema-vpn-f14/vpn-mit-16-kle ... ml#p106335

Diese Anleitung basiert auf diesen Grundlagen!

Die Netzwerkkarte des Linux-Rechners (eth0) für den VLAN-Betrieb konfigurieren. Siehe dazu auch:
https://wiki.archlinux.org/title/VLAN

# man systemd-networkd
# man systemd.network
# man systemd.netdev
# man systemd.link

/etc/systemd/network/eth0.network

Code: Alles auswählen

[Match]
Name=eth0

[Network]
IPv6PrivacyExtensions=yes
VLAN=eth0.14
VLAN=eth0.7
/etc/systemd/network/eth0.14.network

Code: Alles auswählen

[Match]
Name=eth0.14

[Network]
Address=192.168.14.55/24
IPv6PrivacyExtensions=yes

[Route]
Gateway=192.168.14.1
Table=14

[Route]
Destination=192.168.14.0/24
PreferredSource=192.168.14.55
Scope=link
Table=14
Protocol=kernel

[RoutingPolicyRule]
From=192.168.14.0/24
Table=14
/etc/systemd/network/eth0.7.network

Code: Alles auswählen

[Match]
Name=eth0.7

[Network]
Address=192.168.7.55/24
IPv6PrivacyExtensions=yes

[Route]
Destination=192.168.7.0/24
PreferredSource=192.168.7.55
Scope=link
Table=14
Protocol=kernel

[RoutingPolicyRule]
From=192.168.7.0/24
Table=14
/etc/systemd/network/eth0.14.netdev

Code: Alles auswählen

[NetDev]
Name=eth0.14
Kind=vlan

[VLAN]
Id=14
/etc/systemd/network/eth0.7.netdev

Code: Alles auswählen

[NetDev]
Name=eth0.7
Kind=vlan

[VLAN]
Id=7
Neue Netzwerkeinstellungen übernehmen:

Code: Alles auswählen

systemctl restart systemd-networkd.service
systemctl status systemd-networkd.service
Danach die Einträge in den Routingtabellen kontrollieren. Es wird im Beispiel "Policy Routing" eingesetzt. Siehe dazu auch:
https://blog.scottlowe.org/2013/05/29/a ... y-routing/
# man ip route
# man ip rule
https://de.wikipedia.org/wiki/Routingtabelle

Code: Alles auswählen

# ip rule list
0:	from all lookup local
0:	from 192.168.7.0/24 lookup 14
0:	from 192.168.14.0/24 lookup 14
32766:	from all lookup main
32767:	from all lookup default

Code: Alles auswählen

# ip route list
192.168.7.0/24 dev eth0.7 proto kernel scope link src 192.168.7.55 
192.168.14.0/24 dev eth0.14 proto kernel scope link src 192.168.14.55

Code: Alles auswählen

# ip route list table 14
default via 192.168.14.1 dev eth0.14 proto static 
192.168.7.0/24 dev eth0.7 proto kernel scope link src 192.168.7.55 
192.168.14.0/24 dev eth0.14 proto kernel scope link src 192.168.14.55
Wer kein "Policy Routing" benötigt, kann die Konfiguration der Routingtabellen entsprechend anpassen respektive vereinfachen.

Sysctl für den Betrieb als Router konfigurieren. Siehe dazu auch:
https://www.kernel.org/doc/html/latest/ ... ysctl.html

https://en.wikipedia.org/wiki/Sysctl

Ausgangslage und Grundlage für die Sysctl-Konfiguration sind die Firewall-relevanten Sysctl-Konfigurationen unter:
https://forums.suse.com/discussion/comment/59615

/etc/sysctl.conf

Code: Alles auswählen

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1

net.ipv4.tcp_syncookies=0

net.ipv6.conf.all.forwarding=0

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0

net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv6.conf.lo.accept_redirects = 0
net.ipv6.conf.eth0.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.lo.secure_redirects = 0

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0

net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ethernet-Sendewarteschlange CAKE aktivieren
net.core.default_qdisc = cake

# Unterstützung von ECN aktivieren
net.ipv4.tcp_ecn = 1

# ICMP Echo (Ping) deaktivieren
net.ipv4.icmp_echo_ignore_all = 1 
net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv6.icmp.echo_ignore_all = 1 
net.ipv6.icmp.echo_ignore_anycast = 1 
net.ipv6.icmp.echo_ignore_multicast = 1 
Vor der dauerhaften Einschaltung der Unterstützung von ECN sollte kontrolliert werden, ob der ISP und somit der Internetanschluss auch einwandfrei ECN unterstützt. Siehe dazu:
https://community.upc.ch/d/15398-ecn-fi ... pc-sunrise

Für die Übernahme der neuen Sysctl-Konfiguration den Linux-Rechner neustarten:

Code: Alles auswählen

# reboot
Die AQM/SQM-Konfiguration sollte über Systemd erfolgen. Siehe dazu:

# man systemd.network

Nicht alle AQM/SQM-Konfigurationen können über Systemd erfolgen. Hier eine entsprechende Lösung für die individuelle AQM/SQM-Konfiguration. Siehe dazu auch:
https://wiki.archlinux.org/title/Systemd
# man systemd.unit
# man systemd.special

/etc/systemd/netzwerkStart.service

Code: Alles auswählen

[Unit]
Description=netzwerkStart
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/netzwerkStart.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
/usr/local/sbin/netzwerkStart.sh

Code: Alles auswählen

#!/bin/bash
########################################################
# /usr/local/sbin/netzwerkStart.sh                     #
#                                                      #
# AQM/SQM konfigurieren                                #
#                                                      #
########################################################

echo "AQM/SQM konfigurieren..."

# AQM/SQM konfigurieren (CAKE)

# eth0 ohne Limitierung im Upstream 
echo "eth0 ohne Limitierung im Upstream..."
/usr/sbin/tc qdisc replace dev eth0 root cake diffserv4 ethernet

# eth0.14 mit 10.5 MBit/s im Upstream (VLAN-ID: 14)
echo "eth0.14 mit 10.5 MBit/s im Upstream (VLAN-ID: 14)..."
/usr/sbin/tc qdisc replace dev eth0.14 root cake diffserv4 ethernet bandwidth 10.5Mbit

# eth0.14 mit 80 MBit/s im Downstream (VLAN-ID: 14)
echo "eth0.14 mit 80 MBit/s im Downstream (VLAN-ID: 14)..."
/usr/sbin/ip link add name ifb14eth0 type ifb
/usr/sbin/tc qdisc del dev eth0.14 ingress
/usr/sbin/tc qdisc add dev eth0.14 handle ffff: ingress
/usr/sbin/tc qdisc del dev ifb14eth0 root
/usr/sbin/tc qdisc add dev ifb14eth0 root cake diffserv4 ethernet bandwidth 80Mbit
/usr/sbin/ip link set ifb14eth0 up txqueuelen 1000
/usr/sbin/tc filter add dev eth0.14 parent ffff: matchall action ctinfo dscp 0x0000003f pipe mirred egress redirect dev ifb14eth0

# eth0.7 ohne Limitierung im Upstream (VLAN-ID: 7)
echo "eth0.7 ohne Limitierung im Upstream (VLAN-ID: 7)..."
/usr/sbin/tc qdisc replace dev eth0.7 root cake diffserv4 ethernet

# Überflüssige IFB-Links löschen
echo "Überflüssige IFB-Links löschen..."
/usr/sbin/ip link del ifb0
/usr/sbin/ip link del ifb1
Die Anwendung der Option "diffserv4" ist empfehlenswert. Siehe dazu auch:

# man tc-cake
https://www.bufferbloat.net/projects/codel/wiki/Cake/

Per "tc action ctinfo" werden alle über CONNMARK-Firewallregeln bekannten DSCP-Markierungen an den über den WAN-Port (eth0.14) empfangenen IP-Datenpakete angebracht. Für mehr Informationen zu diesem Schritt siehe:

# man tc-ctinfo
# man tc

Schliesslich werden alle über den WAN-Port (eth0.14) empfangene Datenpakete per "tc action mirred" gespiegelt und durch ifb14eth0 an dessen Traffic Shaper (CAKE) gesendet. Für mehr Informationen zu diesem Schritt siehe:

# man tc-mirred
# man tc-matchall

Die korrekte Funktion der oben genannten "tc actions" kann mit dem Befehl:

# tc -s filter show dev eth0.14 ingress

kontrolliert werden.

Neuer Systemd-Dienst aktivieren:

Code: Alles auswählen

# chmod u=rwx,g=,o= /usr/local/sbin/netzwerkStart.sh
# chmod u=rw,g=r,o=r /etc/systemd/system/netzwerkStart.service
# systemctl enable netzwerkStart.service
# systemctl start netzwerkStart.service
# systemctl status netzwerkStart.service
Die einwandfreie Funktion vom AQM/SQM (CAKE) regelmässig mit dem Befehl:

Code: Alles auswählen

# tc -s qdisc show dev eth0.14
# tc -s qdisc show dev ifb14eth0
überprüfen. Wenn die Sendewarteschlange zu lang wird, werden vom AQM/SQM (CAKE) einzelne IP-Datenpakete entweder verworfen (DROP) oder bei TCP-Verbindungen mit ECN-Unterstützung mit “Congestion experienced” (CE) markiert. Dieses Verhalten ist an den Zeilen "drops" (DROP) respektive "marks" (CE -> ECN) ersichtlich.

Die Zeilen pk_delay, av_delay und sp_delay geben Auskunft über die gemessene Verzögerungszeit beim Pakettransport durch Sendewarteschlangenstau. Pk_delay entspricht der grössten gemessenen Verzögerungszeit, av_delay der durchschnittlichen Verzögerungszeit und sp_delay der kleinsten gemessenen Verzögerungszeit.

Firewall-Regeln für den Router-Betrieb umkonfigurieren. Als Ausgangslage und Grundlage für die Firewallkonfiguration respektive Firewall-Regeln gelten die Angaben unter:
https://forums.rancher.com/t/having-net ... sues/34807

Siehe dazu auch:

# man iptables-extensions

https://home.regit.org/netfilter-en/netfilter-connmark/

https://commons.wikimedia.org/wiki/File ... t-flow.svg

Kurz zusammengefasst:

/usr/local/sbin/firewallStart.sh

Code: Alles auswählen

#!/bin/bash
########################################################
# /usr/local/sbin/firewallStart.sh                     #
#                                                      #
# Firewall starten                                     #
#                                                      #
########################################################

echo "Alle vorhandenen Firewall-Regeln löschen..."

# Alle vorhandenen Firewall-Regeln löschen (IPv4)
/usr/sbin/iptables -w 20 -t filter -F
/usr/sbin/iptables -w 20 -t filter -X
/usr/sbin/iptables -w 20 -t nat -F
/usr/sbin/iptables -w 20 -t nat -X
/usr/sbin/iptables -w 20 -t mangle -F
/usr/sbin/iptables -w 20 -t mangle -X
/usr/sbin/iptables -w 20 -t raw -F
/usr/sbin/iptables -w 20 -t raw -X
/usr/sbin/iptables -w 20 -t security -F
/usr/sbin/iptables -w 20 -t security -X

# Alle vorhandenen Firewall-Regeln löschen (IPv6)
/usr/sbin/ip6tables -w 20 -t filter -F
/usr/sbin/ip6tables -w 20 -t filter -X
/usr/sbin/ip6tables -w 20 -t nat -F
/usr/sbin/ip6tables -w 20 -t nat -X
/usr/sbin/ip6tables -w 20 -t mangle -F
/usr/sbin/ip6tables -w 20 -t mangle -X
/usr/sbin/ip6tables -w 20 -t raw -F
/usr/sbin/ip6tables -w 20 -t raw -X
/usr/sbin/ip6tables -w 20 -t security -F
/usr/sbin/ip6tables -w 20 -t security -X

# Policies der Default-Chains von IPv4 anpassen
/usr/sbin/iptables -w 20 -t filter --policy INPUT DROP
/usr/sbin/iptables -w 20 -t filter --policy OUTPUT DROP
/usr/sbin/iptables -w 20 -t filter --policy FORWARD DROP

# Policies der Default-Chains von IPv6 anpassen
/usr/sbin/ip6tables -w 20 -t filter --policy INPUT DROP
/usr/sbin/ip6tables -w 20 -t filter --policy OUTPUT DROP
/usr/sbin/ip6tables -w 20 -t filter --policy FORWARD DROP

echo "Strikte Paketkontrollen in der SPI-Firewall aktivieren..."

# Strikte Paketkontrollen in der SPI-Firewall aktivieren
/usr/sbin/sysctl -w net.netfilter.nf_conntrack_tcp_loose=0

echo "Neue Firewall-Regeln einlesen und setzen..."

# Firewall-Regeln einlesen und setzen (IPv4)
/usr/sbin/iptables-restore -w 20 /etc/firewall/firewall_rules_ipv4.txt

# Firewall-Regeln einlesen und setzen (IPv6)
/usr/sbin/ip6tables-restore -w 20 /etc/firewall/firewall_rules_ipv6.txt

echo "Routingtabelle anpassen..."

# Routingtabelle anpassen
/usr/sbin/ip route add unreachable 10.0.0.0/8 
/usr/sbin/ip route add unreachable 172.16.0.0/12 
/usr/sbin/ip route add unreachable 192.168.0.0/16
/usr/sbin/ip route add unreachable 169.254.0.0/16 	

echo "Forwarding für IPv4 aktivieren..."

# Forwarding für IPv4 aktivieren
/usr/sbin/sysctl -w net.ipv4.ip_forward=1
/etc/systemd/system/firewallStart.service

Code: Alles auswählen

[Unit]
Description=firewallStart
Before=network-pre.target
Wants=network-pre.target
Conflicts=iptables.service ip6tables.service firewalld.service ufw.service

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/firewallStart.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
/etc/firewall/firewall_rules_ipv4.txt

Code: Alles auswählen

#-------------------------------------------------------------------------------
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.7.0/24 -o eth0.14 -j MASQUERADE --random
COMMIT
#-------------------------------------------------------------------------------
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A FORWARD -i eth0.7 -p udp -m udp --dport 3479 -j DSCP --set-dscp-class EF
-A FORWARD -i eth0.7 -p udp -m udp --dport 3480 -j DSCP --set-dscp-class CS5
-A POSTROUTING -o eth0.14 -j CONNMARK --restore-mark
-A POSTROUTING -o eth0.14 -m connmark ! --mark 0 -j ACCEPT
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS1 -j CONNMARK --set-mark 8
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS2 -j CONNMARK --set-mark 16
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS3 -j CONNMARK --set-mark 24
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS4 -j CONNMARK --set-mark 32
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS5 -j CONNMARK --set-mark 40
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS6 -j CONNMARK --set-mark 40
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS7 -j CONNMARK --set-mark 40
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF11 -j CONNMARK --set-mark 10
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF12 -j CONNMARK --set-mark 12
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF13 -j CONNMARK --set-mark 14
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF21 -j CONNMARK --set-mark 18
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF22 -j CONNMARK --set-mark 20
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF23 -j CONNMARK --set-mark 22
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF31 -j CONNMARK --set-mark 26
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF32 -j CONNMARK --set-mark 28
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF33 -j CONNMARK --set-mark 30
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF41 -j CONNMARK --set-mark 34
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF42 -j CONNMARK --set-mark 36
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF43 -j CONNMARK --set-mark 38
-A POSTROUTING -o eth0.14 -m dscp --dscp 44 -j CONNMARK --set-mark 44
-A POSTROUTING -o eth0.14 -m dscp --dscp-class EF -j CONNMARK --set-mark 46
COMMIT
#-------------------------------------------------------------------------------
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -m rpfilter --invert -j DROP
COMMIT
#-------------------------------------------------------------------------------
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
#-------------------------------------------------------------------------------
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -p udp -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -d 192.168.13.55 -i eth0.7 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -d 192.168.13.55 -i eth0.7 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -d 192.168.13.55 -i eth0.7 -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p udp -m udp --dport 3479 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p udp -m udp --dport 3480 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i eth0.7 -s 192.168.7.0/24 -p udp -m udp --dport 3481 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack --ctstate INVALID -j DROP
-A OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -p udp -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o eth0.14 -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
#-------------------------------------------------------------------------------
Neuer Systemd-Dienst aktivieren:

!!! Vor der Aktivierung des neuen Systemd-Dienstes müssen alle ähnlich arbeitenden Firewalldienste wie Firewalld und UFW deaktiviert oder noch besser deinstalliert werden !!!

Code: Alles auswählen

# chmod u=rwx,g=,o= /usr/local/sbin/firewallStart.sh
# chmod u=rw,g=r,o=r /etc/firewall/firewall_rules_ipv4.txt 
# chmod u=rw,g=r,o=r /etc/systemd/system/firewallStart.service
# systemctl enable firewallStart.service
# systemctl start firewallStart.service
# systemctl status firewallStart.service
# journalctl -b -u firewallStart.service
Alle bevorzugt zu behandelnden Datenpakete sollten auf Layer 3 (IP) mit Diffserv (DSCP) entsprechend markiert werden. Die Diffserv-Markierung (DSCP) hat grundsätzlich durch die Anwendung zu erfolgen (zum Beispiel: MS Teams).

Als Notlösung kann die Markierung auch vom Linux-Rechner auf allen erforderlichen Datenpakete in Senderichtung erfolgen (WAN+LAN), welche vorgängig über keine DSCP-Markierung verfügten.
https://linuxreviews.org/Type_of_Servic ... SCP_Values

Die im abgebildeten Beispiel vorgesehene Markierung von IP-Datenpakete mit Serverport (Destionation port -> --dport) UDP 3479 und UDP 3480 ist nicht zwingend erforderlich, da diese DSCP-Markierung bereits auf dem Windows-Rechner durch die Anwendung MS Teams erfolgt. Diese DSCP-Markierung dient nur zu Anschauungs- und Lernzwecke!

Neue Firewallregeln übernehmen:

Code: Alles auswählen

# systemctl restart firewallStart.service
# systemctl status firewallStart.service
# iptables -t nat -L -n -v
# iptables -t mangle -L -n -v
# iptables -t filter -L -n -v|more
Mit Wireshark kontrollieren, ob die Datenpakete vom Linux-Rechner mit der korrekten Diffserv (DSCP)-Markierung versehen wurden.

fragen-zur-lancom-systems-routern-und-g ... tml#p98835

https://community.upc.ch/d/8569-gigacon ... ssetzer/25

viewtopic.php?f=14&t=17510&p=99340#p99340

https://lancom-forum.de/alles-zum-lanco ... tml#p99943
Zuletzt geändert von GrandDixence am 16 Jul 2022, 00:03, insgesamt 22-mal geändert.
GrandDixence
Beiträge: 1047
Registriert: 19 Aug 2014, 22:41

Re: Bandbreite zum Surfen zur Außenstelle begrenzen

Beitrag von GrandDixence »

Auf Layer 2 erfolgt die entsprechende Markierung für die bevorzugte Behandlung in Ethernet-Netzwerken per VLAN-PCP (IEEE 802.1Q -> Priority code point (PCP) -> IEEE 802.1p). Beim Einsatz von VLAN und 802.1p-fähigen Switches ist der Einsatz von VLAN-PCP sinnvoll. Beim Einsatz von VLAN und einem WMM/WME-fähigen Wireless Access Point (802.11e) ist der Einsatz von VLAN-PCP ebenfalls sinnvoll (siehe unten).

https://de.wikipedia.org/wiki/Virtual_L ... ea_Network

https://en.wikipedia.org/wiki/IEEE_802.1Q

https://de.wikipedia.org/wiki/IEEE_802.1p

https://thenetworkstack.com/hp-switch-p ... qos-guide/

VLAN-PCP wird für "Industrial Ethernet" mit Standard-Ethernet-Hardwarekomponenten, wie Profinet RT (in der Abbildung “Profinet V2” genannt), eingesetzt:

Bild

https://community.upc.ch/d/8427-wird-up ... nbieter/25

https://www.felser.ch/papers/2019-WP-TS ... ements.pdf

Für den Einsatz von VLAN-PCP auf Basis von Diffserv (DSCP) ist im LANCOM-Router mit LCOS-Betriebssystem folgende Konfiguration erforderlich:

LCOS-Menübaum > Setup > IP-Router > Routing-Methode > L3-L2-Tagging:=Ja

LCOS-Menübaum > Setup > LAN-Bridge > Prioritaets-Zuordnung

Code: Alles auswählen

Name    | DSCP-Wert | Prioritaet
--------+-----------+-----------------------
DEFAULT        0       Best-Effort
CS1	       8       Background
CS2	      16       Excellent-Effort
CS3	      24       Controlled-Latency
CS4	      32       Video
CS5	      40       Voice
CS6	      48       Network-Control
AF11 	      10       Background
AF12	      12       Background
AF13	      14       Background
AF21	      18       Excellent-Effort
AF22	      20       Excellent-Effort
AF23	      22       Excellent-Effort
AF31	      26       Controlled-Latency
AF32	      28       Controlled-Latency
AF33	      30       Controlled-Latency
AF41	      34       Video
AF42          36       Video
AF43	      38       Video
VA	      44       Voice
EF	      46       Voice
Beim Einsatz von VLAN-PCP auf LANCOM-Routern sind die Hinweise unter:
lancom-wireless-aktuelle-accesspoints-f ... t3510.html
zu beachten.

Für den Einsatz von VLAN-PCP auf einem Linux-Rechner mit Ubuntu 20.04 LTS (focal) sind folgende zusätzliche Konfigurationsschritte erforderlich. Diese Konfigurationsschritte sind unter:

https://hirschmann-support.belden.com/e ... -vlan-prio
# man ip link
# man iptables-extensions

ausführlich beschrieben.

/usr/local/sbin/netzwerkStart.sh (siehe oben)

Code: Alles auswählen

# VLAN-PCP (802.1p) konfigurieren
echo "VLAN-PCP (802.1p) konfigurieren..."
/usr/sbin/ip link set eth0.14 type vlan egress-qos-map 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
/usr/sbin/ip link set eth0.14 type vlan ingress-qos-map 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
/usr/sbin/ip link set eth0.7 type vlan egress-qos-map 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
/usr/sbin/ip link set eth0.7 type vlan ingress-qos-map 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
Warnung: Die Anpassung der "ingress-qos-map" sollte weggelassen werden, wenn der Linux-Rechner über diese Netzwerkschnittstelle als Router fungiert. Siehe # man tc-cake für eine Begründung. Die Anpassung der "ingress-qos-map" ist nur empfehlenswert, wenn der Linux-Rechner über diese Netzwerkschnittstelle als Bridge fungiert. Zum Beispiel: Wireless Access Point.

/etc/firewall/firewall_rules_ipv4.txt (siehe oben)

Code: Alles auswählen

#-------------------------------------------------------------------------------
*mangle
..... (weitere Zeilen -> siehe oben) ......
-A FORWARD -i eth0.7 -p udp -m udp --dport 3480 -j DSCP --set-dscp-class CS5
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS0 -j CLASSIFY --set-class 0:0
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS1 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS2 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS3 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS4 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS5 -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS6 -j CLASSIFY --set-class 0:6
-A POSTROUTING -o eth0.7 -m dscp --dscp-class CS7 -j CLASSIFY --set-class 0:7
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF11 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF12 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF13 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF21 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF22 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF23 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF31 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF32 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF33 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF41 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF42 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.7 -m dscp --dscp-class AF43 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.7 -m dscp --dscp 44 -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.7 -m dscp --dscp-class EF -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS0 -j CLASSIFY --set-class 0:0
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS1 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS2 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS3 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS4 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS5 -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS6 -j CLASSIFY --set-class 0:6
-A POSTROUTING -o eth0.14 -m dscp --dscp-class CS7 -j CLASSIFY --set-class 0:7
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF11 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF12 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF13 -j CLASSIFY --set-class 0:1
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF21 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF22 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF23 -j CLASSIFY --set-class 0:2
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF31 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF32 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF33 -j CLASSIFY --set-class 0:3
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF41 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF42 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.14 -m dscp --dscp-class AF43 -j CLASSIFY --set-class 0:4
-A POSTROUTING -o eth0.14 -m dscp --dscp 44 -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.14 -m dscp --dscp-class EF -j CLASSIFY --set-class 0:5
-A POSTROUTING -o eth0.14 -j CONNMARK --restore-mark
-A POSTROUTING -o eth0.14 -m connmark ! --mark 0 -j ACCEPT
..... (weitere Zeilen -> siehe oben) ......
COMMIT
#-------------------------------------------------------------------------------
Wichtig: Die Zeilen mit den CLASSIFY-Firewallregeln müssen oberhalb der Zeile "-m connmark ! --mark 0 -j ACCEPT" stehen!

Nach einem Rechnerneustart (reboot) sollte die Übernahme der VLAN-Prioritäten (priority mappings) kontrolliert werden:

Code: Alles auswählen

# cat /proc/net/vlan/eth0.7
# cat /proc/net/vlan/eth0.14
Im WLAN erfolgt die bevorzugte Behandlung von Datenpakete per WMM/WME nach dem Standard IEEE 802.11e:
https://de.wikipedia.org/wiki/IEEE_802.11e

Bei Wireless Acces Points vom Hersteller LANCOM mit LCOS-Betriebssystem wird die bevorzugte Behandlung von Datenpakete im WLAN wie folgt aktiviert:

LCOS-Menübaum > Setup > Schnittstellen > WLAN > Leistung > QoS:=Ja
LCOS-Menübaum > Setup > WLAN-Management > AP-Konfiguration > Radioprofile > QoS:=Ja

Beim Einsatz von 802.11e auf LANCOM-Wireless Access Points sind die Hinweise unter:
lancom-wireless-aktuelle-accesspoints-f ... t3510.html
zu beachten.

Für den Einsatz von WMM/WME nach dem Standard IEEE 802.11e auf einem Wireless Access Point, welcher mit einem Linux-Kernel betrieben wird, ist eine entsprechende hostapd-Konfiguration über die Konfigurationsdatei hostapd.conf erforderlich.
https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
Antworten