11th April 2012 ROBALE MÁS WI-FI A TU VECINA HOW-TO
Bueno, primero que nada, perdón a los lectores por el abandono del blog. Estoy con el desarrollo de un proyecto personal que ya pronto se enterarán. Ahora sí, al post propiamente dicho. Luego
de
exitaso
de
ROBALE
WI-FI
A
TU
VECINA [http://tuamigotetieneganas.blogspot.com.ar/2009/09/robale-wi-fi-tu-vecina-how-to.html] , el cual también tuvo su charla en el Barcamp 2011 en la Universidad de San Andrés, hoy venimos a robarle aún más wi-fi a nuestra pobre vecina. En el capítulo anterior, se nos planteaba que para qué queríamos robarle wifi a nuestra vecina, si nosotros teníamos internet en casa... bueno, acá tenemos la respuesta: respuesta: Para duplicar la velocidad usando 2 redes!!!!!!!!!!!!!! !!!!!
Tal y como lo leen: Vamos a conectarnos a 2 redes (la nuestra y la de la vecina) para así tener la suma de los 2 anchos de banda para nosotros. Esto puede lograrse siempre que tengamos 2 o más placas de red (en el caso de la mayoría de las notebooks, se pueden enchufar por cable y conectarse a wifi), por lo que así podemos lograr conectarnos a 2 redes distintas y con lo que vamos a explicar, usar las 2 a la vez. Sin más cháchara, pasamos a explicar: Cómo conectarse a 2 redes para tener el doble de velocidad en Linux. Como los tenemos acostumbrados, vamos a explicar cómo hacerlo en varios simples pasos, pero no sin antes dar la respectiva introducción teórica: Esta práctica, es má más conocida como Bonding (Sí, acción acción y efecto de estar viajando en bondi). ¿Qué es el port bonding? Es una técnica que permite agregar varios interfaces de red físicos en uno único virtual. A cada interfaz físico se le denominará slave (esclavo). Con esto podemos realizar un balanceo de carga entre las dos interfaces y conseguir un ancho de banda final igual a la suma de los anchos de banda de cada slave. Además de una ventaja adicional inmediata: redundancia de la conexión. Tenemos varios enlaces físicos a la red, perder alguno de ellos implica una degradación de servicio pero no la pérdida completa de conexión.
El módulo bonding Para crear la interfaz virtual debemos cargar un módulo que la gestione aplicando alguna política o algoritmo para ello. Este módulo tiene muchos parámetros, aunque antes de listarlos todos explicaremos un poco el funcionamiento teórico para entender mejor los parámetros.
Slaves y colas Toda interfaz de red tiene asignada automáticamente una cola de envío y otra de recepción. Cada slave tiene también sus propias colas. En cuanto a la recepción hay poco que decir, cuando llega un paquete a algún slave se pasa a la cola de recepción de la interfaz virtual. Si un enlace físico falla, hay poco que podamos hacer: Simplemente perderemos el paquete. Pero para el envío hay un poco más de historia, puesto que si detectamos que un enlace se ha perdido, deberemos pasar todos los paquetes de la cola de esa interfaz a la esclava que sigue funcionando para después congelar esa cola de envío degradando así el rendimiento de la interfaz. Por tanto debemos poder detectar cuando un enlace se ha caído, a este respecto existen dos posibilidades: detección por ARP o mediante MII (Media Indepent Interface). Detección ARP: consiste en enviar periódicamente peticiones ARP por un
slave, si estas peticiones fallan el enlace se considera caído. Detección MII: si el módulo de la NIC (Network Interface Card) implementa ciertas llamadas, se puede detectar cuando un enlace está físicamente caído, en cuyo caso, se deshabilita el slave. Evidentemente, los esclavos deshabilitados se seguirán probando hasta que vuelvan a estar operativos, momento en el cual se volverán a habilitar dentro de la interfaz virtual.
Balanceos de carga Probablemente este sea el aspecto más importante del bonding: cómo balancear la carga entre todos los esclavos. En este sentido el módulo tiene un parámetro que permite indicar qué algoritmo se debe usar. Los algoritmos implementados son: balance-rr (modo 0): se emplea un algoritmo round robin entre la cola virtual y
las de los esclavos. Es algo así como: un paquetillo para un esclavo, otro para otro esclavo, un paquetillo para un esclavo, otro para el otro... etc. Es el algoritmo que se usa por defecto. active-backup (modo 1): realmente no balancea la carga, usa sólo un esclavo y en caso de fallar, usa el siguiente disponible. balance-xor (modo 2): emplea una formulita para decidir por qué interfaz sale: (source-MAC xor dest-MAC) mod n-slaves. broadcast (modo 3): se transmite todo por todas las interfaces. Este método no balancea tampoco, pero provee tolerancia a fallos. 802.3ad (modo 4): emplea algoritmos definidos en el estándar IEEE 802.3ad. balance-tlb (modo 5): balancea la carga de transmisión entre los esclavos dependiendo de la velocidad de estos y de la carga total. El tráfico es recibido
por un esclavo, en caso de fallar otro esclavo toma su MAC y continúa recibiendo tráfico. balance-alb (modo 6): realiza el balanceo anterior además de un balanceo también en la recepción. Este método debe modificar las MAC de los esclavos estando las tarjetas activas, esto debe estar soportado por el driver para poder usar este método. Aunque todo esto parezca muy bonito, hay que tener en cuenta una cosa: algunos métodos necesitan ciertas configuraciones/capacidades en el switch al que estés conectados los esclavos. Como en Tu Amigo Te Tiene Ganas [http://tuamigotetieneganas.blogspot.com.ar/] no contamos con tanta infraestructura, tampoco contamos con la posibilidad de explicar algunos.
Ahora sí, la posta: Es necesario un módulo que viene de serie incluído en los kernel 2.4 y 2.6. Además también hace falta el programa que gestiona las interfaces: ifenslave, que viene empaquetado en Debian para disfrute de todos nosotros:
$ sudo apt-get install ifenslave
Precondición: Suponemos que ya te podés conectar a las redes que vas a usar (tanto la cableada como la wifi). También podés hacerlo con 2 wifis si tenés 2 placas wifi (por ejemplo, una usb). En otras palabras, nuestro ifconfig debería ser parecido a esto:
eth0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0 MTU:1500 Metric:1 RX packets:19703 errors:0 dropped:0 overruns:0 frame:0 TX packets:30400 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14056324 (14.0 MB) TX bytes:3623526 (3.6 MB) Interrupt:42 Base address:0xc000
lo
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4693 errors:0 dropped:0 overruns:0 frame:0 TX packets:4693 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:428026 (428.0 KB) TX bytes:428026 (428.0 KB)
wlan0
Link encap:Ethernet HWaddr cc:52:af:92:72:50 inet addr:192.168.1.104 Bcast:192.168.1.255
Mask:255.255.255.0 inet6 addr: fe80::ce52:afff:fe92:7250/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:127362 errors:0 dropped:0 overruns:0 frame:0 TX packets:105375 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:138172311 (138.1 MB) TX bytes:16802788 (16.8 MB) Lo que quiere decir que te podés conectar a tu red y a la de tu vecina. Para obtener la contraseña del wifi de tu vecina, fijate acá [http://tuamigotetieneganas.blogspot.com.ar/2009/09/robale-wi-fi-tu-vecina-how-to.html] . Ahora debemos desactivar todas las interfaces de red activas y que queremos usar con bonding. Si tenemos por ejemplo eth0 y wlan0 activas ejecutariamos el siguiente comando:
$ sudo ifconfig eth0 down $ sudo ifconfig wlan0 down IMPORTANTE: En todo esto, si estamos en alguna de nuestras distribuciones favoritas como Debian, Ubuntu, Mint, etc., vamos a tener activado el servicio de network-manager por defecto y sólo en un caso particular como este, el mismo va a molestar. Por lo que lo damos de baja:
$ sudo /etc/init.d/network-manager stop Más adelante lo podemos volver a levantar reiniciando o con start. Y ahora nuestro ifconfig tendría que ser algo así:
lo
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4693 errors:0 dropped:0 overruns:0 frame:0 TX packets:4693 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:428026 (428.0 KB) TX bytes:428026 (428.0 KB)
En el archivo /etc/network/interfaces debemos comentar aquellas partes relacionadas con las configuraciones de interfaces de red que queramos añadir al bonding. Por ejemplo, y siguiendo con el ejemplo, deberíamos comentar las partes de eth0 y wlan0 de la siguiente manera (en caso de tenerlas, no es necesario que estén... auto lo y todo eso se deja como está):
#auto eth0
#iface eth0 inet dhcp #auto wlan0 #iface wlan0 inet dhcp En este mismo archivo agregamos las partes correspondientes a las interfaces de red que queramos añadir al bonding:
auto bond0 iface bond0 inet dhcp hwaddress ether “dirección MAC de la intefaz que se usará” slaves eth0 wlan0 # y tantas como queramos y/o tengamos bond-mode 5 #el modo 5 es el correspondiente al balance-tlb explicado anteriormente
bond-miimon 100 # miimon = media independent interface monitoring (que viene a ser en milisegundos cada cuanto se monitorizan los enlaces). ACLARACIÓN: Cuando decimos “ dirección MAC de la intefaz que se usará ”, nos referimos a que tenemos que elegir a una de las interfaces que irán al bonding para que actúe de principal. Por ejemplo, nosotros eleginos eth0, por lo que en lugar de “ dirección MAC de la intefaz que se usará”, pondremos 2c:27:d7:cf:94:8d, que es la HWaddr de la interfaz eth0. Y ahora sí, levantamos el bonding: Cargamos el módulo:
$ sudo modprobe bonding $ sudo ifup bond0 Nos tendría que decir algo como:
Waiting for a slave to join bond0 (will timeout after 60s) Y mientras tanto, en otra consola , levantamos las interfaces que irán al bond:
$ sudo ifconfig eth0 up Para levantar la red cableada. En este momento, si hacemos ifconfig, nos debería dar algo así:
bond0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d UP BROADCAST MASTER MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d inet6 addr: fe80::2e27:d7ff:fecf:948d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:156893 errors:0 dropped:0 overruns:0 frame:0 TX packets:115753 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:1000 RX bytes:61256235 (61.2 MB) TX bytes:21688444 (21.6 MB) Interrupt:42 Base address:0xc000 lo
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:9804 errors:0 dropped:0 overruns:0 frame:0 TX packets:9804 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1144922 (1.1 MB) TX bytes:1144922 (1.1 MB)
Y ahora viene la parte más complicada: Tenemos que conectarnos al wifi por consola :) Si nuestra vecina tiene una red wifi medio insegura, con cifrado WEP, la cosa es una poco más sencilla:
$ sudo iwconfig wlan0 essid "NOMBRE DE LA RED" key s:CONTRASEÑA DE LA RED && dhclient wlan0 Ahora si tenemos una vecina un poco más informada y su wifi tiene un cifrado WPA/WPA2, vamos a tener que leer un poco sobre wpa_supplicant . Básicamente necesitamos hacer lo siguiente: Por las dudas que no los tengamos instalados:
$ sudo apt-get install wireless-tools wpa-supplicant Y para hacer lo del password:
$ sudo su # wpa_passphrase "NOMBRE /etc/wpa_supplicant/wpa.conf
DE
LA
RED"
CONTRASEÑA
>>
# (apretar ctrl+D) Con esto lo que hacemos es darle el encode correcto al password para que el protocolo lo entienda y guardarlo en el archivo .conf
$ sudo wpa_supplicant /etc/wpa_supplicant/wpa.conf -B
-iwlan0
-Dwext
-c
Donde -i wlan0 indica la interfaz, -c bla el archivo donde pusimos el password y -B para que se ejecute en background como demonio. El parámetro -Dwext indica el driver wifi a usar. Esto ya depende de cada placa... en mi caso funciona con wext, pero hay otras posibilidades como atheros, madwifi, entre otros. Ahora pedimos un IP al wifi por DHCP:
$ sudo dhclient wlan0 Con esto ya deberíamos habernos podido conectar al wifi por consola. Nuestro ifconfig se debería ver algo así:
bond0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d UP BROADCAST MASTER MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d inet6 addr: fe80::2e27:d7ff:fecf:948d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:156922 errors:0 dropped:0 overruns:0 frame:0 TX packets:115780 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:1000 RX bytes:61257975 (61.2 MB) TX bytes:21692984 (21.6 MB) Interrupt:42 Base address:0xc000 lo
wlan0
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10783 errors:0 dropped:0 overruns:0 frame:0 TX packets:10783 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1243501 (1.2 MB) TX bytes:1243501 (1.2 MB)
Link encap:Ethernet HWaddr cc:52:af:92:72:50 inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::ce52:afff:fe92:7250/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:127503 errors:0 dropped:0 overruns:0 frame:0
TX packets:105728 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:138205580 (138.2 MB)
TX bytes:16866857 (16.8
MB)
Con lo que procedemos a bindear los slaves al bonding:
$ sudo ifenslave bond0 eth0 wlan0 Y ahora nuestro ifconfig debería verse finalmente así:
bond0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2e27:d7ff:fecf:948d/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:284744 errors:0 dropped:0 overruns:0 frame:0 TX packets:222105 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:199693249 (199.6 MB) TX bytes:38657437 (38.6 MB) eth0
Link encap:Ethernet HWaddr 2c:27:d7:cf:94:8d UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:157168 errors:0 dropped:0 overruns:0 frame:0 TX packets:116235 errors:0 dropped:0 overruns:0
carrier:0 collisions:0 txqueuelen:1000 RX bytes:61461943 (61.4 MB) TX bytes:21755756 (21.7 MB) Interrupt:42 Base address:0xc000 lo
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10803 errors:0 dropped:0 overruns:0 frame:0 TX packets:10803 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1245294 (1.2 MB) TX bytes:1245294 (1.2 MB)
wlan0
Link encap:Ethernet HWaddr cc:52:af:92:72:50 UP BROADCAST SLAVE MULTICAST MTU:1500 Metric:1
RX packets:127576 errors:0 dropped:0 overruns:0 frame:0 TX packets:105870 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:138231306 (138.2 MB)
TX bytes:16901681 (16.9
MB) Nótese que la bond0 tiene el ip que debería tener la eth0 y dice "UP BROADCAST RUNNING MASTER MULTICAST" y las slaves dicen "UP BROADCAST SLAVE MULTICAST". Ahora nuestro internet debería volar pagando sólo por una conexión ;) Y cómo sabemos que esto es cierto? Así:
$ cat /proc/net/bonding/bond0 Y nos debería dar algo así:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 2c:27:d7:cf:94:8d Slave queue ID: 0 Slave Interface: wlan0 MII Status: down Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: cc:52:af:92:72:50 Slave queue ID: 0 Bueno, esto fue Cómo robarle MÁS internet a tu vecina para PC y espero que
les haya gustado... chau! Fuentes | https://help.ubuntu.com/community/LinkAggregation [https://help.ubuntu.com/community/LinkAggregation]
http://crysol.org/es/node/811 [http://crysol.org/es/node/811] http://www.letrasdehercules.com/?p=1359 [http://www.letrasdehercules.com/?p=1359] Publicado 11th April 2012 por Sergio Orbe Etiquetas: INTERNET, HACKING, MINT, SOFTWARE LIBRE, LINUX, UBUNTU, TUTORIALES 3
Ver comentarios
Rubén Espinoza 20 de abril de 2013 08:34 hola gracias por el tuto. Responder Respuestas
Rubén Espinoza 20 de abril de 2013 09:08 no es tan rapido como pense socio. Slave Interface: wlan0 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 397 esto me sale aqui que sera ? Permanent HW addr: 00:c0:ca:66:6c:6b Slave queue ID: 0
Rubén Espinoza 20 de abril de 2013 16:10 no me pude conectar por wifi en consola por tu metodo use otro este http://www.taringa.net/posts/linux/13573539/Conectar-Ubuntu-a-redWPA-WPA2.html
Responder
Introduce tu comentario...
Comentar como: Cuenta de Google Publicar
Vista previa
Objecto no localizado!