Capítulo 4. Direcciones, enrutamiento, transporte y cortafuegos

Tabla de contenidos

1. Introducción a TCP/IPv4
1.1. Tabla de Enrutamiento
1.2. Otros aspectos de configuración de redes en OpenBSD
2. NAT (Network Address Translation)
2.1. Referencias y lecturas recomendadas
3. Cortafuegos: filtrado y túneles
3.1. Referencias y lecturas recomendadas
4. ftp-proxy: para usar ftp desde la red interna
4.1. Referencias y lecturas recomendadas
5. Ejemplo del uso de PF en una DMZ
5.1. Referencias y lecturas recomendadas
6. Control de ancho de banda
6.1. Referencias y lecturas recomendadas

1. Introducción a TCP/IPv4

En una red TCP/IPv4, cada computador tiene como identificación una dirección IP única. Esta dirección consta de 32 bits, y suele escribirse como 4 números/bytes separando unos de otros por punto (cada uno es un número entre 0 y 255), por ejemplo 66.35.250.209. Cómo TCP/IP se diseño para interconectar redes, una dirección IP consta de una parte que identifica de forma única la red y otra que identifica de forma única el computador dentro de la red. Una máscara de red determina que parte identifica la red y cuáles computadores en la red puede denotarse con el número de bits del comienzo de la dirección que identifican la red (e.g 16 si los primeros 16 bits identifican la red) o como otra dirección que al hacer la operación lógica y con la dirección IP dará la dirección de red (por ejemplo 255.255.0.0 es una máscara que indica que los primeros 16 bits de una dirección IP son la dirección de red).

Al diseñar una red debe escogerse una dirección de red junto con la máscara de acuerdo al número de computadores, algunas posibilidades son:

/8 o 255.0.0.0

16777216 computadores

/12 o 255.242.0.0

1048576 computadores

/16 o 255.255.0.0

65536 computadores

/24 o 255.255.255.0

255 computadores

Además la dirección de red que escoja debe ser única para no producir conflictos con otras redes en caso de conectarse a Internet y puede facilitar la interconexión de diversas redes y el enrutamiento al interior de una organización. La labor de asignación de direcciones IP en una red local la puede hacer un administrador de red o puede hacerse dinámicamente con el protocolo DHCP.

Para facilitar la adopción de redes TCP/IPv4 en organizaciones, el RFC 1918 destinó algunas direcciones de red para usar al interior de organizaciones (no puede haber computadores en Internet con esas direcciones):

10.0.0.0 - 10.255.255.255

máscara /8

172.16.0.0 - 172.31.255.255

máscara /12

192.168.0.0 - 192.168.255.255

máscara /16

Por ejemplo en su red local puede emplear direcciones entre 192.168.1.1 y 192.168.1.255 con máscara de red /24 o 255.255.255.0. O en caso de contar con más redes en la misma organización, la segunda con direcciones entre 192.168.2.1 y 192.168.2.255 y así sucesivamente. Además de usar direcciones privadas, se facilita el crecimiento de la infraestructura de redes y la configuración del enrutamiento entre unas y otras.

1.1. Tabla de Enrutamiento

Como se presentó en la descripción de las capas en redes TCP/IP (ver Redes, protocolos e Internet), el protocolo IP mantiene una tabla de enrutamiento que asocia direcciones de red con compuertas, es decir con computadores conectados a la misma red que pueden retransmitir información a la red destino. En una red de área local no es necesario configurarla, pero si se requiere por ejemplo para interconectar varias redes de área local en una misma organización.

Puede ver la tabla de enrutamiento estático en con route -n show o con netstat -r. Entre los campos de cada entrada de esta tabla están: red destino, puerta de enlace, banderas, uso, MTU, interfaz por la cual enviar/recibir paquetes con ese destino,

Hay un destino por defecto (default) al que se envia todo paquete que no tiene un destino en la tabla de enrutamiento. Este destino por defecto o puerta de enlace se configura en el archivo /etc/mygate. En una red local conectada a Internet, el servidor debe emplear como puerta de enlace la que le haya dado el proveedor de Internet, y cada computador de la red local debe emplear la IP del servidor.

De requerirse pueden agregarse compuertas con route add por ejemplo, para agregar una ruta a la red 192.168.2.0/24 usando como compuerta 192.168.1.60 que está en la misma red:

sudo route add 192.168.2/24 192.168.1.60
	 

Y pueden eliminarse de forma análoga con route delete.

Para determinar problemas de enrutamiento o en general de la red, puede emplear algunas herramientas de diagnóstico por ejemplo:

traceroute

Presenta las direcciones de los computadores y enrutadores que transmiten un paquete hasta llegar a su destino. Por ejemplo

traceroute 192.168.2.2
netstat -s

Éste presenta estadísticas sobre IP, ICMP y TCP

arp -an

Que presenta direcciones MAC junto con IPs asociadas

tcpdump

Permite analizar el tráfico de una red TCP/IP. Desde la cuenta root puede usarse este programa para examinar todo el tráfico que circule por una red. Por ejemplo para verificar lo que se transmite por la interfaz re0:

sudo tcpdump -i re0 -n -ttt
	 

1.2. Otros aspectos de configuración de redes en OpenBSD

Fuera de las tablas de enrutamiento y ARP, la funcionalidad de redes a nivel de kernel se puede controlar con:

/etc/hosts

En este archivo se listan nombres asociados a la dirección IP de algunos computadores, por ejemplo:

127.0.0.1       localhost
192.168.1.1    Jesus.miescuela.edu.co Jesus
		 

sysctl

Para configurar algunas variables del kernel relacionadas con redes. Los cambios pueden hacerse permanentes modificando el archivo /etc/sysctl.conf. Resaltamos la variable net.inet.ip.forwarding que debe activarse para que un sistema opere como enrutador.

pf

Que permite controlar el tráfico de paquetes en el kernel y por tanto controlar la funcionalidad de cortafuegos[24]. Se configura de manera permanente en el archivo /etc/pf.conf (o el archivo especificado en la variable pf_rules de rc.conf.local o rc.conf). Para que pf entre en operación en cada arranque del sistema, agregue a rc.conf.local la línea:

pf=""

Una vez esté operando si hace cambios al archivo de configuración puede lograr que reinicie y vuelva a leerlo con:

# sudo pfctl -f /etc/pf.conf
	    

El archivo de configuración /etc/pf.conf tiene una sintaxis bastante entendible que permite definir variables y tablas.

Las secciones de este capítulo explican algunas configuraciones típicas que pueden hacerse con pf y los correspondientes cambios a su archivo de configuración.



[24] Cortafuego del inglés firewall