Archivos Mensuales: febrero 2009

Conectar dos computadoras directamente y compartir Internet

Si el título es algo raro. Verán, hace poco tuve que hacer algo poco usual en mi cuarto. El problema fue el siguiente:

Tengo dos computadoras. Una, la de escritorio, grande, con un amplio monitor y teclado para poder programar cómodamente. Dos, la portátil, una ultramóvil, super pequeña y super liviana para poder llevar a todo lado. Ambas con Ubuntu GNU/Linux Intrepid Ibex 8.10.

Se trata de una HP Pavilion Slimline s3020n y la portatil de una Acer Aspire One 110L.

Verán, por alguna razón se jodió la tarjeta inalámbrica de mi computadora de escritorio (aka, Desktop). No sabía si era un problema de software o de hardware. Mientras averiguaba tenía que usar la portatil (aka Laptop), pero después de varias horas de pasar archivos de la llave ida y vuelva, de estar cambiando de teclado, saltando del mouse al touchpad, tuve que pensar en una alternativa. Bien, vamos a usar el internet inalámbrico de mi Laptop en la Desktop.

Más fácil decirlo que hacerlo. La idea es esta:

Mi Laptop tiene dos dispositivos de red, el inalámbrica y el cableada. Y mi Desktop también, sin embargo la inalámbrica no funciona. Entonces, conectamos las tarjetas de red de las computadoras directamente entre si con un cable Ethernet y accedo a Internet por la tarjeta inalámbrica de mi Laptop. Simple, no?

1) Bien, lo primero, ¿Cómo conecto las dos computadoras? ¿Cual cable Ethernet?

Yo sabía que se necesitaba un tipo de cable particular conocido como Crossover para poder conectar dos computadoras entre si. Que no es más que una organización particular de un cable UTP. Sin embargo, yo solo tenía a mano un cable straight through (el standard) que por afuera se ve igualito pero que tiene una organización del cableado distinta. Así que busqué si existía una forma de lograrlo con un cable de este tipo pero parecía que era imposible, y no encontré ningún evento documentado… hasta que encontré en la entrada de Wikipedia una tecnología conocida como Auto-MDIX, que automáticamente detecta qué tipo de cable se requiere y configura la tarjeta. Sin embargo, esta tecnología es una característica opcional del Gigabit Ethernet [1], y para mi desgracia, ambas de mis tarjetas de red eran Fast Ethernet (el standard viejo). Me dije, que diablos! Vamos a probar a ver que pasa. Asumamos que es un cable crossover y sigamos tutoriales en red de como conectar dos computadoras por medio de un crossover, y si no funcionan, es porque se necesita un crossover y tendré que ir a buscar uno.

Por lo tanto, la conexión quedó:

Internet <-> Router <-> Inalámbrico <-> Interfaz de red inalámbrica ath0 <-> Laptop <-> interfaz de red cableada eth0 1 <-> cable Ethernet straight through <-> interfaz de red cableada etho 2 <-> Desktop

[1] Según la entrada de en.Wikipedia Crossover que apunta a la cláusula 40.4.4 del IEEE 802.3-2008. Sin embargo, Iridium nos cuenta que también se encuentran en algunas NICs y switch Fast Ethernet.

2) IPs, Máscaras de Red, Puertas de enlace, DNS, y más.

Decirles que llegar a esta configuración me tomó 6 horas. Entre lecturas de tutoriales, revisar los fundamentos de redes, probar sin parar, etc. Para configurar todos los aspectos creé un perfil con el network manager y me conecté a ese perfil, cualquier dato no especificado se deja en blanco. Para configurar estos parámetros dan click derecho sobre el ícono del Network Manager – Editar conexiones – Cableada/Inalámbrica – Añadir – Ajustes de IPv4 – Manual

Laptop:

  • ath0: (Wifi, acceso a Internet) DHCP en una primera instancia. Luego con el comando «ifconfig ath0» pude ver los datos asignados por el router y colocarlos como estáticos para evitarme problemas futuros, aunque se supone que puede quedar como DHCP:
    • IP: 192.168.1.102
    • Subnet: 255.255.255.0
    • Gateway: 192.168.1.1
  • eth0: (tarjeta de red 1)
    • IP: 192.168.0.1
    • Subnet: 255.255.255.0
    • Gateway: 192.168.1.1

Desktop:

  • eth0: (tarjeta de red 2)
    • IP: 192.168.0.2
    • Subnet: 255.255.255.0
    • Gateway: 192.168.0.1
    • DNS: 192.168.0.1

Como podrán observar la clave está en que la puerta de enlace (gateway) de la Desktop es la dirección IP de la tarjeta de red de la Laptop. Lo mismo para el DNS. Además, es esencial que el LAN, o la red privada, en este caso las tarjetas cableadas, estén en una subnet diferente. Como pueden observar, la inalámbrica y el router se encuentran en el rango 192.168.1.X mientras que la LAN está en el rango 192.168.0.X

A este punto pueden verificar que ambas computadoras se responden la una a la otra. En consola:

Desde la Laptop:

ping 192.168.0.2

Desde la Desktop:

ping 192.168.0.1

Felicidades, ya se comunican entre si! Sin embargo, por alguna razón, ninguna de las dos computadoras es ahora capáz de comunicarse con otros servidores en Internet.

Nota: Si desean saber el por qué de esa dirección IP consulten: Assigning Private Network Addresses to the Internal LAN.

3) Compartir la conexión a Internet.

Primero se debe transferir todo el tráfico de una interfaz a otra. Esto se logra por medio de una característica conocida como Masquerade. De nuevo, existe un muy extenso documento acerca de ello aquí.

1. Para ello primero instalamos el paquete ipmasq.

sudo apt-get install ipmasq

2. Configuramos el ipmasq. Después de escribir este comando, seleccionar en el menú que aparece que ipmasq inicie después de que la red esté establecida.

sudo dpkg-reconfigure ipmasq

3. Ahora, habilitamos el IP fordwarding.

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Además, editamos el archivo /etc/sysctl.conf y descomentamos la línea «net.ipv4.ip_forward = 1», es decir, le quitamos el caracter # frente a la línea.

sudo gedit /etc/sysctl.conf

4. Configuramos la NAT de la siguiente forma:

iptables -t nat -A POSTROUTING -o ath0 -j MASQUERADE

Ojo en mi caso el argumento ath0 es la interfaz de red con acceso a internet.

Bien! A este punto ambas computadoras se pueden conectar con el mundo exterior, desde ambas el servidor de Google responde. Sin embargo, sólo la Laptop puede resolver los nombres de Dominios (DNS), por lo que el navegador de la Desktop todavía no funciona.

5. Para ello necesitamos el paquete dnsmasq.

sudo apt-get install dnsmasq

6. Reiniciamos el dnsmasq

sudo /etc/init.d/dnsmasq restart

Listo! Nuestra conexión de Internet en la Desktop funciona!

Nota: No estoy seguro, pero creo que es necesario repetir el paso 4 y 6 cada reinicio. Voy a asegurarme y actualizo.

Lo más impresionante de todo, estamos usando un cable straight through! Recuerdan? Supongo que ambas NICs tienen Auto-MDIX o algo similar, aunque no sean Gigabit. Pero funciona 😀 Si alguien es experto en redes que me lo explique jeje

Etiquetado , , , , , ,