Enrutamiento avanzado y control de tráfico en Linux

Bert Hubert

Thomas Graf (Section Author)
Gregory Maxwell (autor de secciones)
Remco van Mook (autor de secciones)
Martijn van Oosterhout (autor de secciones)
Paul B Schroeder (autor de secciones)
Jasper Spaans (autor de secciones)
Pedro Larroy (autor de secciones)
Ricardo J. Cárdenes (traductor al castellano)

Una introducción bastante práctica a iproute2, el control de tráfico y un poco de netfilter.


Tabla de contenidos
1. Dedicatoria
2. Introducción
2.1. Descargo de responsabilidad y licencia
2.2. Conocimientos previos
2.3. Qué puede hacer Linux por usted
2.4. Notas de mantenimiento
2.5. Acceso, CVS y envío de actualizaciones
2.6. Lista de correo
2.7. Disposición de este documento
3. Introducción a iproute2
3.1. ¿Por qué iproute2?
3.2. revisión de iproute2
3.3. Prerequisitos
3.4. Explorar la configuración actual
3.4.1. ip nos muestra nuestros enlaces
3.4.2. ip nos muestra nuestras direcciones IP
3.4.3. ip nos muestra nuestras rutas
3.5. ARP
4. Reglas (base de datos de normas de rutado)
4.1. Normas de encaminamiento por origen sencillas
4.2. Encaminamiento con varios enlaces de salida/proveedores
4.2.1. Acceso dividido
4.2.2. Equilibrio de carga
5. GRE y otros túneles
5.1. Breve inciso sobre los túneles:
5.2. Túneles IP sobre IP
5.3. Túneles GRE
5.3.1. Túneles IPv4
5.3.2. Túneles IPv6
5.4. Túneles en espacio de usuario
6. Túneles IPv6 con Cisco o la 6bone
6.1. Túneles IPv6
7. IPsec: IP segura sobre Internet
7.1. Introducción al intercambio manual de claves
7.2. Intercambio automático de claves
7.2.1. Teoría
7.2.2. Ejemplo
7.2.3. Uso de certificados X.509 para el intercambio automático de claves
7.3. Túneles con IPSEC
7.4. Otro software IPSEC
7.5. Interoperación de IPSEC con otros sistemas
7.5.1. Windows
8. Enrutado multicast
9. Disciplinas de colas (qdiscs) para gestión del ancho de banda
9.1. Las colas y disciplinas de cola explicadas
9.2. Disciplinas de cola simples, sin clases
9.2.1. pfifo_fast
9.2.2. Token Bucket Filter
9.2.3. Stochastic Fairness Queueing
9.3. Consejos sobre en qué momento usar qué cola
9.4. Terminología
9.5. Disciplinas de cola con clases
9.5.1. El flujo dentro de las qdisc con clases y sus clases
9.5.2. La familia qdisc: raíces, controladores, hermanos y padres
9.5.3. La qdisc PRIO
9.5.4. La famosa qdisc CBQ
9.5.5. Hierarchical Token Bucket
9.6. Clasificar paquetes con filtros
9.6.1. Algunos ejemplos sencillos de filtrado
9.6.2. Todas las órdenes de filtrado que necesitará normalmente
9.7. El dispositivo intermedio de encolado (IMQ)
9.7.1. Configuración de ejemplo
10. Compartir la carga sobre varias interfaces
10.1. Problemas
10.2. Otras posibilidades
11. Netfilter e iproute (marcado de paquetes)
12. Filtros avanzados para (re)clasificar paquetes
12.1. El clasificador u32
12.1.1. Selector U32
12.1.2. Selectores generales
12.1.3. Selectores específicos
12.2. El clasificador route
12.3. Filtros de control (Policing filters)
12.3.1. Formas de control
12.3.2. Acciones de sobrelímite
12.3.3. Ejemplos
12.4. Filtros de hash para filtrado masivo muy rápido
12.5. Filtrado de tráfico IPv6
12.5.1. ¿Cómo es que no funcionan los filtros tc para IPv6?
12.5.2. Marcar paquetes IPv6 usando ip6tables
12.5.3. Usar el selector u32 para filtrar paquetes IPv6
13. Parámetros de red del núcleo
13.1. Reverse Path Filtering
13.2. Configuraciones oscuras
13.2.1. ipv4 genérica
13.2.2. Configuración por dispositivo
13.2.3. Normas de vecinos (Neighbor policy)
13.2.4. Configuración de encaminamiento
14. Disciplinas de cola avanzadas y poco conocidas
14.1. bfifo/pfifo
14.1.1. Parámetros y uso
14.2. Algoritmo Clark-Shenker-Zhang (CSZ)
14.3. DSMARK
14.3.1. Introducción
14.3.2. ¿Con qué se relaciona Dsmark?
14.3.3. Principios de los Servicios Diferenciados
14.3.4. Trabajar con Dsmark
14.3.5. Cómo trabaja SCH_DSMARK.
14.3.6. Filtro TC_INDEX
14.4. Qdisc de entrada (Ingress)
14.4.1. Parámetros y uso
14.5. Random Early Detection (RED)
14.6. Generic Random Early Detection
14.7. Emulación VC/ATM
14.8. Weighted Round Robin (WRR)
15. Recetario
15.1. Llevar varios sitios con diferentes SLA[1]
15.2. Proteger la máquina frente a inundaciones SYN
15.3. Limitar la tasa de ICMP para prevenir dDoS
15.4. Priorizado de tráfico interactivo
15.5. Caché transparente de web usando netfilter, iproute2, ipchains y squid
15.5.1. Diagrama de flujo del tráfico tras la implementación
15.6. Sortear los problemas de Path MTU Discovery con configuraciones de MTU por ruta
15.6.1. Solución
15.7. Sortear los problemas de Path MTU Discovery con MSS Clamping (para usuarios de ADSL, cable, PPPoE y PPtP)
15.8. El acondicionador de tráfico definitivo: baja latencia, envíos y descargas rápidos
15.8.1. Por qué no funciona bien por defecto
15.8.2. El script (CBQ)
15.8.3. El script (HTB)
15.9. Limitar la tasa a una única máquina o máscara de red
15.10. Ejemplo de una solución de nat completo con QoS
15.10.1. Empecemos optimizando ese ancho de banda escaso
15.10.2. Clasifición de paquetes
15.10.3. Mejora de nuestra configuración
15.10.4. Hacer todo lo anterior durante el arranque
16. Hacer bridges y pseudo-bridges con Proxy ARP
16.1. Estado del bridging e iptables
16.2. Bridging y ajustes (shaping)
16.3. Pseudo-bridges con Proxy-ARP
16.3.1. ARP y Proxy-ARP
16.3.2. Implementándolo
17. Encaminamiento dinámico - OSPF y BGP
17.1. Configurar OSPF con Zebra
17.1.1. Prerequisitos
17.1.2. Configuración de Zebra
17.1.3. Ejecutar Zebra
17.2. Configurar BGP4 con Zebra
17.2.1. Mapa de red (Ejemplo)
17.2.2. Configuración (Ejemplo)
17.2.3. Comprobar la configuración
18. Otras posibilidades
19. Otras lecturas
20. Reconocimientos