frage zum markieren von packeten

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

frage zum markieren von packeten

Beitrag von knecht » 27.02.2004 11:06:24

Ich versuche ein traffic shaping
habe Debian Sarge Router mit Kernel 2.4.22 am laufen, und bin auf folgenden Link gestoßen:

http://www.debianforum.de/wiki/TrafficShaping


das ist auch schon sehr gut ich hab nur eine Frage zu Ip tables

Code: Alles auswählen

##############
# Traffic Control
#############

$ipt=/sbin/iptables

# TCP Acks bekommen die höchste Priorität
$ipt -t mangle -A FORWARD -p tcp -m length --length :64 -j MARK --set-mark 10

# SSH wird bevorzugt
$ipt -t mangle -A OUTPUT -p tcp --dport 22 -m tos --tos Minimize-Delay -j MARK --set-mark 20
$ipt -t mangle -A FORWARD -p tcp --dport 22 -m tos --tos Minimize-Delay -j MARK --set-mark 20
$ipt -t mangle -A INPUT -p tcp --dport 22 -m tos --tos Minimize-Delay -j MARK --set-mark 20

# HTTP und einige andere bevorzugen
$ipt -t mangle -A OUTPUT -p tcp -m multiport --dports 80,443,21 -j MARK --set-mark 20
$ipt -t mangle -A OUTPUT -p udp -m multiport --dports 53 -j MARK --set-mark 20
$ipt -t mangle -A FORWARD -p tcp -m multiport --dports 21 -j MARK --set-mark 20

# Emule bremsen
$ipt -t mangle -A FORWARD -o $IFACE_EXT -p tcp --dport 4500:4999 -j MARK --set-mark 40
$ipt -t mangle -A FORWARD -o $IFACE_EXT -p udp --sport 4500:4999 -j MARK --set-mark 40
beim oberen Beispiel (Link) ist die einteilung über iptables realisiert worden. Es wird aber nur nach Packetgröße und Port gefiltert.

Meine Frage ist jetzt, kann man auch über die IP eines clients eine einteilung machen. eben das z.b 192.168.0.8 immer in klasse 4 nur 5KBit erhält ?
und wenn ja, bitte wie genau, bin noch relativ unwissend

Hab im forum alles durchsucht aber nichts wirklich passendes gefunden

Danke
Sebastian

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 27.02.2004 13:07:27

Hallo,
Du kannst alles markieren mit iptables was du willst.
für die Absender Adresse z.B. -s IP
für die Empfänger Adresse z.B. -d IP

Code: Alles auswählen

iptables -t mangle -A FORWARD -p tcp -s 192.168.1.1 -m multiport --dports 21 -j MARK --set-mark 20
PS.: RTFM http://www.netfilter.org/documentation/ ... tion-howto

Ciao, Hendri
Zuletzt geändert von Hendri am 28.02.2004 02:20:35, insgesamt 1-mal geändert.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

noch ne frage

Beitrag von knecht » 27.02.2004 16:13:48

kann ich das so schreiben ?

Code: Alles auswählen

$ipt -t mangle -A FORWARD -p tcp -s 192.168.0.6  -j MARK --set-mark 20
$ipt -t mangle -A FORWARD -p udp -s 192.168.0.6 -j MARK --set-mark 20
$ipt -t mangle -A FORWARD -p tcp -s 192.168.0.3  -j MARK --set-mark 20
$ipt -t mangle -A FORWARD -p udp -s 192.168.0.3 -j MARK --set-mark 20
es sollen 192.168.0.3 und 192.168.0.6 generell bevorzugt werden (20)

und 192.168.0.40 soll gebremmst werden

Code: Alles auswählen

$ipt -t mangle -A FORWARD -p tcp -s 192.168.0.40  -j MARK --set-mark 40
$ipt -t mangle -A FORWARD -p udp -s 192.168.0.40  -j MARK --set-mark 40
Funktioniert das so ? (ich bekomme jedenfalls keine Fehlermeldung, bin mir aber auch nicht über den erfolg sicher)



und geht es beim folgenden auch ganze Bereiche von ports (z.B von 3000 bis 5000) anzugeben ?

Code: Alles auswählen

 # Ports auf dem Router vom Internet aus zug\xc3\xa4nglich machen
  SERVER_PORTS_TCP="80,2000,10000" # Falls dies nicht gew\xc3\xbcnscht ist, leere Hochkommas angeben
  SERVER_PORTS_UDP="123,3998" # Falls dies nicht gew\xc3\xbcnscht ist, leere Hochkommas angeben

  # Ports an einen Rechner im lokalen Netz weiterleiten
  DEST_HOST="" # Durch die IP-Adresse des Rechner ersetzen
  PORTS_TCP="" # Falls dies nicht gew\xc3\xbcnscht ist, leere Hochkommas angeben
  PORTS_UDP="" # Falls dies nicht gew\xc3\xbcnscht ist, leere Hochkommas angeben
Vielen Dank

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 28.02.2004 02:19:48

Ob du die Richtigen Pakete markierst kannst du am besten selbst heraus finden indem du dein shaper Script mit der Option

Code: Alles auswählen

status
startest bzw. wenn es dies nicht gibt
z.B. mit

Code: Alles auswählen

    tc -s class ls dev eth0 bzw. ppp0
wie in dem HowTo beschrieben!

Wenn dein Traffic richtig markiert ist und in die richtigen Klassen geleitet werden hast du dort unter sent deine Bytes stehen die zu dieser Klasse gehören bzw. die aktuelle rate des Traffic's.

PS.: wenn du deine Firewallregeln neu lädst und die Verbinung schon vorher bestanden hat, wird sie erst nach einem neutsart der Verbindung richtig in die neuen Klassen geleitet :!: :!: :!: :!:

Ciao, Hendri

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

OK, danke

Beitrag von knecht » 28.02.2004 12:48:14

Danke soweit, ich denke es geht jetzt (und bin gar durch die logig des skripts gestiegen) .

Trotzdem noch meine Frage mit den Portbereichen, ist nur die einzelauswahl möglich oder kann ich auch bereiche öffnen. mit zB 200:500 geht es nicht .. .

Sehr vielen Dank

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 29.02.2004 00:39:34

Ich glaube für dies mußt du POM in den Kernel Patchen. Dies findest du unter http://www.netfilter.org/downloads.html#pom-20031219
um multiport zu bekommen womit du dann z.B.

Code: Alles auswählen

iptables -t mangle -A OUTPUT -o eth2 -p udp -m multiport --sports 5000,5001,5002 -j MARK --set-mark 20

oder 

iptables -t mangle -A OUTPUT -o eth2 -p udp -m multiport --sports 5000:5002 -j MARK --set-mark 20
benutzen kannst....

Ciao, Hendri

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

wegen iptables und portbereichen

Beitrag von knecht » 02.03.2004 20:30:39

ich hab den Kernel noch nicht gepacht aber würde auch sowas funktionieren wie

Code: Alles auswählen

iptables -A INPUT -i ppp0 -p tcp -m multiport --dport 5000:5500 -j ACCEPT
also Bereiche markieren mit 5000:5500 für 5000 bis 5500 ?

bei meiner früheren Suse Firewall hatte ich so (über Yast) Portbereiche freigeben können

Danke
Sebastian

Benutzeravatar
Hendri
Beiträge: 586
Registriert: 23.08.2003 12:17:43
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Hendri » 02.03.2004 21:08:15

Yep, sollte klappen...

Antworten