GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de tc para retrasar paquetes a una sola dirección IP

Solución 1:

La respuesta elegida es incorrecta/incompleta. Enfrenté un problema similar, la respuesta elegida me ayudó un poco, pero no lo suficiente.

Primero, el siguiente comando no es realmente necesario.

tc qdisc del dev eth0 raíz

'Eliminará' la raíz qdisc, pero inmediatamente será sustituida por una pfifo_fast (para que no pierda la conectividad).

El segundo comando:

tc qdisc agregar dev eth0 identificador raíz 1:prio

Sustituirá la qdisc pfifo_fast con la prio. De forma predeterminada, la cola prio tiene 3 bandas (0, 1, 2), cada una administrada por una clase (1:1, 1:2 y 1:3).

Los paquetes se enviarán a una de esas bandas utilizando el campo TOS del paquete IP. Esta configuración se muestra cuando ejecutas:

tc qdisc ls

mirando los valores de 'priomapa'.

Luego, agrega un netem qdisc:

tc qdisc agregar dev eth0 padre 1:1 manejador 2:retardo netem 500 ms

Con este comando, retrasa todo el tráfico que va a la banda 1:1 (hasta que se coloca el filtro).

Pero hay dos advertencias:

  • Su tráfico puede tener un valor de TOS diferente y luego enviarse a otra banda.
  • El qdisc prio se puede configurar para que el tráfico vaya a otra banda.

Lo siguiente resolvió mi problema para no ser afectado por netem mientras no se aplica el filtro. En lugar de los pasos anteriores, hice:

tc qdisc agregar dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Esto enviará todo el tráfico por defecto a la banda 1:3.

Luego, agregué la regla para retrasar el tráfico:

tc qdisc agregar dev eth0 padre 1:1 manejar 10:retardo netem 100ms 10ms

Esto crea el qdisc en la banda 0, pero como todo el tráfico va a la banda 3, no me afectó.

Luego, agregué el filtro:

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.1/32 match ip dport 80 0xffff flowid 1:1

Ahora con el filtro solo se verá afectada la IP/puerto elegido, ya que redirigimos el tráfico elegido a la banda 0.

El resto del tráfico no se ve afectado ya que sigue fluyendo hacia la banda 3.

Solución 2:

Ok, resolví mi propio problema. Resulta que si ejecuta las primeras 3 líneas anteriores (las "tc qdisc"), retrasará todos los paquetes porque aún no hay filtros. La cuarta línea lo cambia para retrasar solo los paquetes de esa única dirección IP. Se pueden agregar líneas de filtro adicionales para agregar direcciones IP adicionales a la lista "retrasada". Por lo tanto:no cree una línea de "retraso de netem" sin un filtro que la apunte.


Linux
  1. Cómo cambiar la dirección del sitio de WordPress en phpmyadmin usando SQL

  2. Cómo ejecutar el comando Ping solo para N cantidad de paquetes

  3. Eliminación de comillas simples y dobles en una cadena usando solo comandos bash / Linux estándar

  4. Cómo obtener una dirección de memoria específica usando C

  5. Enrutar solo tráfico específico a través de VPN

Cómo cambiar la dirección MAC usando macchanger en Kali Linux

Cómo monitorear la actividad de Ethernet en Linux usando Arpwatch

Cómo descargar solo audio usando youtube-dl

¿Cómo bloquear una dirección IP usando .htaccess?

Obtenga la dirección MAC usando un script de shell

rsync usando expresiones regulares para incluir solo algunos archivos