Veamos, en muchos tutoriales de internet podemos ver fácilmente como compartir internet con otros equipos usando sistemas Linux
Lo que ocurre es que la mayoría de las veces está orientado a sistemas con interfaz gráfica, y claro está, si estás usando un sistema sin las X, como Ubuntu Server pues te encontrarás que no puedes seguir esos tutos, caso a parte, no siempre sabes que cambios se están haciendo a nivel de configuración...
Bueno, en esta entrada intentaré explicar de forma breve la configuración básica de un sistema para:
-Funcionar como un router. (incluso como repetidor sin necesidad de que el router desde el que viene la señal soporte wds )
-Crear una red local.
-Compartir internet.
-Asignar ips y DNS de forma automática al resto de pcs.
Nota: Hay distribuciones especiales de linux para hacer función de router o proxy, como "Router Linux" o "Freesco" y que pueden andar sin instalación desde un live-CD pero aquí no los usaremos, ya que buscamos usar el sistema que tenemos instalado.
Requisitos:
-Necesitamos al menos 2 interfaz de red, ya que por una nos comunicaremos con el exterior, (internet) y con la otra nos comunicaremos con el resto de pc's.
Pueden ser tarjetas de red Ethernet o Wifi.
-Iptables, que sirve para administrar conexiones y aplicar reglas. (cualquier versión del kernel igual o superior a la 2.6 serviría ya que lo trae por defecto)
-dnsmasq, que nos servirá para asignar ips y dns de forma automática al resto de máquinas que lo soliciten.
Bueno, partiremos de que ya tendremos configurada la conexión a internet en la máquina en la que estamos trabajando de acuerdo a los requisitos de nuestro proveedor.
Encendemos el server y nos logueamos.
Imaginemos que tenemos conectado el servidor a un moden por cable de red, y que tenemos otra tarjeta libre.
Serían Eth0 y Eth1 respectivamente.
Para empezar tenemos que echar un vistazo al archivo /etc/network/interfaces y editar lo que nos haga falta.
En este caso el contenido el el siguiente:
Esto quiere decir que tenemos configurado la tarjeta de red eth0 para obtener ip por dhcp, pero no hay menciones para eth1, así que lo pondremos nosotros, pero lo haremos de forma manual ya que lo que estamos haciendo es crear una red con esa interfaz.
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
La configuración quedaría así:
Ip de la máquina es 192.168.0.1
La máscara de red es 255.255.255.0
Y la dirección de difusión es la 192.168.0.255
Con eso ya hemos configurado nuestra tarjeta para que coja esos valores.
Pero para que sean efectivos ahora mismo hemos de reiniciar el servicio de red.
Ahora hay que activar ip_forward para que nuestro server no ignore los paquetes que no vayan destinado a si mismo, ya que pueden ser paquetes para otros equipos y esto haría que esos equipos no obtuviesen respuesta del exterior.
Para activarlo podemos hacerlo de dos formas:
1.-Provisionalmente (Se pierde al reiniciar):
2.-De manera permanente:
Nota: también se puede añadir a un script que explicaré más abajo
Editando el archivo /etc/sysctl.conf
Y descomentando la linea:
Descomentar es quitar la "#" de manera que quede así:
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
Bien, ya nos queda menos, ahora vamos a activar NAT para que los equipos que estén conectados a nuestro server puedan salir a internet mediante la ip del server.
Digamos que lo que hace nat es como una bifurcación de los datos entre redes.
Para esto usaremos iptables con el siguiente comando:
Voy a intentar explicarlo:
Iptables es el comando para modificar las reglas.
-t Es para especificar el tipo de tabla a la que van dirigidas las reglas.
nat Es el tipo de tabla.
-A Añade la regla a las ya existentes.
POSTROUTING Modifica los paquetes justo antes de reenviarlos a las máquinas correspondientes
-o Sirve para especificar hacia que tarjeta van redirigidos los paquetes.
eth0 Es nuestra tarjeta conectada a internet.
-j Especifica hacia donde se aplican las reglas
MASQUERADE Indica el enmascaramiento ip.
Traducido, que todo lo que entre a nuestro pc por el puerto que no sea eth0 se enmascara para reenviarlo a la tarjeta eth0
XD
Esta regla solo se aplica en esta sesión, cuando reiniciemos se desactivará.
(Ya la haremos permanente si nos funciona bien)
Pues desde ya, cualquier pc conectado a nustra tarjeta eth1 tendría acceso a internet, pero lo que pasa es que tendríamos que configurar las direciones ip y las dns a mano, puesto que no tenemos activo dhcp, pero eso lo podemos arreglar con el programa dnsmasq
Así que lo instalamos si no lo hemos hecho ya.
Ahora cambiamos la configuración:
Buscamos las lineas siguientes y las modificamos para que queden así:
Unas hay que descomentarlas y otras cambiar los valores.
Presionamos Ctrl+o para guardar (confirmamos presionando enter)
y Ctrl+x para cerrar.
Reiniciamos el servicio con:
Y ahora sí, cualquier pc conectado a ese puerto obtendrá ip, dns y acceso a internet.
Si queremos conectar muchos pc's podmos colocar un hub, de manera que multiplico por 4 u 8 los puertos de red y todos los pc's tendrían el mismo trato, sus propias ips, dns y acceso a internet.
Bueno, si nos funciona podemos dejar fija la reglas existentes de iptables así:
Creamos un script que contenga la regla:
Introducimos los parámetros:
Nota:Si activaste ip_fordward de manera permanente no es necesario hacerlo de nuevo.
Guardas el archivo y lo cierras.
Le damos permiso de ejecución y exclusividad para root:
Ahora solo tendríamos que añadir una linea nueva al final del archivo /etc/init.d/rc.local para que ejecute el script al inicio:
Os movéis hasta el final del archivo y poneis la ruta del script que hemos creado.
En mi caso es:
Guardar y cerrar
Pues listo.
Si lo que queréis es compartir internet por wifi podemos hacerlo así:
Volvemos a editar el archivo /etc/network/interfaces
En este caso el cambio sería el siguiente:
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
Reiniciamos la configuración de red:
Con eso el resto de pc's podrán ver un nuevo punto de acceso wifi al que pueden
acceder para tener internet.
El problema es que este tipo de configuración es equipo a equipo, y no se pueden
conectar más de un pc al mismo tiempo al punto de acceso creado.
Una de las fuentes que visité:
http://crysol.org/es/router-casero
Lo que ocurre es que la mayoría de las veces está orientado a sistemas con interfaz gráfica, y claro está, si estás usando un sistema sin las X, como Ubuntu Server pues te encontrarás que no puedes seguir esos tutos, caso a parte, no siempre sabes que cambios se están haciendo a nivel de configuración...
Bueno, en esta entrada intentaré explicar de forma breve la configuración básica de un sistema para:
-Funcionar como un router. (incluso como repetidor sin necesidad de que el router desde el que viene la señal soporte wds )
-Crear una red local.
-Compartir internet.
-Asignar ips y DNS de forma automática al resto de pcs.
Nota: Hay distribuciones especiales de linux para hacer función de router o proxy, como "Router Linux" o "Freesco" y que pueden andar sin instalación desde un live-CD pero aquí no los usaremos, ya que buscamos usar el sistema que tenemos instalado.
Requisitos:
-Necesitamos al menos 2 interfaz de red, ya que por una nos comunicaremos con el exterior, (internet) y con la otra nos comunicaremos con el resto de pc's.
Pueden ser tarjetas de red Ethernet o Wifi.
-Iptables, que sirve para administrar conexiones y aplicar reglas. (cualquier versión del kernel igual o superior a la 2.6 serviría ya que lo trae por defecto)
-dnsmasq, que nos servirá para asignar ips y dns de forma automática al resto de máquinas que lo soliciten.
Bueno, partiremos de que ya tendremos configurada la conexión a internet en la máquina en la que estamos trabajando de acuerdo a los requisitos de nuestro proveedor.
Encendemos el server y nos logueamos.
Imaginemos que tenemos conectado el servidor a un moden por cable de red, y que tenemos otra tarjeta libre.
Serían Eth0 y Eth1 respectivamente.
Para empezar tenemos que echar un vistazo al archivo /etc/network/interfaces y editar lo que nos haga falta.
Código: [Seleccionar]
sudo nano /etc/network/interfaces
En este caso el contenido el el siguiente:
Código: [Seleccionar]
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Esto quiere decir que tenemos configurado la tarjeta de red eth0 para obtener ip por dhcp, pero no hay menciones para eth1, así que lo pondremos nosotros, pero lo haremos de forma manual ya que lo que estamos haciendo es crear una red con esa interfaz.
Código: [Seleccionar]
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
La configuración quedaría así:
Ip de la máquina es 192.168.0.1
La máscara de red es 255.255.255.0
Y la dirección de difusión es la 192.168.0.255
Con eso ya hemos configurado nuestra tarjeta para que coja esos valores.
Pero para que sean efectivos ahora mismo hemos de reiniciar el servicio de red.
Código: [Seleccionar]
sudo /etc/init.d/netwoking restart
Ahora hay que activar ip_forward para que nuestro server no ignore los paquetes que no vayan destinado a si mismo, ya que pueden ser paquetes para otros equipos y esto haría que esos equipos no obtuviesen respuesta del exterior.
Para activarlo podemos hacerlo de dos formas:
1.-Provisionalmente (Se pierde al reiniciar):
Código: [Seleccionar]
echo 1 > /proc/sys/net/ipv4/ip_forward
2.-De manera permanente:
Nota: también se puede añadir a un script que explicaré más abajo
Editando el archivo /etc/sysctl.conf
Código: [Seleccionar]
sudo nano /etc/sysctl.conf
Y descomentando la linea:
Código: [Seleccionar]
#net.ipv4.ip_forward=1
Descomentar es quitar la "#" de manera que quede así:
Código: [Seleccionar]
net.ipv4.ip_forward=1
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
Bien, ya nos queda menos, ahora vamos a activar NAT para que los equipos que estén conectados a nuestro server puedan salir a internet mediante la ip del server.
Digamos que lo que hace nat es como una bifurcación de los datos entre redes.
Para esto usaremos iptables con el siguiente comando:
Código: [Seleccionar]
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Voy a intentar explicarlo:
Iptables es el comando para modificar las reglas.
-t Es para especificar el tipo de tabla a la que van dirigidas las reglas.
nat Es el tipo de tabla.
-A Añade la regla a las ya existentes.
POSTROUTING Modifica los paquetes justo antes de reenviarlos a las máquinas correspondientes
-o Sirve para especificar hacia que tarjeta van redirigidos los paquetes.
eth0 Es nuestra tarjeta conectada a internet.
-j Especifica hacia donde se aplican las reglas
MASQUERADE Indica el enmascaramiento ip.
Traducido, que todo lo que entre a nuestro pc por el puerto que no sea eth0 se enmascara para reenviarlo a la tarjeta eth0
XD
Esta regla solo se aplica en esta sesión, cuando reiniciemos se desactivará.
(Ya la haremos permanente si nos funciona bien)
Pues desde ya, cualquier pc conectado a nustra tarjeta eth1 tendría acceso a internet, pero lo que pasa es que tendríamos que configurar las direciones ip y las dns a mano, puesto que no tenemos activo dhcp, pero eso lo podemos arreglar con el programa dnsmasq
Así que lo instalamos si no lo hemos hecho ya.
Código: [Seleccionar]
sudo apt-get install dnsmasq
Ahora cambiamos la configuración:
Código: [Seleccionar]
sudo nano /etc/dnsmasq.conf
Buscamos las lineas siguientes y las modificamos para que queden así:
Código: [Seleccionar]
listen-address=192.168.0.1
bind-interfaces
dhcp-range=192.168.0.2,192.168.0.254,12h
Unas hay que descomentarlas y otras cambiar los valores.
Presionamos Ctrl+o para guardar (confirmamos presionando enter)
y Ctrl+x para cerrar.
Reiniciamos el servicio con:
Código: [Seleccionar]
sudo /etc/init.d/dnsmasq restart
Y ahora sí, cualquier pc conectado a ese puerto obtendrá ip, dns y acceso a internet.
Si queremos conectar muchos pc's podmos colocar un hub, de manera que multiplico por 4 u 8 los puertos de red y todos los pc's tendrían el mismo trato, sus propias ips, dns y acceso a internet.
Bueno, si nos funciona podemos dejar fija la reglas existentes de iptables así:
Creamos un script que contenga la regla:
Código: [Seleccionar]
sudo nano firewall.sh
Introducimos los parámetros:
Código: [Seleccionar]
#!/bin/sh
#Regla de iptables para canalizar
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Activación de ip_fordward
echo 1 > /proc/sys/net/ipv4/ip_forward
Nota:Si activaste ip_fordward de manera permanente no es necesario hacerlo de nuevo.
Guardas el archivo y lo cierras.
Le damos permiso de ejecución y exclusividad para root:
Código: [Seleccionar]
sudo chmod 700 firewall.sh
sudo chown root:root firewall.sh
Ahora solo tendríamos que añadir una linea nueva al final del archivo /etc/init.d/rc.local para que ejecute el script al inicio:
Código: [Seleccionar]
sudo nano /etc/init.d/rc.local
Os movéis hasta el final del archivo y poneis la ruta del script que hemos creado.
En mi caso es:
Código: [Seleccionar]
/etc/firewall.sh
Guardar y cerrar
Pues listo.
Si lo que queréis es compartir internet por wifi podemos hacerlo así:
Volvemos a editar el archivo /etc/network/interfaces
sudo nano /etc/network/interfaces
En este caso el cambio sería el siguiente:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
wireless_essid "nombre de tu red wifi"
wireless_channel 6
wireless_mode ad hoc
#
# Para usar claves con texto o en hexadecimal descomentar una de las lineas:
#wireless_key s:claveweptexto
wireless_key 0123456789
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.
Reiniciamos la configuración de red:
sudo /etc/init.d/netwoking restart
Con eso el resto de pc's podrán ver un nuevo punto de acceso wifi al que pueden
acceder para tener internet.
El problema es que este tipo de configuración es equipo a equipo, y no se pueden
conectar más de un pc al mismo tiempo al punto de acceso creado.
Una de las fuentes que visité:
http://crysol.org/es/router-casero