Compartir conexión inalámbrica via ethernet en GNU/Linux

Nota: Esta entrada fue publicada el 19 feb de 2015 @ 01:23 en un blog que tenía anteriormente en Wordpress, y republicada aquí para el record.


Estaba ayudando a un amigo a instalar Debian en su laptop y resultó que su adaptador de Wi-Fi no tiene drivers libres y, por lo tanto, para instalar Debian Jessie netinst (la única ISO que teníamos a la mano), necesitábamos conectarnos por ethernet. Lamentablemente, nos encontrábamos en uno de los salones de CETYS sin conexión de ethernet (les juro que CETYS tiene conexiones de ethernet en los lugares más inútiles, pero nunca donde los necesitas).

Me puse a buscar cómo compartir mi conexión inalámbrica por medio de ethernet. Askubuntu salió al rescate, pero parece que el "Linux para seres humanos" tiene esta función anormalmente accesible y en Debian tenemos que correr algunos comandos para lograrlo. Lo dejo escrito aquí, porque nunca se sabe cuándo puede ser útil.

Nota: Todos los comandos aquí mostrados deben ejecutarse como administrador.

Primero, en la computadora que va a compartir su red inalámbrica, se deben correr los siguientes comandos:

ifdown eth0
ifconfig eth0 192.168.10.1 netmask 255.255.255.0
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -F FORWARD
iptables -A FORWARD -j ACCEPT
iptables -nvL

Después, si queremos que la computadora servidor funcione como DNS y DHCP, se debe instalar dnsmasq:

apt-get install dnsmasq

y editar el archivo /etc/dnsmasq.conf agregando las siguientes dos líneas:

interface=eth0
dhcp-range=192.168.10.10,192.168.10.19,4h

Por último, reiniciamos dnsmasq:

/etc/init.d/dnsmasq restart

Con esto ya debería funcionar lo que queremos. Sin embargo, si no queremos que el servidor funcione como DNS, podemos simplemente ejecutar los siguientes comandos en el cliente:

ifdown eth0
ifconfig eth0 192.168.10.10 netmask 255.255.255.0 gateway 192.168.10.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Cuando queramos deshacernos de esta funcionalidad, simplemente borramos las líneas que se agregaron (si es que se agregaron) a /etc/dnsmasq.conf y reiniciamos el sistema.