• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

HTB und iptables

grossbulb

Newbie
Hallo erstmal,

um es gleich vorweg zu nehmen.....ich bin absoluter Linux Newbie :oops: .
Nun würde ich würde gerne mittels HTB und iptables das folgende Problem lösen:

2 Kunden teilen sich eine 2Mbit Leitung. Jeder der Kunden soll aber nur 1Mbit für seinen gesammten Verkehr zur Verfügung gestellt bekommen. Diese Bandbreite habe ich in dem Beispiel nochmal grob unterteilt. Die ipadressen, ports usw. sind alle nur Beispielhaft

Wäre echt nett, wenn ihr mir ein paar Tips geben könntet, da ich komplett in der Luft hänge :cry: .

Das Beispiel gilt nur für das Interface eth0. Ein Ähnliches würde ich natürlich noch für eth1 brauchen



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


#! /bin/sh
#variables
ext_dev_1=eth0
bw=1Mbps

#####root qdisc for eth0
tc qdisc add dev $ext_dev_1 root handle 1: htb
#####root class for customer 1 on eth0
tc class add dev $ext_dev_1 parent 1: classid 1:1 htb rate $bw ceil $bw prio
0

##### 3 classes for customer 1 on eth0
tc class add dev $ext_dev_1 parent 1:1 classid 1:2 htb rate 450kbps ceil $bw
prio 0
tc class add dev $ext_dev_1 parent 1:1 classid 1:3 htb rate 450kbps ceil $bw
prio 1
tc class add dev $ext_dev_1 parent 1:1 classid 1:4 htb rate 100kbps ceil $bw
prio 2


#####root class for customer 2 on eth0
tc class add dev $ext_dev_1 parent 1: classid 2:1 htb rate $bw ceil $bw prio
0

#####3 classes for customer 2 on eth0
tc class add dev $ext_dev_1 parent 1:1 classid 2:2 htb rate 450kbps ceil $bw
prio 0
tc class add dev $ext_dev_1 parent 1:1 classid 2:3 htb rate 450kbps ceil $bw
prio 1
tc class add dev $ext_dev_1 parent 1:1 classid 2:4 htb rate 100kbps ceil $bw
prio 2



#####Filters which directs packets marked with iptables in the right classes


#####Filters for customer 1 on eth0
tc filter add dev ext_dev_1 parent 1: prio 0 protocol ip handle 1 fw flowid
1:2
tc filter add dev ext_dev_1 parent 1: prio 1 protocol ip handle 2 fw flowid
1:3
tc filter add dev ext_dev_1 parent 1: prio 2 protocol ip handle 3 fw flowid
1:4

#####Filters for customer 2 on eth0
tc filter add dev ext_dev_1 parent 1: prio 0 protocol ip handle 4 fw flowid
2:2
tc filter add dev ext_dev_1 parent 1: prio 1 protocol ip handle 5 fw flowid
2:3
tc filter add dev ext_dev_1 parent 1: prio 1 protocol ip handle 6 fw flowid
2:4




############################################################################
iptables
###########################################################################

$ipt=/sbin/iptables

########### mark packets for customer 1 on eth0 ###########################

# mark packets with 1 which come from 192.168.0.1 and have a source port of 80

$ipt -t mangle -A FORWARD -s 192.168.0.1 -p tcp --sport 80 -j MARK
--set-mark 1

# mark packets with 2 which come from 192.168.0.1 and have a source port of 22

$ipt -t mangle -A FORWARD -s 192.168.0.1 -p tcp --sport 22 -j MARK
--set-mark 2

######## mark packets for customer 2 on eth0 ##############################

# mark packets with 4 which come from 192.168.1.99 and have a source port of 80

$ipt -t mangle -A FORWARD -s 192.168.1.99 -p tcp --sport 80 -j MARK
--set-mark 4


# mark packets with 5 which come from 192.168.1.99 and have a source port of 22

$ipt -t mangle -A FORWARD -s 192.168.1.99 -p tcp --sport 22 -j MARK
--set-mark 5


######## mark unmatched packets###########################################

#mark packets with 3 which come from 192.168.0.1

$ipt -t mangle -A FORWARD -s 192.168.0.1 -j MARK --set-mark 3

#mark packets with 6 which come from 192.168.1.99

$ipt -t mangle -A FORWARD -s 192.168.1.99 -j MARK --set-mark 6
 
Oben