Un contador de TPROXY puede subir mientras la aplicación no recibe nada. La regla coincidió, pero la entrega local sigue dependiendo del enrutamiento por políticas y de un socket receptor compatible.

Linux TPROXY puede interceptar tráfico sin reescribir el destino como hace DNAT. Por eso los paquetes dirigidos a un destino no local deben llegar a un socket local apto.

Siga la ruta de entrega

  1. El tráfico llega al host de interceptación por la interfaz y la familia de direcciones previstas.
  2. La regla de interceptación y la marca del paquete identifican la política de entrega local.
  3. Una regla de política coincidente elige una ruta que entrega los paquetes localmente.
  4. El proxy usa un oyente transparente compatible con la opción de socket necesaria.

El ejemplo de IPv4 del núcleo exige compatibilidad de la aplicación con IP_TRANSPARENT. Un oyente normal en el mismo puerto, o un ajuste global de enlace no local, no demuestra esa compatibilidad.

ObservaciónSiguiente comprobación
No hay paquetes de entrada relevantesRuta del tráfico e interfaz de entrada
Llegan paquetes; el contador de interceptación no se mueveFamilia de direcciones, cadena y condiciones de coincidencia
La regla coincide; falla la entrega localMarca y selección de ruta de política
El socket escucha; la aplicación no ve nadaCapacidad de socket transparente y propietario del oyente
La petición empieza; las respuestas posteriores fallanCoincidencia de socket establecido y rutas de vuelta

Conserve la configuración cargada y el espacio de nombres de red con cada observación. Una regla posterior puede sobrescribir una marca o elegir otra ruta. Si la interceptación ocurre en el host mientras el oyente se ejecuta en un contenedor, una ruta local válida del host no entrega automáticamente en ese contenedor.

Cuente con los paquetes posteriores

El ejemplo del núcleo incluye la coincidencia de socket y una ruta DIVERT que marca los paquetes de los sockets transparentes. Omitirla puede dejar el tráfico posterior en otra ruta aunque la interceptación inicial funcione.

Use el modo transparente compatible con la aplicación y la documentación del núcleo correspondiente para cada familia de direcciones. Una orden de ruta local de IPv4 no configura IPv6, y la compatibilidad en una familia no demuestra el comportamiento del socket de la otra.

TPROXY tampoco genera la negociación SOCKS. Un componente de transparente a SOCKS aún debe descubrir el destino y negociar con su servidor ascendente.

Pasar de REDIRECT

Anote cómo obtiene la aplicación existente el destino original. REDIRECT cambia el destino y depende del mecanismo de recuperación adecuado; TPROXY necesita su socket transparente y su disposición de enrutamiento. Elija según la aplicación y la política de dirección de origen.

Empareje los contadores con la ruta elegida, la capacidad del socket y el registro de la aplicación antes de cambiar de modo de interceptación. En una distribución que aporte los medios necesarios, un paso de entrega ausente es un mejor punto de partida que recompilar el núcleo.

Artículos relacionados