Apr
16
2010

Share Internet using Fedora – NAT like a gateway to outside access

Muchos, creo yo, querrán compartir la salida a Internet con alguna pequeña subred que posean en su casa (1 o más equipos), y eso es lo que hace un router, aquí detallaré los pasos seguidos con Fedora para dejarlo como router.

Para efectos que se entienda este ejemplo, tengan en cuenta que el PC tiene dos tarjetas de red, eth0 que esta conectada a Internet y que esta configurada como dhcp-client , ip fija, red de marcado, etc… y eth1 que tiene IP fija 192.168.0.1 por la que convidaremos Internet a la subred.

Ahora puede que adquieran Internet por la wlan0 y enruten hacia eth0 o cualquier otra combinación, de ser así solo deben prestar atención a que cambiar según el ejemplo.

Cambiando los parámetros del Kernel para que enrute

No te asustes, aquí no compilaras el kernel ni nada por el estilo, simplemente, en el archivo /etc/sysctl.conf hay que modificar la linea de forward para que quede así:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Con esto hacemos que los paquetes se redireccionen, si no hubiera firewall y configuraramos los equipos clientes a mano, con éste cambio ya estaríamos ruteando, pero la idea es tener protección e IP (dns, y demases) automagicamente, para ello se hacen los próximos pasos.

En todo caso, eso es válido desde que se reinicie el equipo en adelante, antes de eso, hay que activar el ruteo a mano

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

Si agregamos a esto las reglas de salida del firewall (en iptables) ya estaremos ruteando, pero tendríamos que configurar las IP, DNS, Puera de Enlace y Mascara de red, para hacer esto automáticamente configuraremos el servidor DHCP.

Instalar y configurar DHCP

DHCP es el servicio que permite asignar dinámicamente la configuración de red a los equipos clientes, es decir, al enchufar un equipo a la red, este automáticamente quedará configurado para navegar en ella.

La instalación bajo Fedora (y similares) es ejecutando (como root) los comandos:

yum -y install dhcp
/sbin/chkconfig dhcpd on
/sbin/service dhcpd start

Los que instalan, dejan el servicio activo de forma predeterminada y arranca el demonio dhcp (es mejor si arrancamos el demonio una vez modificados los próximos dos archivos).

Una vez instalado, creamos (o editamos) el archivo /etc/dhcpd.conf de la siguiente manera:

# DHCP Server Configuration file.
#
# authoritative - La configuración correcta es la definida en el
# servidor DHCP.
# Esto reescribiría cualquier configuración previa del cliente.
authoritative;
#
# ddns-updates - Activa la actualización DNS mediante los valores
# asignados por DHCP.
ddns-updates on;
#
# ddns-update-style - Define el método de actualización automática
# de los DNS.
ddns-update-style ad-hoc;
# mi red interna es 192.168.0.0/24
subnet 192.168.0.0 netmask 255.255.255.0 {
# mi gateway, puerta de enlace, ip del pc
option routers 192.168.0.1;
# la mascara de red...
option subnet-mask 255.255.255.0;
# la ip del DNS que compartira,
# en caso de ser mas de una se separan con ,
option domain-name-servers 216.155.73.40, 200.75.0.4;
# servidor de tiempo
option ntp-servers 200.54.149.19; # ntp.shoa.cl
# el rango de IP que dara
range dynamic-bootp 192.168.0.8 192.168.0.254;
# si existe un servidor WINS para autentificar clientes Windows
# option netbios-name-servers 192.168.0.100;
# Los tiempos
default-lease-time 21600;
max-lease-time 43200;
}

Finalmente, editaremos /etc/sysconfig/dhcpd en donde seleccionamos el dispositivo de red que dará usará nuestro servidor.

DHCPDARGS=eth1

Agregando el servidor DHCP y reglas de ruteo a IPTABLES

El paso de agregar los puertos 67 y 68 como puertos aceptados es indispensable, sino nuestro firewall rechazara las peticiones de los clientes.

Para configurar estos puertos se edita el archivo /etc/sysconfig/iptables, en el cual agregaremos la tabla nat (Network Address Translation) que es la que nos quedará ruteando y los puertos antes mencionados, con ello nuestro archivo queda mas o menos como este:

# NAT
*nat :P REROUTING ACCEPT [50:2998] :P OSTROUTING ACCEPT [3:228]
:OUTPUT ACCEPT [4:312]
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE
-A POSTROUTING -s 192.186.0.0/255.255.255.0 -j MASQUERADE
COMMIT
# FILTROS
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 67 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 68 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Mucho se ha discutido acerca de algunas reglas “magicas” predeterminadas de iptables en RedHat, CentOS y Fedora, que tiene abierto los puertos 50, 51, 631 y el puerto 5353 para el servidor 224.0.0.251, pero en pocas palabras son para dejar abiertos los servicios de IPSEC (50-51), CUPS (631) y DAAP de iTunes (5353), si no quieres tener todo eso borra dichas reglas y listo. En todo caso, las de CUPS (servicio de impresión) tal ves más que borrar sea bueno solo permitas que funcione desde la red interna.

Luego lo único que nos queda es reiniciar iptables, antes de ello muchos recomiendan borrar las tablas que están en ejecución.

iptables -F
/etc/init.d/iptables stop
/etc/init.d/iptables start

Referencia: Es post corresponde a una copia del originalproveniente del proyecto fedora chile, no ha sido reproducido por mi parte, espero tener un tiempo para probarlo.

http://www.proyectofedora.cl/2009/07/compartiendo-internet-desde-fedora/

Written by doutdex in: Fedora,Linux | Tags: ,

2 Comments »

RSS feed for comments on this post. TrackBack URL


Leave a Reply

%d bloggers like this: