Algunas veces resulta útil dividir una red física (como por ejemplo un segmento Ethernet) en dos segmentos de red separados, sin tener que crear subredes IP y sin utilizar una pasarela para comunicar ambos segmentos. El dispositivo que realiza esta función se denomina “bridge”. Un sistema FreeBSD con dos interfaces de red puede actuar como un “bridge” o puente entre ambas.
El “bridge” funciona de tal forma que aprende las direcciones de la capa MAC (direcciones Ethernet) de los nodos que se encuentran conectados a cada interfaz de red de tal forma que sólo se reenvía tráfico entre los segmentos de red cuando las direcciones fuente y destino se encuentran separadas en segmentos distintos.
En varios aspectos se puede comparar un “bridge” con un “switch” de pocos puertos.
Existen al menos dos situaciones típicas donde se puede utilizar la funcionalidad proporcionada por los “ bridges”.
La primera situación surge cuando nos encontramos con un segmento de red congestionado pero por las razones que sean no queremos subdividir la red e interconectar las nuevas subredes mediante un “route”.
Vamos a considerar un ejemplo de un periódico donde los
departamentos editoriales y de producción utilizan la misma
subred. Los usuarios de la editorial utilizan el servidor
A
como servidor de ficheros y los de
producción utilizan el servidor B
. Se
Se utiliza una red Ethernet para conectar ambos departamentos y se
ha detectado que la alta utilización del enlace está
ralentizando el funcionamiento de la red.
Si los usuarios de la editorial pudieran agregarse en un segmento de red mientras que los usuarios de producción se localizaran en otro se podrían conectar ambos segmentos mediante un “bridge”. Sólo se utilizará el “bridge” para encaminar tráfico de red destinado a interfaces que se encuentren en el otro lado del “bridge”, reduciendo de esta forma la congestión en cada nuevo segmento.
La segunda situación típica se produce cuando se necesita un cortafuegos pero no la Traducción de Direcciones de Red (NAT).
A continuación se muestra un ejemplo. Una pequeña compañía se comunica con su ISP utilizando DSL o ISDN. Dicha compañía posee 13 13 direcciones IP globalmente accesibles delegadas por su ISP y tiene 10 ordenadores en funcionamiento. En esta situación un un cortafuegos basado en un “router” resulta difícil debido a la distribución del espacio de direccionamiento disponible (subnetting).
Un cortafuegos implementado sobre un “bridge” se puede utilizar en el camino de bajado desde el ISP hasta las oficinas de la compañía sin necesidad de tener en cuenta ningún aspecto relacionado con la distribución de las direcciones IP.
Un “bridge” necesita al menos dos tarjetas de red situadas en dos segmentos de red para su funcionamiento. Por desgracia no todas las interfaces de red pueden usarse para el puenteo. Consulte bridge(4), ahín encontrará más información sobre qué tarjetas puede usar.
Por favor, instale y pruebe las dos tarjetas de red antes de continuar.
Para activar el soporte de “bridging” en el núcleo añada
options BRIDGE
al fichero de configuración del núcleo y recompile el kernel.
Si se desea utilizar el “bridge” como un
cortafuegos, se debe añadir además la opción
IPFIREWALL
. Lea el capílo de
firewalls para obtener
información general sobre cómo configurar el
bridge para que actúe además como cortafuegos.
Si además queremos que los paquetes que no sean IP (por
ejemplo paquetes ARP) puedan atravesar el “bridge”
deberemos añadir la opción
IPFIREWALL_DEFAULT_TO_ACCEPT
. Tenga en cuenta
opción modifica el comportamiento del cortafuegos de tal
forma que por defecto aceptará cualquier paquete. Hay que
tener cuidado para asegurarse de que el comportamiento esperado del
cortafuegos, que reside en el conjunto de reglas que se hayan
definido, no se vea afectado por este cambio.
Si se quiere utilizar el “bridge” como un
conformador de tráfico, es decir, como un elemento capaz de
adaptar los distintos flujos según determinados patrones, se
debe añadir la opción
DUMMYNET
a la configuración del
núcleo. Se ruega consultar dummynet(4) para obtener
más información al respecto.
Añadir la línea:
net.link.ether.bridge=1
en /etc/sysctl.conf
para habilitar el
soporte de “bridging” en tiempo de ejecución y la
línea:
net.link.ether.bridge_cfg=if1
,if2
Para activar el “bridging” en las interfaces
especificadas (sustituya
if1
y
if2
con los nombres de sus interfaces de
red). Si deseamos filtrar los paquetes puenteados utilizando
ipfw(8), debemos añadir también:
net.link.ether.bridge_ipfw=1
En FreeBSD 5.2-RELEASE y posteriores, se debe utilizar las siguientes líneas en lugar de las anteriores:
net.link.ether.bridge.enable=1 net.link.ether.bridge.config=if1
,if2
net.link.ether.bridge.ipfw=1
Si queremos ser capaces de conectarnos al “bridge” mediante telnet(1) se puede asignar una dirección IP a una de las tarjetas de red del “bridge”. Por amplio consenso se considera una mala idea asignar más de una dirección IP al “bridge”.
Si poseemos varios “bridges” en nuestra red sólamente puede existir un único camino entre cualesquiera dos máquinas de nuestra red. Técnicamente hablando esto significa que no existe soporte para gestión de enlace mediante mecanismos basados en árboles de recubrimiento mínimos (“spanning tree”).
Un “bridge” puede añadir latencia a los tiempos de respuesta de la orden ping(8), especialmente cuando el tráfico tiene que viajar de un segmento de red al otro.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.