En un post anterior escribimos un tutorial para compartir la conexión a internet mediante Firestarter,  ahora quisiera lograr lo mismo pero sin tener que instalar nada, solo con comandos en la consola.

Antes trataré de hacer una introducción para saber de que estamos hablando. Supongamos que tenemos contratada una conexión a internet, tenemos nuestra máquina con Ubuntu (supongo que con cualquier distribución debería funcionar) conectada directamente a internet y queremos darle el servicio a otras máquinas, con caulquier sistema operativo, que deberán conectada en red con esta, para ello necesitamos que nuestro Ubuntu realice las siguientes tareas

  1. Tenga configuradas dos interfaces, una conectada a internet y otra a la red interna (pueden ser dos interfaces físicas o solo una, con un alias).
  2. Habilitar NAT.
  3. Habilitar el ruteo de paquetes.

Luego en los clientes debemos configurar las interfaces de red con los siguiente datos

  1. Dirección IP y máscara de red.
  2. Dirección del gateway.
  3. Dirección servidor DNS.

Procedamos a configurar nuestro gateway de internet (Ubuntu).

  • Configuración de las interfaces

Antes que nada, listaremos las interfaces de red en el equipo que hará de gateway.

ifconfig

Nos arrojará algo así

eth0 Link encap:Ethernet  direcciónHW 00:08:54:d5:b6:15
dirección inet6: fe80::208:54ff:fed5:b615/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:9
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)
Interrupción:18 Dirección base: 0xa000

eth1 Link encap:Ethernet  direcciónHW 00:14:85:d1:56:f1
dirección inet6: fe80::214:85ff:fed1:56f1/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:213659 errors:0 dropped:0 overruns:0 frame:0
TX packets:86905 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:97185066 (97.1 MB)  TX bytes:35852528 (35.8 MB)
Interrupción:20 Dirección base: 0x8000

lo Link encap:Bucle local
inet dirección:127.0.0.1  Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO  MTU:16436  Métrica:1
RX packets:280 errors:0 dropped:0 overruns:0 frame:0
TX packets:280 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:11104 (11.1 KB)  TX bytes:11104 (11.1 KB)

ppp0 Link encap:Protocolo punto a punto
inet dirección:201.234.173.139  P-t-P:201.234.173.3  Máscara:255.255.255.255
ARRIBA PUNTO A PUNTO CORRIENDO NOARP MULTICAST  MTU:1492  Métrica:1
RX packets:90905 errors:0 dropped:0 overruns:0 frame:0
TX packets:86416 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:3
RX bytes:84076601 (84.0 MB)  TX bytes:33574174 (33.5 MB)

En donde eth0, eth1, lo y ppp0 son las interfaces de red, en mi caso ppp0 es la que está conectada a internet y eth1 la que proveería de internet a las demás máquinas (red interna). Puede ser que este no sea el caso de todos, podría darse que eth0 sea la interfaz conectada a internet o eth1, todo dependerá con que tipo de conexión cuentes. Debo aclarar que eth0 y ppp0 es la misma interfaz física (placa de red), mientras que eth1 es otra placa de red. Como ppp0 ya está configurada solo deberemos configurar eth1 asignándole una dirección IP (de la red interna) y una máscara de red, todo eso con el siguiente comando:

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

Podemos ver que le hemos asignado la IP 192.168.0.1 con máscara 255.255.255.0, esa dirección deber pertenecer a la red donde estarán conectadas los clientes, de manera que estos deberán tener una dirección del tipo 192.168.0.X (2 < X < 254) con la misma máscara.

Si no contáramos con dos placas de red podemos crear un alias nuestra interfase eth0, eso lo hacemos con en siguiente comando

sudo ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0

  • Habilitando NAT

Lo haremos con 3 comandos, siempre respetando como hemos configurado nuestras interfaces. Para nuestro caso sería:

sudo iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.0.0/24 -m state –state NEW -j ACCEPT
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

  • Habilitando ruteo

Lo haremos con un simple comando

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

  • Configurando los clientes

Cada cliente deberá ser configurado con una direccion IP perteneciente a la red interna de la forma 192.168.0.X, con gateway (puerta de enlace) 192.168.0.1 y con el servidor DNS que nos proporcione nuestro proovedor. Si no lo sabemos, podemos conocerlo haciendo en la maquina conectada a internet:

cat /etc/resolv.conf

Dicho comando nos arrojará algo así

# Generated by NetworkManager
nameserver 201.234.173.3
nameserver 200.55.20.52

Donde esas dos direcciones son los servidores DNS.

Todos estos comandos deben ser reaplicados cada vez que se reinicie la PC, por eso no estaría de más crear un script como el siguiente que realice todo esto de una sola vez,

#Configuramos interfaz de la red interna

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

#Habilitamos NAT

iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.100.0/24 -m state –state NEW -j ACCEPT

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

#Habilitamos ruteo de paquetes

echo 1 > /proc/sys/net/ipv4/ip_forward

Guardamos como un archivo de texto en nuestro home con el nombre “compartir” y lo ejecutamos de la siguiente manera.

sudo sh compartir

Espero te funcione. Saludos.


Anuncios