Cosas varias, tecnología y familia.... y descargos de la pega

viernes, 31 de julio de 2009

Tech: Traffic Shaping (per host)

Después de mucho auto negarme la necesidad, y decir cosas como "es difícil, tengo que estudiarlo", que a pesar de ser completamente verdad, en mi interior no quería hacerlo ya que es una jugada sucia que como ISP podemos realizar para y en contra de nuestros clientes. Pero naturalmente uno viendo la realidad y examinando feacientemente los hechos, llega a la conclusión de si.... es necesario, asi que me puse a investigar y logramos realizar el tan mal visto traffic shaping y limitación de tráfico al 95% de nuestros usuarios (95% de nuestro trafico internacional)

Nuestra intención principal es hacer limitación por equipo cliente (o rango) y no tanto por tipo de tráfico.
Voy a partir diciendo como traté y no pude, para luego seguir con lo que si funcion:

Para trabajar con traffic shaping y limitación de ancho de banda, escogí usar el encolado HTB que en conjunto con TC (iproute2) son aparentemente la mejor opción par ocupar en Linux, tanto por el rendimiento como por en uso de CPU de la máquina en cuestión.

El TS (traffic shaping) es una forma de limitar la velocidad de transmisión de cierto flujo de datos que se van "introduciendo" dentro de un tubo con un ancho limitado, y que se le puede dar a su ves, calidad de servicio.

No voy a profundizar en los tecnicismos para eso deben leer LARTC y entenderlo.

Como No funcionó:

No funcionó tratando de hacer una cola y clase del tipo 122:2 y 123:2. Esto tratando de hacer una diferenciación por clase de dirección IP y su respectivo host, es decir 122:2 para representar al host 200.112.122.2 y 123:2 para representar al 200.112.123.2. Quería mantener cierto orden en el script. A pesar que los creaba sin problemas, no había forma de hacer que el trafico se diferenciara por alli (que entrara en esas colas).

Como SI funcionó

Después de mucho intentarlo, decidí hacerlo correlativamente empezando de la cola 1: en adelante (1:1, 1:2, 1:3 etc...) y desde allí... lo demás fue trivial.-

En script cuenta con 3 pasos. La creación de un canal común para un cliente y la creación de 2 subcanales para diferenciación del tráfico interno.

Entonces:
tengo un archivo de la siguiente forma

"nombre_cliente" "ancho de banda_kbps" "ip1" "ip2" "subred1/mask"... etc
Como ejemplo
Carlost 2000 192.168.3.2 192.168.3.4 192.168.4.0/24

Entonces

En forma simplificada, creo una nueva cadena en la cadena POSTROUTING de la tabla MANGLE utilizando iptables, con el nombre de cliente como el nombre de la cadena.
iptables -t mangle -N Carlost
Entonces creo las cadenas iniciales
tc class add dev $iface parent 1: classid :$counter htb rate $BW\kbit
tc class add dev $iface parent 1:$counter classid :$(($counter+1)) htb rate $((9*$BW/10))\kbit ceil $BW\kbit
tc class add dev $iface parent 1:$counter classid :$(($counter+2)) htb rate $((3*$BW/10))\kbit ceil $((6*$BW/10))\kbit

Donde: $iface es la interface desde donde proviene esa red o IP
$counter es un contador simple
$BW es el ancho de banda asociado al cliente
(lo demás) son solo operaciones matemáticas.

Entonces aplico classify para clasificar los paquetes sobre la cadena creada para el cliente.
$ipmangle -A $comment -o $iface -j CLASSIFY --set-class 1:$(($counter+2))
$ipmangle -A $comment -o $iface -p ICMP -j CLASSIFY --set-class 1:$(($counter+1))
$ipmangle -A $comment -o $iface -p tcp -m multiport --sports 80,8080,500,20,21,22,19,443,53,110,7,993,6890:6900 -j CLASSIFY --set-class 1:$(($counter+1))
$ipmangle -A $comment -o $iface -p tcp -m multiport --sports 5900:5906 -j CLASSIFY --set-class 1:$(($counter+1))
$ipmangle -A $comment -o $iface -p udp -m multiport --sports 53,500,161,162,7,6890:6900,5060 -j CLASSIFY --set-class 1:$(($counter+1))
$ipmangle -A $comment -j ACCEPT ### necesario ya que CLASSIFY no es de retorno
Y después iterando sobre las IPs del cliente (y subredes si corresponde) para mandarlo a la cadena asociada a su trafico.

for ip in "${IPs[@]}" ; do
$ipmangle -A POSTROUTING -o $iface -d $ip -j $comment
done

Y eso es todo todito todo...

Cualquier duda solo posteen

PS: Tambien siendo un router sin NAT se puede limitar el ancho de banda de subida muy failmente sin recurrir a otro trucos... solo copien la cola principal en la otra tarjeta y creen la regla general con classify orientado a la tarjeta de salida.

Ciao.

lunes, 27 de julio de 2009

Blog: El enemigo interno...

Cuantas veces lo he visto pasar, cuantas veces...
Amigos cercanos y lejanos... conocidos... parientes de amigos y conocidos
Ahora.. directamente a nosotros, a nuestra familia de siempre....

Es increíble como evitas el tema.... si algo conoces de psicología.. hasta puedes reconocer las etapas que vas pasando, en estos momentos, la negación, pasando a la crisis...
después ... la aceptación, a la cual tengo miedo de llegar, porque será la confirmación de todo.

Tengo rabia.... tengo miedo... tengo mucho miedo.... y tengo mucha rabia....
Me enojo... me descontrolo, lo aguanto y no puedo... y después, aun no puedo...

Casi no puedo escribir, pero sigo.

Noticia increíble, inesperada, pero también, de alguna forma, lo sabía o lo esperaba, y eso me da sentimientos de culpa que no debería tener. y me da ... pena.

Aun no puedo conversar abiertamente del tema, ni con mi hermana, que es la que sabe todo.... negación... se va a poner bien no? eso quiero, eso espero.

"Manifiesto que he vivido", pero que cruel puede sonar eso, si mientras realizas tramites de la esperada jubilación, te dicen otra cosa... lo contrario de lo que esperas, la posibilidad concreta que todo acabe y mal. Pasas la vida bajo la idea de los demás "eres trabajólico" y para que.....PUTA !!!! PARA QUE!!!!!!!!

Si esto fuera papel.... estaría ilegible, no saben lo que he llorado.... menos mal ... trabajo en una oficina solo... quizás demasiado solo.

Que hacer, que hacer, no tengo idea a quien preguntar o que preguntar, cuanto......
O si lo se, pero no quiero. Negación! no? o ya entre el la crisis..

No se como, pero esto me hace bien, el desahogo y la catarsis... soltar, pero no quedo conforme, y nadie podría.

Y mi padre... lo quiero mucho, pero no puedo aceptar que la deje sola, aunque esté fuera de sus manos... aunque no pueda hacer otra cosa... porque SI PUEDE, nada es mas importante que esto. Espero que pueda estar, no dejarla sola.... al menos en la semana, cuando nosotros no podemos hacer otra cosa.

haaaaaaaaaaaa........ mamita linda... no quiero que te pase esto, nadie quiere... pero yo quiero menos.

No quiero quedarme con la rabia y la pena.... sentimientos negativos?, (el secreto??? programación neuro-linguistica??, inteligencia emocional?? de que mierda hablan, son sentimientos que se sienten, no se piensan)...

Al menos el tratamiento del dolor está haciendo su trabajo, pero no es ella... está disminuida, y sufre por eso .. oh Dios, como sufre por eso. La escuche mientras dormía, te llamaba a tí papá, a tí y a mi abuela... y despertaba sin saber con quien estaba... y decía entre llanto... "por que". Y aunque lo se, todos se hacen la misma pregunta en su momento, pero no por eso es menos válida, y nunca tiene una respuesta que satisfaga, por que!, POR QUE!!!!!!!!

La Paulita me dice que no me lo guarde, que suelte lo que tengo, me habla de algunas teorías de la autocontención, que si te guardas muchas cosas, se acumulan y generan.... tumores, o enfermedades auto-inmunes.... Algunos psicólogos deben ser realmente una mierda, diciéndote que la culpa es tuya (aunque no creo que lo digan directamente). Lo que menos quieres es enfermarte con algo incurable.... pero cuando llegan las enfermedades, se explayan diciendo webadas que no ayudan y realmente no explican nada; A la persona que lo sufre. --- me fui a otro tema, ufff es bueno enfocarse en otras ideas ....... otra ves, negación ----------

Folclorista de toda la vida, trabajadora incansable, objetiva e inteligente como pocas, gran educadora, motivadora y también acogedora... Hasta los mañosos 30 me quede bajo su ala. Mamón y que!, con sus virtudes y defectos, es la persona que me forjó y me enseño a ser lo que soy. Aunque algunas lecciones me las salté, no soy lo mejor de lo mejor pero soy mejor que muchos (aunque peor que otros tantos). Es a quien elegí como modelo y a quien le debo todo. Edipo? las webas, es mi madre y si hay alguien que no quiera a su madre, es porque está cagado de la cabeza, y muy cagao.

Quiero empezar a aceptar, pero aun no puedo, y tampoco estoy seguro de que aceptar... hasta donde o cuando seguir teniendo fé.... porque hasta ahora, es lo que mas tengo gracias al gran bakán, fé ----- aún con la negación? -----

Maldigo al cancer, lo maldigo como los antiguos, MALDITO SEAS!! que desaparezcas de este mundo sin pena ni gloria y dejes de causar daño, desaparece ya y no vuelvas. Te lo ordeno yó, un hijo lleno de dolor, rabia y pena, te lo ordeno!!

Desaparece!!!!
Y mientras... siendo un malestar acá en el pecho, un poco mas abajo y a la derecha, no es emocional, lo se, pero es psicológico aunque.... lo tengo desde hace tiempo.... no se. Solo espero que no. Y no hago nada.....

lunes, 8 de junio de 2009

Blog: MOTOKO!!!!!!!!!!!!

Desde el Viernes re100 pasado me he convertido en un motoquero, o por lo menos estoy en proceso de....

Tengo la Moto y el Casco

Me falta... La licensia, los guantes, la chaqueta, etc etc etc etc

Pero SOY FELIZ COMO UNA PERDIZ

Aqui una fotito

Ns vemos!!!!

martes, 21 de abril de 2009

Tech: VLAN Bridge Tunneling (VPN) - Linux

Hace poco se me presentó la necesidad de crear una VPN en capa 2 (enlace), es decir una VPN que funcione como bridge, que además pueda pasar jumboframes (VLAN TRUNKING), Es decir una troncal con VLANs.

En un comienzo pensé en hacerlo como un tunnel GRE, sin embargo para que GRE tenga soporte de bridge en linux hay que recompilar un montón de cosas, y estaba buscando simplicidad.

Opté entonces por ocupar el módulo TUN/TAP para el cual TAP funciona como una interface virtual de capa 2, justo lo que andaba buscando.

Aunque quería hacerlo en forma de linea de comando como se hace con los túneles IPIP, GRE y otros, la verdad es que no encontré el como, asi es que ocupé una solución demoníaca externa AKA, un demonio de VPN.

TUN/TAP es ocupado por varios paquetes de soluciones VPN y muchas otras soluciones de virtualización para crear túneles de capa 2 o 3. Entre los paquetes de VPN, con los que ya había trabajado anteriormente, están OpenVpn y VTUN. Ocupé VTUN que es mucho más fácil de trabajar mas simple y mucho mas liviano, y si fuera necesario también encripta y comprime.

De como se hace... siga leyendo

Bueno lo primero es hacerse del paquete, lo pueden encontrar en vtun homepage y muchas distros los traen en sus repos.-

Después de compilar/instalar ->

Carguen el módulo en el kernel (vean la docu de su distro para dejarlo autoiniciado)

modprobe tun

Revisen vía dmesg o vean si aparece en /dev/net/tun.
Como VTUN trabaja en modo cliente/servidor, deben tener cosas similares en ambas máquinas.

En el server, dejen todo lo que viene por defecto y agreguen el siguiente perfil (bueno sería que borraran los otros)

Tunnel {
passwd tu_password; # Password
type ether; # Ethernet tunnel
device tap0; # Device tap0
proto udp; # UDP protocol
# compress lzo:1; # LZO compression level 1
# encrypt yes; # Encryption
stat yes; # Log connection statistic
keepalive yes; # Keep connection alive

up {
# Connection is Up

# Assign IP address
# ifconfig "%% 10.1.0.1 netmask 255.255.255.0";
ifconfig "%% up"
# No es necesario agregar una IP, ya que se va a agregar a un bridge

# Add route to net 10.2.0.0/24
# route "add -net 10.2.0.0 netmask 255.255.255.0 gw 10.1.0.2";
# No es necesario agregar rutas

# Enable masquerading for net 10.2.0.0.0/24
# firewall "-A FORWARD -s 10.2.0.0/24 -d 0.0.0.0/0 -j MASQUERADE";
# y Absolutamente inecesario un firewall
};

down {
# Connection is Down

# Shutdown tap device.
ifconfig "%% down";

# Disable masquerading for net 10.2.0.0.0/24
# firewall "-D FORWARD -s 10.2.0.0/24 -d 0.0.0.0/0 -j MASQUERADE";
};
}

En el Cliente de modo similar agregamos el siguiente perfil

Tunnel {
passwd tu_passwrd; # Password
type ether; # Ethernet tunnel
device tap0; # Device tap0
proto udp; # UDP protocol
# compress lzo:1; # LZO compression level 1
# encrypt yes; # Encryption
stat yes; # Log connection statistic
keepalive yes; # Keep connection alive

up {
# Connection is Up

# Assign IP address
ifconfig "%% up";

# Add route to net 10.2.0.0/24
# route "add -net 10.2.0.0 netmask 255.255.255.0 gw 10.1.0.2";

# Enable masquerading for net 10.2.0.0.0/24
# firewall "-A FORWARD -s 10.2.0.0/24 -d 0.0.0.0/0 -j MASQUERADE";
};

down {
# Connection is Down

# Shutdown tap device.
ifconfig "%% down";

# Disable masquerading for net 10.2.0.0.0/24
# firewall "-D FORWARD -s 10.2.0.0/24 -d 0.0.0.0/0 -j MASQUERADE";
};
}


Al igual que el anterior, se pueden dar direcciones IP y rutas, pero para nuestro caso no es necesario. Los dejé a la vista, pero comentados

Una ves terminadas las configuraciones se debe levantar el tunnel

En el Server (los [...] son opcionales para especificar cual archivo ocupar)

vtund -s [-f /etc/vtund/vtind.conf]

En el cliente

vtund Tunnel

Una ves conectados asegúrense que las interfaces estén UP

Posteriormente en el Server, creamos el bridge

brctl addbr br0
brctl addif br0 eth1 #La Interfaz VLAN TRUNKING
brctl addif br0 tap0 #La interfaz virtual
ifconfig br0 up #Asegúrate que las otras 2 interfaces esten UP

y en el cliente hacemos lo mismo según corresponda(tap0 puede cambiar a tap1 y eth1 puede no ser tu troncal ;) )

Ahora que el bridge está UP podemos crear una interfaz vlan/virtual para revisar estado y administrar inline, y listo, hemos teminado nuestro tunnel bridge con soporte VLAN.

Ciao!!!

jueves, 19 de febrero de 2009

Tech: Log blocked IPs by mod recent

Hace un tiempo les mencioné como hacer un bloqueo de puertos utilizando el mod recent de iptables.

Bueno, ahora les digo como pueden hacer un logeo de los mismos… es decir, generar una entrada en el log cada vez que se bloquea una ip.

El truco es muy simple. Veamos primero el original:

iptables -A INPUT-p tcp -i eth0 --dport 22 -m state --state NEW,INVALID -m recent --name ChicoMalo --set
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW,INVALID -m recent --seconds 60 --hitcount 4 --name ChicoMalo --update -j DROP

Primero damos vuelta el orden. Ya que es más optimo que se revise al revés, es decir, para el primer paquete pasa de larglo la primera regla y después los segudnos y los bloqueados no llegan a bajar nada.

Y además le agregamos la línea donde nos va a loggear la dirección bloqueada, con un hitcount con 1 menos que el anterior y listo.

Entonces:

iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW,INVALID -m recent --seconds 60 --hitcount 4 --name ChicoMalo --update -j DROP
iptables –A INPUT –p tcp –I eth0 –dport 22 –m state –state NEW,INVALID –m recent –seconds 60 –hitcount 3 –name ChicoMalo –update –j LOG –log-prefix “BLOQUEADO: ”
iptables -A INPUT-p tcp -i eth0 --dport 22 -m state --state NEW,INVALID -m recent --name ChicoMalo

Eso es todo, aqui tienen sus logs de bloqueo de IPs.

jueves, 20 de noviembre de 2008

Arriendo Departamento en el Centro

Sres visitantes e intersados a fin.

Arriendo un departamento en el centro de Santiago (Chile). De 2 dormitorios, Matrimonial y de niño(a). Digo de niñ@ porque es muy pequeño para un adulto. Cocina Americana, 1 Baño.

No tiene bodega ni estacionamiento

La ubiación es a un costado de la plaza Santa Ana, a pasos del Metro. Orientación oriente sin edificio cercano (mirando la plaza) 9º Piso.

El edificio consta con calefaccion central, agua caliente, seguridad (camaras cctv), picina (temperada), gimnacio y sala multiuso.

arrendo de $170.000, los gastos fijos (comunes) son del orden de los $33.000 + Gastos variables (agua caliente y calefacción)

Consultas con Carlos 09-88055782


Ver mapa más grande
Counter