PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Imq



nefti
10.05.06, 15:17
Hallo Leute!

ich hab ein Problem mit IMQ, bzw. dem tc, das drauf gebunden ist.
Ich möchte die Bandbreite regeln, mit der eine bestimmte IP downloaden kann. Das TC-Script funktioniert, wenn ich es auf eth0 binde, jedoch nicht, wenn es auf dem IMQ-Interface läuft.

Die Idee ist die, dass sich sämtliche Internet-User per VPN am Server einwählen und man so individuell die Bandbreite vergeben kann.
Anbei kopier ich mal einfach das Firewall-/TC-script rein:
Code:



#!/bin/sh

ip link set imq0 up

#echo 1 > /proc/sys/net/ipv4/ip_dynaddr
#echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
#echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

echo Deleting qdisc...
tc qdisc del dev imq0 root

echo "flush iptables"
/usr/sbin/iptables -F -t mangle
/usr/sbin/iptables -F -t nat
/usr/sbin/iptables -F -t filter
/usr/sbin/iptables -X
/usr/sbin/iptables -P OUTPUT DROP
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -A INPUT -j ACCEPT
/usr/sbin/iptables -A OUTPUT -j ACCEPT

#
# Loopback
#
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT

#
# Output
#
/usr/sbin/iptables -A OUTPUT -s 172.16.2.1 -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A OUTPUT -s XXX.XXX.XXX.XXX -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o ppp+ -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o imq0 -m state --state NEW -j ACCEPT

##########
# eth (Allow acces for users)
##########
/usr/sbin/iptables -A INPUT -i eth0 -s 172.16.3.145 -j ACCEPT
/usr/sbin/iptables -A INPUT -i eth0 -s 172.16.2.146 -j ACCEPT

echo 'add some tc'
############ Bound to internal ############
tc qdisc add dev imq0 root handle 1: cbq bandwidth 1Mbit avpkt 1000 mpu 64

tc class add dev imq0 parent 1:0 classid 1:1 cbq rate 128kbit weight 12kbit allot 1514 prio 1 avpkt 1000 bounded
tc filter add dev imq0 parent 1:0 protocol ip handle 1 fw flowid 1:1

iptables -t mangle -N MITTE
iptables -t mangle -I PREROUTING -i ppp+ -j MITTE
iptables -t mangle -A MITTE -d 172.16.3.145 -j MARK --set-mark 1
iptables -t mangle -A MITTE -s 172.16.3.145 -j MARK --set-mark 1

echo '2imq'
iptables -t mangle -A MITTE -j IMQ

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source XXX.XXX.XXX.XXX
iptables -A FORWARD -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward


Noch ein paar Zusatzinfos zum Server:
Es läuft ein SuSE 9.2 mit selbst kompiliertem 2.6.16.2-er Kernel drauf. Die iptables -Version ist 1.3.5.
Die wichtigsten Schnittstellen: eth0 (intern), eth1 (extern), ppp+ (VPN-Verbindungen der Clients), imq (da wo tc drauf läuft).

Auf imq0 seh ich zwar den traffic-counter raufzählen, aber mehr passiert da auch net

Ich hoffe, dass sich jmd auskennt, denn ich tus leider net so wirklich.

lg

Nefti