Estoy haciendo algunas pruebas de una aplicación en la que estoy trabajando, y necesito poder descartar silenciosamente los paquetes UDP salientes durante un corto período de tiempo para replicar un posible modo de falla.
¿Hay alguna forma de hacer esto?
Nota: ¡ iptables
DROP
no es silencioso para los mensajes salientes! Cuando una send()
llamada o una llamada similar se interrumpe iptables
, regresa EPERM
por alguna extraña razón (ver aquí . Desafortunadamente, no puedo usar esa respuesta ya que mi destino está a un solo salto).
xtables-addons
solía tener un STEAL
verbo , pero se eliminó hace unos años sin ninguna razón que pueda encontrar.
Ahora he intentado usar rutas falsas en la tabla de enrutamiento, y desafortunadamente, eso parece romper ambas direcciones del tráfico de comunicaciones.
Para la prueba que necesito hacer, tengo que permitir el tráfico UDP entrante , y tan pronto como instalo la ruta falsa, los paquetes entrantes de transmisión se detienen inmediatamente, aunque la fuente todavía los envía.
fuente
Respuestas:
¿Qué hay de agregar una interfaz ficticia y configurar la ruta a esa interfaz?
Siempre envía paquetes para cualquier dirección (vecina o remota)
dummy0
.fuente
Agregar una ruta es interrumpir el tráfico entrante debido al filtrado de ruta inversa. Solución simple: deshabilite el filtrado de ruta inversa en la interfaz:
(use su interfaz entrante en lugar de lo
eth0
anterior).También puede usar el
REDIRECT
objetivo (enviar el paquete a, por ejemplo, un netcat que lo escuchenc -l -u -p 1234 > /dev/null
). Una versión más complicada sería NFQUEUE.fuente