Compartir conexión a internet (del PC a otro dispositivo)

Cada vez que reinstalo Ubuntu me encuentro con este problema que siempre soluciono buscando un how-to que encontré hace un tiempo, no he conseguido recordar el sitio en el que vi esta solución por primera vez pero ahora he podido dar con ella en ubuntu-es, y la reproduzco adaptándola a configuración.

Muchas veces tenemos en casa más de un dispositivo, en mi caso una PlayStation 3, que accede a internet por la red cableada y con la conexión compartida de windows xp, lo que necesitamos es hacer lo mismo con linux para por seguir conectado mientras uso Ubuntu (que tiempo atrás se convirtio en mi SO por defecto).

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.10.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 eth0 y eth1 lo revisaremos para ver si efectivamente eth0 y eth1 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.10.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=”eth0
# Dispositivo de red local
INIF=”eth1

# 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 la PlayStation 3 y configuramos la red con ips estaticas (por ej 192.168.10.2 , 192.168.10.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.10.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

o bien podemos elegir los servidores dns de esta lista que mantiene bandaancha.st.

Ahora si todo ha ido bien debería funcionar internet en la PlayStation 3.

WTF! Detenido Tux por secuestro en grado de tentativa con su pareja gay

Atención visitantes, si sois usuarios de Linux tener mucho cuidado, Tux anda suelto y quiere descendencia cueste lo que cueste.
Como el Gobierno Chino no permite la adopción entre parejas homosexuales nuestra querida mascota ha decidido tomarse la justicia con su mano y recurrir al vil y cruel secuestro.

Lo vi en la edición gratuita en papel del Diario Crónicas del Sureste el día 1 de Diciembre de 2008, en la sección Techno Ocio (lástima que la edición digital no tenga esta sección), supondré que por eso han elegido la imagen de este despiadado pingüino, fijaros en su aterradora mirada y vigilar a vuestros hijos.

El sentido de la vida, el universo y todo lo demás

Imágen de Guía del autoestopista intergaláctico¡Cuarenta y dos! —exclamó Loonquawl—. ¿Es eso todo lo que tienes que mostrar tras siete millones y medio de años de trabajo?

Lo he comprobado muy minuciosamente —dijo el ordenador—, y ésa es casi definitivamente la respuesta. Creo que el problema, para ser sinceros, es que no habéis sabido nunca cuál es la pregunta.

Las 3 leyes de la robótica

Imágen de Cuentos completos II

  1. Un robot no debe dañar a un ser humano o, por su inacción, dejar que un ser humano sufra daño.
  2. Un robot debe obedecer las órdenes que le son dadas por un ser humano, excepto si estas órdenes entran en conflicto con la Primera Ley.
  3. Un robot debe proteger su propia existencia, hasta donde esta protección no entre en conflicto con la Primera o la Segunda Ley.

Citas

He decidido ir poniendo citas curiosas en el blog, después de pensarlo un poco me ha parecido buena idea extraer una cita de el último libro que haya leído, y como voy atrasado, teniendo en cuenta la fecha en la que me decidí a crear este sitio, publicare las que debo para saldar las deudas.

También es posible que publique alguna otra cita con la que me tropiece.

 

Switch to our mobile site