Chatear en RedIrc

sábado, 16 de abril de 2016

Hacer de router y compartir Internet en Linux

Redes de ordenadores

Un router o enrutador de paquetes como su nombre se deduce encamina los paquetes de red a otro enrutador o maquina por la ruta mas apropiada según la tabla de encaminamiento y teniendo en cuenta el origen y destino del paquete.

En Linux podemos hacer uso de Netfilter para hacer las funciones de un enrutador mediante la traducción de direcciones de IP (NAT) y el reenvió de paquetes por IP (IP_FORWARD) , para ello se deben de dar 2 reglas para que funcione:
  1. Debe haber al menos 2 interfaces de red
  2. Deben estar en distintas redes cada interfaz
Vamos a crear un ejemplo de enrutamiento básico y compartir Internet a un dispositivo de red  eth1 suponiendo que la red anfitrión se encuentra en la red 192.168.0.0/24 definimos una red distinta a esta, por ejemplo definiremos a los clientes nuevos ip's en la red 10.42.0.0/24, añadimos lo siguiente al archivo /etc/network/interfaces:
auto eth1
    iface eth1 inet static
    address 10.42.0.1
    netmask 255.255.255.0
    gateway 10.42.0.1
    dns-nameservers 8.8.8.8
Evitamos que NetworkManager use este interfaz ya que es un interfaz estático añadiendo lo siguiente en el archivo /etc/NetworkManager/NetworkManager.conf:
[keyfile]
unmanaged-devices=mac:XX:XX:XX:XX:XX:XX
Donde XX es la mac de eth1. Lo siguiente sería permitir el tráfico a la red en el firewall y enmascararla, para ello añadimos lo siguiente en el archivo /etc/rc.local antes del exit 0:
iptables -I FORWARD -o eth1 -d 10.42.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -s 10.42.0.0/24 ! -d 10.42.0.0/24 -j MASQUERADE
Lo ejecutamos (solo una vez):
sudo /etc/rc.local
Lo que hicimos en la primera regla en aceptar las conexiones pendientes o ya establecidas que pasan por el interfaz de red. Con MASQUERADE estamos enmascarando a la nueva red para permitir la conexión a Internet.

Activamos el reenvió de IP para que actué como un enrutador de paquetes, para ello ejecutamos lo siguiente:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Por último instalamos dnsmasq para ofrecer los datos de red a los clientes que conecten por el interfaz eth1 automáticamente vía DHCP:
sudo apt install dnsmasq
Editamos /etc/dnsmasq.confmodificamos los siguientes parámetros:
# No resuelve del archivo /etc/resolv.conf
no-resolv
# El interfaz de la puerta de enlace que configuramos:
interface=eth1
# Rango de IPs que recibirán los clientes:
dhcp-range=10.42.0.2,10.42.0.254,12h
# DNS a enviar a los clientes
server=8.8.8.8
Recargamos dnsmasq para actualizar los cambios:
sudo service dnsmasq reload
Con estos simple pasos estamos creando una puerta de enlace , podríamos usar un switch de red y conectar los ordenadores que queramos.

No hay comentarios:

Publicar un comentario