Comment puis-je supprimer en silence certains packages sortants?

Je fais des tests sur une application sur laquelle je travaille et je dois être capable d'abandonner silencieusement les packages UDP sortants pendant une courte période de time pour répliquer un éventuel mode de défaillance.

Est-ce qu'il y a un moyen de faire ça?

Note: iptables DROP n'est pas silencieux pour les messages sortants! Quand un appel send() ou similaire est lancé par iptables , il returnne EPERM pour une raison bizarre (voir ici . Malheureusement, je ne peux pas utiliser cette réponse car ma destination est à un seul saut).

xtables-addons utilisé pour avoir un verbe STEAL , mais il a été supprimé il y a quelques années sans aucune raison que je puisse find.


J'ai maintenant essayé d'utiliser des routes bidons dans la table de routing, et malheureusement, cela semble casser les deux directions du trafic de communication.
Pour le test que je dois faire, je dois autoriser le trafic UDP entrant , et dès que j'installe l'itinéraire bidon, les packages entrants en stream continu s'arrêtent immédiatement, bien que la source les envoie toujours.

Que diriez-vous d'append une interface factice et de définir la route vers cette interface?

 # ip link add dummy0 type dummy # ip link set dev dummy0 up # ip route add 8.8.8.8/32 dev dummy0 # ping -c3 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. --- 8.8.8.8 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2015ms 

Il envoie toujours des packages pour les adresses (voisines ou distantes) sur dummy0 .

 # tshark -i dummy0 Running as user "root" and group "root". This could be dangerous. Capturing on 'dummy0' 1 0.000000 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=1/256, ttl=64 2 1.007348 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=2/512, ttl=64 3 2.015394 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=3/768, ttl=64 

L'ajout d'un itinéraire interrompt le trafic entrant en raison du filtrage inverse. Solution simple: désactivez le filtrage inverse sur l'interface:

 echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter 

(utilisez votre interface entrante à la place de eth0 ci-dessus).

Vous pouvez également utiliser la cible REDIRECT (envoyer le package à, par exemple, un netcat qui l'écoute- nc -l -u -p 1234 > /dev/null ). Une version plus compliquée serait NFQUEUE.