Cómo convertir un servidor de Linux en un enrutador para manejar el tráfico estática y dinámicamente - Parte 10

Cómo convertir un servidor de Linux en un enrutador para manejar el tráfico estática y dinámicamente - Parte 10

Como hemos anticipado en tutoriales anteriores de este LFCE (Ingeniero certificado de la Fundación Linux) Serie, en este artículo discutiremos el enrutamiento del tráfico IP de manera estadical y dinámica con aplicaciones específicas.

Ingeniero certificado de la Fundación Linux - Parte 10
Presentación del programa de certificación de la Fundación Linux

Lo primero es lo primero, obtengamos algunas definiciones directas:

  1. En palabras simples, un paquete es la unidad básica que se utiliza para transmitir información dentro de una red. Las redes que usan TCP/IP como protocolo de red siguen las mismas reglas para la transmisión de datos: la información real se divide en paquetes que están hechos de datos y la dirección donde debe enviarse.
  2. Enrutamiento es el proceso de "estrella de guía"Los datos de origen a destino dentro de una red.
  3. Enrutamiento estatico Requiere un conjunto de reglas configurado manualmente definidos en una tabla de enrutamiento. Estas reglas son fijas y se utilizan para definir la forma en que debe pasar un paquete mientras viaja de una máquina a otra.
  4. Enrutamiento dinámico, o enrutamiento inteligente (si lo desea), significa que el sistema puede alterarse automáticamente, según sea necesario, la ruta que sigue un paquete.

Configuración avanzada de IP y dispositivo de red

El ipproute El paquete proporciona un conjunto de herramientas para administrar las redes y el control de tráfico que utilizaremos a lo largo de este artículo, ya que representan el reemplazo de herramientas heredadas como Ifconfig y ruta.

La utilidad central en el ipproute Suite se llama simplemente IP. Su sintaxis básica es la siguiente:

# comando de objeto IP 

Dónde objeto puede ser solo uno de los siguientes (solo se muestran los objetos más frecuentes: puede consultar el hombre IP para una lista completa):

  1. enlace: dispositivo de red.
  2. addr: dirección de protocolo (IP o IPv6) en un dispositivo.
  3. ruta: Entrada de la tabla de enrutamiento.
  4. regla: regla en la base de datos de políticas de enrutamiento.

Mientras dominio representa una acción específica que se puede realizar en el objeto. Puede ejecutar el siguiente comando para mostrar la lista completa de comandos que se pueden aplicar a un objeto en particular:

# Ayuda del objeto IP 

Por ejemplo,

# Ayuda de enlace IP 
Ayuda del comando IP

La imagen de arriba muestra, por ejemplo, que puede cambiar el estado de una interfaz de red con el siguiente comando:

# IP Link Set Interface Up | abajo 

Para tales más ejemplos de 'IP'Comando, Leer 10 comandos útiles' IP 'para configurar la dirección IP

Ejemplo 1: deshabilitar y habilitar una interfaz de red

En este ejemplo, deshabilitaremos y habilitaremos ETH1:

# enlace IP show # enlace de IP Establecer ETH1 Down # enlace IP Show 
Deshabilitar la interfaz ETH0

Si desea volver a habilitar ETH1,

# enlace IP Establecer ETH1 UP 

En lugar de mostrar todas las interfaces de red, podemos especificar una de ellas:

# enlace IP show ETH1 

Que devolverá toda la información para ETH1.

Ejemplo 2: Mostrar la tabla de enrutamiento principal

Puede ver su tabla de enrutamiento principal actual con cualquiera de los siguientes 3 comandos:

# Ruta IP show # ruta -n # netstat -rn 
Verifique la tabla de ruta de Linux

La primera columna en la salida de los tres comandos indica la red de destino. La salida de ruta IP Show (siguiendo la palabra clave enchufe) también presenta los dispositivos de red que sirven como puerta de enlace física a esas redes.

Aunque hoy en día el comando IP se prefiere a través de la ruta, aún puede referirse al hombre IP-rute y ruta del hombre Para una explicación detallada del resto de las columnas.

Ejemplo 3: Uso de un servidor de Linux para enrutar paquetes entre dos redes privadas

Queremos enrutar ICMP (Ping) PACKETS DE DEV2 a DEV4 y al revés también (tenga en cuenta que ambas máquinas cliente están en diferentes redes). El nombre de cada NIC, junto con su dirección IPv4 correspondiente, se proporciona dentro de los soportes cuadrados.

Nuestro entorno de prueba es el siguiente:

Cliente 1: CENTOS 7 [ENP0S3: 192.168.0.17/24] - Dev1 Enrutador: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, ETH1: 10.0.0.15/24] - Dev2 Cliente 2: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Veamos la tabla de enrutamiento en dev1 (cuadro CentOS):

# show de ruta IP 

y luego modifíquelo para usar su ENP0S3 Nic y la conexión a 192.168.0.15 para acceder a los anfitriones en los 10.0.0.Network 0/24:

# ruta IP Agregar 10.0.0.4/24 a través de 192.168.0.15 dev enp0s3 

Que esencialmente dice: “Agregue una ruta a los 10.0.0.Red 0/24 a través de la interfaz de red ENP0S3 usando 192.168.0.15 como puerta de entrada ".

Red de ruta en Linux

Del mismo modo en Dev4 (OpenSuse Box) a los anfitriones de ping en el 192.168.0.Network 0/24:

# ruta IP Agregar 192.168.0.4/24 a través de 10.0.0.15 dev enp0s3 
Enrutamiento de red en Linux

Finalmente, necesitamos habilitar el reenvío en nuestro enrutador Debian:

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

Ahora vamos a hacer ping:

Verifique el enrutamiento de la red

y,

Estado de ping de ruta

Para que estas configuraciones sean persistentes en las botas, editar /etc/sysctl.confusión en el enrutador y asegúrese de que el neto.IPv4.ip_forward La variable se establece en True de la siguiente manera:

neto.IPv4.ip_forward = 1 

Además, configure las NIC en ambos clientes (busque el archivo de configuración dentro de /etc/sysconfig/red en opensuse y /etc/sysconfig/network-scripts en CentOS - en ambos casos se llama IFCFG-ENP0S3).

Aquí está el archivo de configuración del cuadro OpenSuse:

Bootproto = transmisión estática = 10.0.0.255 ipaddr = 10.0.0.18 Netmask = 255.255.255.0 Gateway = 10.0.0.15 Nombre = Enp0S3 Network = 10.0.0.0 Onboot = sí 
Ejemplo 4: Uso de un servidor de Linux para enrutar paquetes entre redes privadas e Internet

Otro escenario en el que se puede usar una máquina Linux como enrutador es cuando necesita compartir su conexión a Internet con una LAN privada.

Enrutador: Debian Wheezy 7.7 [eth0: IP pública, ETH1: 10.0.0.15/24] - Dev2 Cliente: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Además de configurar el reenvío de paquetes y la tabla de enrutamiento estático en el cliente como en el ejemplo anterior, necesitamos agregar algunas reglas iptables en el enrutador:

# iptables -t nat -a posterior a la postergación -o et0 -j masquerade # iptables -A adelante -i eth0 -o eth1 -m state -estado relacionado, establecido -j Aceptar # iptables -A adelante -i eth1 -o et0 -j ACEPTAR 

El primer comando agrega una regla al Postratería Cadena en la tabla NAT (traducción de direcciones de red), lo que indica que el ETH0 NIC debe usarse para paquetes salientes.

MASCARADA indica que esta NIC tiene una IP dinámica y que antes de enviar el paquete al "Mundo salvaje salvaje"De Internet, la dirección fuente privada del paquete debe cambiarse a la de la IP pública del enrutador.

En una LAN con muchos anfitriones, el enrutador realiza un seguimiento de las conexiones establecidas en /proc/net/ip_conntrack Entonces sabe dónde devolver la respuesta de Internet a.

Solo parte de la salida de:

# cat/proc/net/ip_conntrack 

se muestra en la siguiente captura de pantalla.

Paquetes de ruta en Linux

Donde se destaca el origen (IP privada de OpenSuse Box) y el destino (Google DNS) de los paquetes. Este fue el resultado de correr:

# curl www.tecmenta.comunicarse 

En la caja de OpenSuse.

Como estoy seguro de que ya puedes adivinar, el enrutador está usando los 8 de Google.8.8.8 como servidor de nombres, lo que explica por qué el destino de los paquetes salientes apunta a esa dirección.

Nota: Que los paquetes entrantes de Internet solo se aceptan es si son parte de una conexión ya establecida (Comando #2), mientras que los paquetes salientes están permitidos "salida libre"(Comando #3).

No olvide hacer que sus reglas iptables sean persistentes siguiendo los pasos descritos en la Parte 8 - Configurar iptables Firewall de esta serie.

Enrutamiento dinámico con quagga

Hoy en día, la herramienta más utilizada para el enrutamiento dinámico en Linux es quagga. Permite que los administradores del sistema implementen, con un servidor de Linux relativamente de bajo costo, la misma funcionalidad que proporciona enrutadores Cisco potentes (y costosos).

La herramienta en sí no maneja el enrutamiento, sino que modifica la tabla de enrutamiento del núcleo, ya que aprende las mejores mejores rutas para manejar paquetes.

Dado que es una bifurcación de Zebra, un programa cuyo desarrollo cesó hace un tiempo, mantiene por razones históricas los mismos comandos y estructura que Zebra. Es por eso que verás mucha referencia a Zebra desde este punto en adelante.

Tenga en cuenta que no es posible cubrir el enrutamiento dinámico y todos los protocolos relacionados en un solo artículo, pero estoy seguro de que el contenido presentado aquí servirá como punto de partida para que pueda construir sobre.

Instalación de Quagga en Linux

Para instalar Quagga en la distribución elegida:

# Aptitude Update && aptitude install quagga [en ubuntu] # yum update && yum install quagga [centos/rhel] # zypper refresh && zypper install quagga [openSuse] 

Usaremos el mismo entorno que con el Ejemplo #3, con la única diferencia de que ETH0 está conectado a un enrutador de puerta de enlace principal con IP 192.168.0.1.

A continuación, editar /etc/quagga/demonios con,

cebra = 1 ripd = 1 

Ahora cree los siguientes archivos de configuración.

#/etc/quagga/cebra.conf #/etc/quagga/ripd.confusión 

y agregue estas líneas (reemplace por un nombre de host y contraseña de su elección):

servicio quagga reiniciar el nombre de host dev2 contraseña quagga 
# Servicio de reinicio de Quagga 
Iniciar servicio Quagga

Nota: Eso ribete.confusión es el archivo de configuración para el protocolo de información de enrutamiento, que proporciona al enrutador la información de qué redes se pueden llegar y qué tan lejos (en términos de cantidad de lúpulo).

Tenga en cuenta que este es solo uno de los protocolos que se puede usar junto con Quagga, y lo elegí para este tutorial debido a la facilidad de uso y porque la mayoría de los dispositivos de red lo admiten, aunque tiene la desventaja de pasar credenciales en texto sin formato. Por esa razón, debe asignar permisos adecuados al archivo de configuración:

# chown quagga: quaggavty/etc/quagga/*.conf # chmod 640/etc/quagga/*.confusión 
Ejemplo 5: Configuración de Quagga para enrutar dinámicamente el tráfico IP

En este ejemplo, utilizaremos la siguiente configuración con dos enrutadores (asegúrese de crear los archivos de configuración para enrutador #2 Como se explicó anteriormente):

Configurar quagga

Importante: No olvide repetir la siguiente configuración para ambos enrutadores.

Conéctese a Zebra (escuchando en el puerto 2601), que es el intermediario lógico entre el enrutador y el núcleo:

# Telnet localhost 2601 

Ingrese la contraseña que se estableció en el /etc/quagga/cebra.confusión archivo y luego habilitar la configuración:

Habilitar Configurar terminal 

Ingrese la dirección IP y la máscara de red de cada NIC:

Inter eth0 ip addr 192.168.0.15 Inter ETH1 IP ADDR 10.0.0.15 salida de salida Escribir 
Configurar enrutador

Ahora necesitamos conectarnos al ROTURA Terminal de demonio (puerto 2602):

# Telnet localhost 2602 

Ingrese el nombre de usuario y la contraseña según lo configurado en el /etc/quagga/ripd.confusión archivo, y luego escriba los siguientes comandos en negrita (se agregan comentarios en aras de la aclaración):

permitir Enciende el comando de modo privilegiado. Configurar terminal Cambios en el modo de configuración. Este comando es el primer paso para la configuración rasguño del enrutador Habilita RIP. Red 10.0.0.24/04 Establece la interfaz de habilitación RIP para los 10.0.0.Red 0/24. salida salida escribir Escribe la configuración actual en el archivo de configuración. 
Habilitar el enrutador

Nota: Que en ambos casos la configuración se adjunta a las líneas que agregamos anteriormente (/etc/quagga/cebra.confusión y /etc/quagga/ripd.confusión).

Finalmente, conecte nuevamente al servicio Zebra en los enrutadores y tenga en cuenta cómo cada uno de ellos tiene "aprendió"La ruta a la red que está detrás de la otra, y que es el siguiente salto para llegar a esa red, ejecutando el comando Mostrar ruta IP:

# Mostrar ruta IP 
Verifique el enrutamiento de IP

Si desea probar diferentes protocolos o configuraciones, es posible que desee consultar el sitio del proyecto Quagga para obtener más documentación.

Conclusión

En este artículo hemos explicado cómo configurar el enrutamiento estático y dinámico, utilizando un enrutador (s) de caja de Linux. Siéntase libre de agregar tantos enrutadores como desee y experimentar tanto como desee. No dude en comunicarse con nosotros utilizando el formulario de contacto a continuación si tiene algún comentario o pregunta.

Convertirse en ingeniero certificado de Linux