[HACK] QoS en ipcop
Sergio Pozo Hidalgo
blitter_es at yahoo.es
Mon Sep 1 00:09:29 CEST 2003
hubble wrote:
>
> Hol at s,
>
> Solo saber si alguien tiene alguna experiencia en meterle QoS al
> ipcop firewall y poder saber por donde tirar con un poco mas de
> seguridad.
Buenas,
Uso habitualmente IPCop aunque algún problema de funcionamiento he
tenido con él (a parte de las restricciones evidentes de funcionamiento
y configuración si no te quieres pelear con "su" sistema).
Efectivamente se puede añadir QoS a IPCop como otras muchas cosas, pero
ésta es de las más fáciles. Existe un paquete (no recuerdo ahora mismo
el nombre, si alguien se acuerda que lo diga por favor) habitual en
Linux q permite hacer QoS, y ese mismo paquete viene por defecto en
IPCop. A modo de ejemplo, te adjunto un shellscript que puede funcionar
con IPCop (no lo he probado aún, pero tengo pensado hacerlo en cuanto
termine los exámenes de Septiembre).
En lo referente al tema de la seguridad, tampoco he estudiado a fondo el
sistema, pero por ejemplo las restricciones de configuración del
firewall son muchas. Si quieres hacer algo más, hay tocar en los
ficheros de ipcop. Lo mismo ocurre con las actualizaciones de paquetes
(pongo el ejemplo de las firmas de Snort), que es un infierno hacerlas.
IPCop es un juguete para cuando no se tiene tiempo, y suele funcionar
bien. El problema empieza en cuanto se quiere hacer algo en serio con él
y no está en su interfaz de configuación.
Un saludo.
-----------------------------------
#!/bin/bash
# The Ultimate Setup For Your Internet Connection At Home
#
#
# Set the following values to somewhat less than your actual download
# and uplink speed. In kilobits
DOWNLINK=230
UPLINK=115
DEV=eth0
# clean existing down- and uplink qdiscs, hide errors
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
###### uplink
# install root CBQ
tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit
# shape everything at $UPLINK speed - this prevents huge queues in your
# DSL modem which destroy latency:
# main class
tc class add dev $DEV parent 1: classid 1:1 cbq rate ${UPLINK}kbit \
allot 1500 prio 5 bounded isolated
# high prio class 1:10:
tc class add dev $DEV parent 1:1 classid 1:10 cbq rate ${UPLINK}kbit \
allot 1600 prio 1 avpkt 1000
# bulk and default class 1:20 - gets slightly less traffic,
# and a lower priority:
tc class add dev $DEV parent 1:1 classid 1:20 cbq rate $[9*$UPLINK/10]kbit \
allot 1600 prio 2 avpkt 1000
# both get Stochastic Fairness:
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
# start filters
# TOS Minimum Delay (ssh, NOT scp) in 1:10:
tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
match ip tos 0x10 0xff flowid 1:10
# ICMP (ip protocol 1) in the interactive class 1:10 so we
# can do measurements & impress our friends:
tc filter add dev $DEV parent 1:0 protocol ip prio 11 u32 \
match ip protocol 1 0xff flowid 1:10
# To speed up downloads while an upload is going on, put ACK packets in
# the interactive class:
tc filter add dev $DEV parent 1: protocol ip prio 12 u32 \
match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 \
match u16 0x0000 0xffc0 at 2 \
match u8 0x10 0xff at 33 \
flowid 1:10
# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
tc filter add dev $DEV parent 1: protocol ip prio 13 u32 \
match ip dst 0.0.0.0/0 flowid 1:20
########## downlink #############
# slow downloads down to somewhat less than the real speed to prevent
# queuing at our ISP. Tune to see how high you can set it.
# ISPs tend to have *huge* queues to make sure big downloads are fast
#
# attach ingress policer:
tc qdisc add dev $DEV handle ffff: ingress
# filter *everything* to it (0.0.0.0/0), drop everything that's
# coming in too fast:
tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
More information about the hacking
mailing list