Configuración de una puerta de enlace en Debian GNU/Linux

Anuncio
Configuración de una puerta de enlace en Debian
GNU/Linux
Mario Chirinos Colunga
Aurea, Desarrollo Tecnológico
aurea-dt.com
12 de octubre de 2009
Resumen
Este documento describe como configurar una maquina con Debian/GNU
Linux para utilizarla como puerta de enlace utilizando los servicios DDNS,
DHCP y NAT.
Índice
1. Introducción
1
2. Configuracion de las interfaces
2
3. Configuracion DNS
3
4. Configuracion del servidor DHCP
4
5. Switch
6
6. Enrutador y pared de fuego
7
1.
Introducción
Una puerta de enlace (Gateway) es un punto en la red que funciona como
entrada hacia otra red. La puerta de enlace permite interconectar redes con
protocolos y arquitecturas diferentes a todos los niveles de comunicación. La
puerta de enlace permite dotar a las máquinas de una red local (LAN) de un
acceso hacia una red exterior, generalmente realizando para ello operaciones
de traducción de direcciones IP (NAT: Network Address Translation). Esta capacidad de traducción de direcciones permite enmascarar las direcciones IP (IP
Masquerading), para dar acceso a Internet a los equipos de una red de área local
compartiendo una única conexión a Internet, y por tanto, una única dirección
IP externa.
En este documento se describe como configurar una maquina con Debian/GNU
Linux como puerta de enlace o servidor proxy/NAT. En la configuración se utilizan dos tarjetas de red, un servidor DNS dinámico DCHP y un servidor proxy;
1
Figura 1: Diagrama de red
24-bit Block (/8 prefix, 1 x A)
20-bit Block (/12 prefix, 16 x B)
16-bit Block (/16 prefix, 256 x C)
Inicio
10.0.0.0
172.16.0.0
192.168.0.0
Fin
10.255.255.255
172.31.255.255
192.168.255.255
Direcciones
16,777,216
1,048,576
65,536
Figura 2: Rangos para uso en redes locales asignados por la IANA
El diagrama de conexión de para esta puerta de enlace se muestra en la figura 1.
El documento esta estructurado de la siguiente manera: La sección §1 describe
como configurar las interfaces de red externa e interna de la puerta de enlace; En
la sección §2 se explica como instalar y configurar un servidor DDNS; La sección
§3 explica como instalar y configurar un servidor DHCP; En la sección §4 se
muestra como configurar un enrutador inalámbrico para usarlo como switch y
punto de acceso; Finalmente la sección §5 contiene la configuración para enrutar
paquetes de la red interna a la red externa y ası́ crear la puerta de enlace.
2.
Configuracion de las interfaces
La maquina que servirá como puerta de enlace debe de tener al menos dos
tarjetas de red (NIC) instaladas, una para conectarse a la red exterior (la internet mediante un módem ADLS por ejemplo) y una o mas para la red local. A
cada tarjeta de la red local se le debe asignar una dirección IP que la identifique.
En este documento nos referiremos estas interfaces como: interfaz de red externa
e interfaz de red interna, respectivamente. La IANA (Internet Assigned Numbers Authority) ha reservado las direcciones IP de la figura 2 para uso en redes
locales. Aunque la direccion de red 127.0.0.0/8 esta dentro del área de la clase
A, fue diseñada para funcionar como dispositivo de lazo cerrado (loopback ), por
lo que no puede ser asignada a una red.
Si el equipo que va a ser usado como puerta de enlace no esta conectado
2
# The l o o p b a c k network i n t e r f a c e
auto l o
i f a c e l o i n e t loopback
# I n t e r f a z p r i m a r i a . Conectada a i n t e r n e t .
auto eth0
i f a c e e t h 0 i n e t dhcp
# I n t e r f a z de r e d s e c u n d a r i a . Conectada a l a r e d l o c a l
auto eth1
i f a c e eth1 i n e t s t a t i c
address
192.168.2.1
netmask
255.255.255.0
broadcast
192.168.2.255
network
192.168.2.0
p o s t −up
/ e t c / network / i f −up . d/ m y f i r e w a l l
Figura 3: Archivo de configuración /etc/network/interfaces.
directamente a internet, probablemente el equipo se encuentra dentro de una
red local creada por un módem/enrutador. El enrutador (router) probablemente
ha tomado la dirección 192.168.0.1 o 192.168.1.254 y haya asignado a la interfaz red externa(eth0) alguna otra dirección IP dentro del rango del enrutador,
i.e. 192.168.1.X. Las direcciones X.X.1.0 y X.X.1.255 son reservadas como numero de red (network number) y dirección de transmisión (broadcast address)
respectivamente. La tarjeta de red interna (eth1) estará conectada a la red local mediante un switch o hub. A esta interfase se le asigna manualmente una
dirección IP fija, en el caso de este documento guı́a la dirección IP de la interfaz
eth1, IPeth1 , sera IPeth1 = 192.168.2.1. La configuración de las interfases de
red se encuentra en el archivo /etc/network/interfaces, la figura 3 muestra
como debe ser configuradas las dos interfaces. Despues de cambiar la configuracion la interfaces pueden ser reiniciadas mediante el comando sudo sudo
/etc/init.d/networking restart.
3.
Configuracion DNS
De forma similar a un directorio telefónico un servidor DNS (Domain Name
System) permite buscar a una terminal en la red por su nombre (hostname)
y obtener su dirección IP. Cuando visitamos un sitio web, realmente estamos
accesanso a la dirección IP del servidor web de este sitio, aun que hayamos
introducido el nombre del dominio. En el fondo tu computadora contacta al
servidor DNS para obtener la dirección IP que corresponde al servidor web
del sitio. Es por esto que en la configuración TCP/IP (Transmission Control
Protocol / Internet Protocol) de tu computadora se debe especificar la dirección
IP de uno o dos servidores DNS.
En este documento configuraremos un serviudor DNS para resolver nombres
de dominio dentro de una red local. El servidor DNS mas usado es BIND (Berkeley Internet Name Domain), el cual se obtiene instalando el paquete bind9. La
configuración principal de BIND se encuentra en el archivo: /etc/bind/named.conf
el cual debe incluir al final la linea: include /etc/bind/named.conf.local";.
Esta linea incluye un archivo de cofiguraciones adicionales sin que el archivo de
configuracion principal tenga que ser modificado. El archivo de configuración
incluido es: /etc/bind/named.conf.local, en el se especifican las zonas de
3
//
// Do any l o c a l c o n f i g u r a t i o n h e r e
//
// C o n s i d e r a d d i n g t h e 1918 z o n e s h e r e ,
// o r g a n i z a t i o n
// i n c l u d e ” / e t c / b i n d / z o n e s . r f c 1 9 1 8 ” ;
i f t h e y a r e n o t u s e d i n your
#a l l o w dns u p d a t e s from l o c a l h o s t w i t h key ” rndc−key ”
i n c l u d e ” / e t c / b i n d / r n d c . key ” ;
controls {
i n e t 1 2 7 . 0 . 0 . 1 a l l o w { l o c a l h o s t ; } k e y s { ” rndc−key ” ;
};
#d e f i n e s l a n . aurea
zone ” lan . aurea ” {
type m a s t e r ;
f i l e ”db . l a n . a u r e a ” ;
a l l o w −update { key ” rndc−key ” ;
};
};
};
#d e f i n e s our l o c a l s u b n e t 1 9 2 . 1 6 8 . 2 . 0 / 2 4
z o n e ” 2 . 1 6 8 . 1 9 2 . i n −addr . a r p a ” {
type m a s t e r ;
// n o t i f y no ;
f i l e ”db . 2 . 1 6 8 . 1 9 2 ” ;
a l l o w −update { key ” rndc−key ” ; } ;
};
Figura 4: Archivo de configuración /etc/bind/named.conf.local.
búsqueda directa (zone "lan.aurea") e inversa (zone "2.168.192.in-addr.arpa")
y la localización del archivo de configuración de cada una de estas zonas. La figura 4 muestra el archivo de configuración para la red local 192.168.2.0 y nombre
de dominio lan.aurea.
Los dos archivos de configuracion de las zonas de busqueda /var/cache/bind/db.lan.aurea
y /var/cache/bind/db.2.168.192 se muestran en la figura 5 y 6. El comando
named-checkzone {zonename} {filename} permite verificar si los archivos de
zona estan libres de errores; Con el comando /etc/init.d/bind9 restart se
puede reiniciar el servidor DNS para aplicar los cambios hechos en los archivos
de configuracion. Es nesesario cambiar el propietario del directiorio en donde se
encuentran los achivos de zona para que BIND pueda escribir en ellos; Esto se
realiza con el siguiente comando: chown bind. /var/cache/bind.
4.
Configuracion del servidor DHCP
El servicio DHCP (Dynamic Host Configuration Protocol) permite a los
anfitriones (host) obtener automáticamente la configuración de red desde un
servidor en vez de tener que configurar manualmente cada anfitrión en la red.
Las computadoras configuradas para ser clientes DCHP no tienen control sobre
los ajustes que reciben del servidor DHCP y la configuración es trasparente para
el usuario de la computadora. Para instalar el servidor DHCP se debe contar
con el paquete dhcp3-server, El archivo de configuración DCHP por defecto
es /etc/dhcp3/dhcpd.conf y en el archivo /etc/default/dhcp3-server se
especifica a que interfaces se da servicio DHCP. En la figura 7 se muestra la
configuración básica DHCP para nuestra red local. Para nuestra configuracion
el archivo /etc/default/dhcp3-server debe de contener la linea INTERFACES
4
;
; f o r w a r d Zone f i l e
;
for lan . aurea
$TTL 1h
@ IN SOA ns . l a n . a u r e a .
2009092401
1d
1d
4w
1h
)
@
IN
NS
@
IN
A
@
IN
MX
ns
IN
A
; Time To L i v e
s e r v e r . lan . aurea . (
; serial
; s l a v e r e f r e s h ( 1 day )
; s l a v e r e t r y t i m e i n case o f a problem ( 1 day )
; s l a v e e x p i r a t i o n t i m e ( 4 weeks )
; minimum c a c h i n g t i m e i n case o f f a i l e d l o o k u p s
ns . l a n . a u r e a .
192.168.2.1
10
ns . l a n . a u r e a .
192.168.2.1
Figura 5: Archivo de configuración /var/cache/bind/db.lan.aurea.
;
;
;
r e v e r s e Zone f i l e
for lan . aurea
$TTL 1h
@ IN SOA ns . l a n . a u r e a .
2009092401
1d
1d
4w
1h
)
@
IN
NS
@
IN
A
1
IN
PTR
; Time To L i v e
s e r v e r . lan . aurea . (
; serial
; s l a v e r e f r e s h ( 1 day )
; s l a v e r e t r y t i m e i n case o f a problem ( 1 day )
; s l a v e e x p i r a t i o n t i m e ( 4 weeks )
; minimum c a c h i n g t i m e i n case o f f a i l e d l o o k u p s
ns . l a n . a u r e a .
192.168.2.1
ns . l a n . a u r e a .
Figura 6: Archivo de configuración /var/cache/bind/db.2.168.192.
5
authoritative ;
ddns−update−s t y l e
interim ;
i n c l u d e ” / e t c / b i n d / r n d c . key ” ;
# Use what key i n what zone
zone lan . aurea . {
primary 1 2 7 . 0 . 0 . 1 ;
key ” rndc−key ” ;
}
#Standard DHCP i n f o
o p t i o n domain−name ” l a n . a u r e a ” ;
o p t i o n domain−name−s e r v e r s 1 9 2 . 1 6 8 . 2 . 1 ;
d e f a u l t −l e a s e −t i m e 6 0 0 ;
max−l e a s e −t i m e 7 2 0 0 ;
log−f a c i l i t y l o c a l 7 ;
# DNS z o n e s t o u p d a t e
s u b n e t 1 9 2 . 1 6 8 . 2 . 0 netmask 2 5 5 . 2 5 5 . 2 5 5 . 0 {
range 1 9 2 . 1 6 8 . 2 . 1 0 1 9 2 . 1 6 8 . 2 . 2 0 0 ;
option routers 1 9 2 . 1 6 8 . 2 . 1 ;
z o n e 2 . 1 6 8 . 1 9 2 . i n −addr . a r p a . {
primary 1 9 2 . 1 6 8 . 2 . 1 ;
key ” rndc−key ” ;
}
zone lan . aurea . {
primary 1 9 2 . 1 6 8 . 2 . 1 ;
key ” rndc−key ” ;
}
}
Figura 7: Archivo de configuración /etc/dhcp3/dhcpd.conf.
= .eth1", la cual indica que el servidor DCHP escucha a la interfaz eth1 para
proporcionar el servicio DHCP.
Notas
Al final de la instalación del paquete dhcp3-server se observa un mensaje
de error, esto puede ser confuso pero es normal e irrelevante.
Para aplicar los cambios hechos en los archivos de configuración DHCP se
utiliza el comando /etc/init.d/dhcp3-server restart.
5.
Switch
Para completar la red local necesitamos conectar un switch o un punto de
acceso a la interfaz de red eth1 para poder conectar mas de un anfitrión a la
red, como muestra la figura 1.
Es mas común contar ya con un enrutador inalámbrico que con un switch o
un hub. Los enrutadores pueden ser configurados para funcionar como switch o
punto de acceso. Para esto se debe dejar libre el puerto WAN/Internet y conectar
eth1 a uno de los puertos del entrutador al igual que las demás computadoras
que se conecten a la red local; Desactivar el servicio DHCP; Cambiar la dirección
del enrutador a 192.168.2.2 o alguna otra direccion dentro de la red local
192.168.2.X y desactivar la pared de fuego del entrutador.
6
6.
Enrutador y pared de fuego
Para conectar nuestra red local a internet, necesitamos crear una puerta de
enlace o servidor porxy. Para que el equipo pueda trabajar como una puerta de
enlace y enrutar paquetes desde la red local al exterior y de regreso, se necesita
habilitar la redirección de direcciones IP (IP forwarding), a esto también se
le conoce como NAT (Network Address Translation) o enmascaramiento de IP.
También es necesario crear una pared de fuego, para restringir ciertas conexiones
y ası́ proteger nuestra red.
El guión (script) mostrado en la figura 8 provee de una configuración básica
para no permitir conexiones de entrada hacia eth1, permitir paquetes de salida
desde la red local vı́a eth0 y permitir que las conexiones establecidas regresen.
La palabra ESTABLISHED en la regla que envia paquetes de la red externa
(Internet) a la interna (LAN) limita el trafico de entrada a aquel que es una
respuesta a una conexcion previa mente establecida desde la red interna. La
regla con la palabra MASQUERADE es la que se encarga de realizar la traduccion
o enmascarmamiento de direcciones IP.
Para que el guión de la puerta de enlace se ejecute al iniciar el sistema se
deben:
Colocar el guión en /etc/init.d/gateway.sh.
Cambiar los permisos del archivo para que sea ejecutable desde root, chmod
755 /etc/init.d/gateway.sh.
Crear una liga al archivo desde el directorio de nivel de ejecución dos, ln
-s /etc/init.d/gateway.sh /etc/rc2.d/S95gateway.
Los archivos en /etc/rc2.d/ son nombrados utilizando la convencion: [K|S]+
nn + [string], en donde K = kill, S = start, nn ∈ [1, 2, ..., 99] y string es un
nemónico que identifica la función del archivo; Estos archivos son ejecutados en
orden alfabético y cada archivo es un vinculo simbólico que apunta al un archivo
en el directorio /etc/init.d/.
7
#! / b i n / sh
INTIF=” e t h 1 ”
EXTIF=” e t h 0 ”
echo ” Loading r e q u i r e d s t a t e f u l /NAT k e r n e l modules . . . ”
/ s b i n /depmod −a
/ s b i n / modprobe i p t a b l e s
/ s b i n / modprobe i p c o n n t r a c k
/ s b i n / modprobe i p c o n n t r a c k f t p
/ s b i n / modprobe i p c o n n t r a c k i r c
/ s b i n / modprobe i p t a b l e n a t
/ s b i n / modprobe i p n a t f t p
echo
echo
echo
echo
echo
”
E n a b l i n g IP f o r w a r d i n g . . . ”
”1” > / proc / sys / net / ipv4 / i p f or w a r d
”1” > / proc / sys / net / ipv4 / ip dynaddr
”
E x t e r n a l i n t e r f a c e : $EXTIF”
”
E x t e r n a l i n t e r f a c e IP a d d r e s s
echo ”
Loading proxy s e r v e r
i s : $EXTIP”
rules . . . ”
# C l e a r i n g any e x i s t i n g r u l e s and s e t t i n g d e f a u l t p o l i c y
i p t a b l e s −P INPUT ACCEPT
i p t a b l e s −F INPUT
i p t a b l e s −P OUTPUT ACCEPT
i p t a b l e s −F OUTPUT
i p t a b l e s −P FORWARD DROP
i p t a b l e s −F FORWARD
i p t a b l e s −t n a t −F
# FWD: Allow a l l c o n n e c t i o n s OUT and o n l y e x i s t i n g and r e l a t e d ones IN
i p t a b l e s −A FORWARD − i $EXTIF −o $INTIF −m s t a t e −−s t a t e ESTABLISHED,RELATED −j ACCEPT
i p t a b l e s −A FORWARD − i $INTIF −o $EXTIF −j ACCEPT
# E n a b l i n g SNAT (MASQUERADE) f u n c t i o n a l i t y on $EXTIF
i p t a b l e s −t n a t −A POSTROUTING −o $EXTIF −j MASQUERADE
echo −e ”
Proxy s e r v e r
r u l e l o a d i n g c o m p l e t e \n\n”
Figura 8: Archivo de configuración /etc/init.d/gateway.sh.
8
Descargar