Compartir conexión a internet en linux (compatible con Windows XP)

Compartir conexión a internet en linux (compatible con Windows XP)

Muchas veces tenemos en casa más de un PC que accede a través del nuestro a internet con la conexión compartida de windows xp, y queremos hacer lo mismo con linux para que los demás puedan seguir conectandose a internet mientras usemos linux.

Doy por supuesto que ya teneis configurado los 2 dispositivos de red, uno conectado a la red local y otro a internet (para el ejemplo supondremos que nuestro pc tiene en la red local la ip 192.168.0.1 y mascara de subred 255.255.255.0)
La mejor manera es crear un script que se cargue al iniciar el sistema y que configure las reglas de iptables, que es un firewall integrado en el kernel que también permite el enroutamiento de conexiones.

Tenemos que hacer lo siguiente:

1.- Creamos un nuevo archivo que vamos a editar:


$ sudo gedit /etc/init.d/iptablesconf

2.- Ahora copiamos y pegamos el siguiente script en el editor de texto, sólo tenemos que modificar las 5 cadenas que están en negrita, donde pone eth1 y eth0 lo revisaremos para ver si efectivamente eth1 y eth0 son nuestros dispositivos de red conectados a internet y a la red local respectivamente.

Lo siguiente es por si queremos redigir cierto puerto a un ordenador de la red (que llamaremos pc2) local para que pueda por ejemplo usar el emule o tener activo un servidor ftp, etc.. , se supone que en el ejemplo redirigiremos en puerto 7778 tcp y 7779 udp al pc con la ip 192.168.0.2

Si no estamos interesados en redirigir puertos podemos borrar/comentar esas 3 variables.

#### SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/bash

# Dispositivo de red de internet
EXIF="eth1"
# Dispositivo de red local
INIF="eth0"

# Puertos tcp que se desean redirigir (separados por espacios)
puertosTCP="7778"
# Puertos udp que se desean redirigir (separados por espacios)
puertosUDP="7779"
# ip a la que se le redirigen los puertos
pc2="192.168.0.2"

fail=0

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

log_begin_msg "Aplicando Reglas de Firewall..."

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT ACCEPT || fail=1
iptables -P OUTPUT ACCEPT || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1

# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1
# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1

# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1
# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state --state RELATED,ESTABLISHED -j ACCEPT || fail=1

##Se redirigen los puertos configurados arriba

for puerto in $puertosTCP
do
iptables -A FORWARD -i $EXIF -o $INIF -p tcp --dport $puerto -j ACCEPT || fail=1
iptables -t nat -A PREROUTING -i $EXIF -p tcp --dport $puerto -j DNAT --to $pc2:$puerto || fail=1
done

for puerto in $puertosUDP
do
iptables -A FORWARD -i $EXIF -o $INIF -p udp --dport $puerto -j ACCEPT || fail=1
iptables -t nat -A PREROUTING -i $EXIF -p udp --dport $puerto -j DNAT --to $pc2:$puerto || fail=1
done

# Se muestran los resultados
log_end_msg $fail

if [ $fail -eq 0 ]
then
log_success_msg "Verifique que lo que se aplica con: iptables -L -n."
else
log_warning_msg "Se ha producido un error al aplicar alguna de las reglas"
fi

#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####

3.- Guardamos los cambios y le damos permisos de ejecucion:

$ sudo chmod -v 755 /etc/init.d/iptablesconf
el modo de «iptablesconf» cambia a 0755 (rwxr-xr-x)

Lo ejecutamos:

$ sudo /etc/init.d/iptablesconf


si todo ha ido bien veremos este mensaje:
* Aplicando Reglas de Firewall... [ ok ]
* Verifique la reglas: iptables -L -n.
Ahora utilizamos el siguiente comando para que script se cargue cada vez que arranque el sistema:

$ sudo update-rc.d iptablesconf start 20 2 .


#### ATENCIÓN AL PUNTO DEL FINAL, HAY QUE PONERLO ####

Adding system startup for /etc/init.d/iptablesconf ...
/etc/rc2.d/S20iptablesconf -> ../init.d/iptablesconf

4.- Ahora podemos probar si todo funciona, nos vamos a los otros PCs y configuramos la red con ips estaticas (por ej 192.168.0.2 , 192.168.0.3 , etc..) y su correspondiente mascara de subred (255.255.255.0 para el ejemplo) utilizamos como puerta de enlace el pc que comparte la conexión (192.168.0.1 en el ejemplo) y como servidores dns utilizamos los mismos que tenga configurados el pc que da acceso a internet, que podemos verlos utilizando

$ cat /etc/resolv.conf

Ahora si todo ha ido bien debería funcionar internet en los otros PCs una vez configurados.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

¿Y si es wifi la red interna?

En el caso de que la red interna se conecte a través de tarjetas inalámbricas ¿habría alguna variación en cuanto al script o al proceso en general?

Gracias.

No problema!

Mira, la wifi se comparta como una red local, siempre y cuando estes conectado.

Lo he hecho y me ha funcionado.

DIGANME QUE ESTA MAL POR FAVOR :( DNAT forward dport 80....:(

por favor diganem que esta mal:/ de este script no funciona el forward de direcciones del puerto 80:(.....
#!/bin/sh
echo -n Aplicando Reglas de Firewall
##FLUSH
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -t nat -F
##Politica por defecto
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -P PREROUTING ACCEPT
sudo iptables -t nat -P POSTROUTING ACCEPT

#REDIRECCIONES eth0= internet, eth1= local
#todo lo que venga del exterior y vaya al puerto 80 lo redirigimos a una maquina interna
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.2:80
#Acceso de redlocal al exterior
sudo iptables -A FORWARD -s 192.168.0.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Squid: Seguro, rápido, sencillo

Instalando Squid (proxy server) y configurándolo (cambiando una única línea del fichero /etc/squid/squid.conf) para que sólo las ip's de nuestra LAN permitan cruzar el proxy.

Ésto hace que sea seguro puesto que sólo permites a tus ip´s salir a internet. En fin, sin complicaciones.

¿COMO COMPARTO INTERNET EN UBUNTO?

Hola amigos, por favor quisiera saber cuales son los pasos para compartir internet en una LAN con 21 computadoras, una de ellas le instalado el Linux Ubuntu; y tengo 2 tarjetas de red instalado por una de ellas entra mi linea de internet y por la otra quiero que salga al resto de las computadoras; quisiera una ayuda paso por paso porque recien estoy aprendiendo linux ubuntu. Enviar una respuesta al pdextre03@hotmail.com
Espero su apoyo gracias.

RJ45 ..

en win xp ocupu un cable cruzado para poder tener el otro pc con internet..
aqui en linux para dar internet cual ocupo.. uno punto a punto o el mismo cruzado..
por que intentado y no me resulta para nada..
si alguien es amable en ayudr.. aqui dejo mi msn
subcool_69@hotmail.com

saludos!

Salida de iptables -L -n

Hola.
Gracias a este post pude resolver un problema que tenia en mi casa, porque tengo internet con un equipo con Windows 2000 y Xubuntu, con el que comparto internet a otro equipo con Windows 98.

Pero no se porque... ahora quise hacerlo de nuevo, y no me sale.

Segun los pasos, esta todo OK.
Pero no consigo que el segundo PC tenga internet.

Al poner:
iptables -L -n

Me da el siguiente resultado:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy DROP)
target prot opt source - destination
ACCEPT all -- 0.0.0.0/0 - 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 - 0.0.0.0/0 - state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 - 0.0.0.0/0 - tcp dpt:7778
ACCEPT udp -- 0.0.0.0/0 - 0.0.0.0/0 - udp dpt:7779

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

No se mucho, no se como interpretar la tabla que me muestra
Pero me imagino que esos "0.0.0.0/0" no deberian salir
y en vez de eso deberia salir en alguna parte el 192.168.0.1, 192.168.0.2, mi IP actual... etc.

Ojala me puedan ayudar, gracias

No se si habrá influido en algo el que haya instalado squid, como decian aqui, pero no lo pude hacer funcionar, y prefiero hacerlo "a mano" y tratar de aprender como funciona, en vez de que un programa me lo haga todo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.