Problema con HTB-GEN + SHOREWALL

Imagen de micronic

Forums: 

Hola Amigos! Creo este tema para poder encontrarle definitivamente una solucion al prolbema que tenemos mucho de nosotros :) , mas especificamente con la segmentacion de subida con HTB-GEN.

Pongo algunos datos para que puedan ayudarnos:

En mi caso utilizo:
SQUID 2.6 de modo transparente por el puerto 8080.
HTB-GEN 8
Shorewall 4

Si en Shorewall cologo la siguiente regla en "rules":
REDIRECT loc 8080 tcp 80
HTB-GEN no segmenta la velocidad de subida (si lo hace con la de bajada).
Si yo saco esta regla dejando sin funcionamiento a SQUID, HTB-GEN segmenta correctamente tanto la velocidad de subida como de bajada.

Lo mas facil seria dejar de utilizar SQUID como Proxy o bien utilizarlo pero no de modo transparente. Pero la cuestion es que necesito un Servidor Proxy y que sea transparente y no logro dar con la solcion para que todo funcione bien.

Bueno espero que sigan aportando ideas y podamos llegar a la solucion.

umm se me hace q se ha

Imagen de falcom

umm se me hace q se ha hablado bastante del tema en el como de juandarcy, me parece q death te dio la solucion si mal nmo recuerdo, tenias q agregar unas lineas para controlar la subida el el arcivo de configuracion!! yo lo tengo funcionando en un centos con squid+iptables y funciona de maravilla para 140 users...

Hola! Muchisimas gracias damage,

Imagen de micronic

Hola! Muchisimas gracias damage, estube jugando un poco y no hay caso no doy con la solucion, segui el COMO al pie de la letra y estube toqueteando un poco el script.

Si alguien soluciono el problema y podria informarme se lo agradeceria, sigo intentando solucionar el problema de encontrar una solucion lo voy a postear. ;)

---------------------------------
GNU/Linux|The Future Technology|

Que será lo que sucede,

Imagen de damage

Que será lo que sucede, pueden ser varias cosas, pero para no especular mira te paso partes del script de htb-gen, analizalo, quizas algo este diferente en el tuyo:

function do_iptables() {
function _do_iptables () {
function __do_iptables () {
local dir=$1 iface=$2 ip=$3 class_prio=$4 class_dfl=$5 tcp_prio_ports=$6 udp_prio_ports=$7 prio_protos=$8 prio_helpers=$9
local host_dir= ports_dir=
case "$dir" in down) host_dir=d;ports_dir=s ;; up) host_dir=s;ports_dir=d ;;esac
# iptables accept either "." & "/" chars in table naiming, is my lucky day :-) !
iptables -t mangle -N htb-gen.${iface}-${ip}
iptables -t mangle -A htb-gen.${iface} -${host_dir} ${ip} -j htb-gen.${iface}-${ip}
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -m length --length 0:100 -j MARK --set-mark ${class_prio}
local IFS=","
for proto in ${prio_protos}; do
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -p ${proto} -j MARK --set-mark ${class_prio}
done
for helper in ${prio_helpers}; do
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -m helper --helper ${helper} -j MARK --set-mark ${class_prio}
done
unset IFS
if [ "$tcp_prio_ports" != 0 ]; then
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -p tcp -m multiport --${ports_dir}ports $tcp_prio_ports -j MARK --set-mark ${class_prio}
fi
if [ "$udp_prio_ports" != 0 ]; then
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -p udp -m multiport --${ports_dir}ports $udp_prio_ports -j MARK --set-mark ${class_prio}
fi
iptables -t mangle -A htb-gen.${iface}-${ip} -m mark --mark 0 -j MARK --set-mark ${class_dfl}
iptables -t mangle -A htb-gen.${iface}-${ip} -j ACCEPT


# Make extra tables, cleaner & target match faster
for ((if=0;if<${#ifaces[@]};if++)); do
iptables -t mangle -N htb-gen.${ifaces[if]}
iptables -t mangle -A FORWARD -o ${ifaces[if]} -j htb-gen.${ifaces[if]}
iptables -t mangle -A OUTPUT -o ${ifaces[if]} -j htb-gen.${ifaces[if]}
for ((n=0;n<${#ip[@]};n++)); do
test "${enabled[n]}" == "0" && continue
if [[ ${ifaces[if]} == ${iface_down[n]} ]];then
__do_iptables "down" ${ifaces[if]} ${ip[n]} ${class_prio[n]} ${class_dfl[n]} ${tcp_prio_ports[n]} ${udp_prio_ports[n]} ${prio_protos[n]} ${prio_helpers[n]}
fi
if [[ ${ifaces[if]} == ${iface_up[n]} ]];then
__do_iptables "up" ${ifaces[if]} ${ip[n]} ${class_prio[n]} ${class_dfl[n]} ${tcp_prio_ports[n]} ${udp_prio_ports[n]} ${prio_protos[n]} ${prio_helpers[n]}
fi
done
done
}
#function begins here!
if [[ "$1" == "stdout" ]] ;then
iptables () { echo iptables "$@"; }
_do_iptables
else
#delete old htb-gen entries(chains)
for ((if=0;if<${#ifaces[@]};if++)); do
$iptables_command -t mangle -D FORWARD -o ${ifaces[if]} -j htb-gen.${ifaces[if]} 2>/dev/null
$iptables_command -t mangle -D OUTPUT -o ${ifaces[if]} -j htb-gen.${ifaces[if]} 2>/dev/null

La versión posteada es de la 0.9b1.

Algo adicional, mira que esto sea lo que te de de resultado al listar la cadena mangle hacia una ip especifica:


srvlinux:/etc/htb-gen# iptables -nL -t mangle |grep 192.168.0.100

htb-gen.eth0-192.168.0.100 all -- 192.168.0.100 0.0.0.0/0
Chain htb-gen.eth0-192.168.0.100 (1 references)
htb-gen.eth1-192.168.0.100 all -- 0.0.0.0/0 192.168.0.100
Chain htb-gen.eth1-192.168.0.100 (1 references)

Saludos

Hola damage, Realmente estoy desorientado!.

Imagen de micronic

Hola damage, Realmente estoy desorientado!. Estaba utilizando la version 8, ahora instale la version 0.9b1, funciona exactamente igual a la 8.

Esto es lo que me sale luego de hacer:

xxxx#iptables -nL -t mangle |grep 10.0.0.2
htb-gen.eth0-10.0.0.2 all -- 10.0.0.2 0.0.0.0/0
Chain htb-gen.eth0-10.0.0.2 (1 references)
htb-gen.eth1-192.168.0.100 all -- 0.0.0.0/0 10.0.0.2
Chain htb-gen.eth1-10.0.0.2 (1 references)

Y el script lo tengo tal cual lo tenes vos.

---------------------------------
GNU/Linux|The Future Technology|

Pues si todo esta igual,

Imagen de damage

Pues si todo esta igual, deberia funcar sin problemas, has probado bajando el shorewall y solo ejecutar el enmascaramiento y el Redirect al 8080 + port_forwarding, para ver si no es algo relacionado con el shorewall?, de ahi no se me ocurre más.