Ich teste eine Anwendung, an der ich arbeite, und muss in der Lage sein, ausgehende UDP-Pakete für einen kurzen Zeitraum stillschweigend zu verwerfen, um einen möglichen Fehlermodus zu replizieren.
Gibt es eine Möglichkeit, dies zu tun?
Hinweis: iptables
DROP
Schweigt nicht für ausgehende Nachrichten! Wenn ein send()
oder ein ähnlicher Anruf abgebrochen wird iptables
, wird er EPERM
aus einem bizarren Grund zurückgegeben (siehe hier . Leider kann ich diese Antwort nicht verwenden, da mein Ziel nur einen Sprung entfernt ist).
xtables-addons
Früher hatte ich ein STEAL
Verb , aber es wurde vor ein paar Jahren ohne Grund entfernt, den ich finden kann.
Ich habe jetzt versucht, falsche Routen in der Routing-Tabelle zu verwenden, und leider scheint dies beide Richtungen des Kommunikationsverkehrs zu unterbrechen.
Für den Test ich tun muß, ich habe zu erlauben , eingehenden UDP - Verkehr, und sobald ich den falschen Weg, um den Streaming eingehenden Pakete sofort halt, installieren , obwohl die Quelle noch sie zu senden ist.
quelle
Antworten:
Wie wäre es mit dem Hinzufügen einer Dummy-Schnittstelle und dem Festlegen der Route zu dieser Schnittstelle?
Es werden immer Pakete für beliebige (Nachbar- oder Remote-) Adressen gesendet
dummy0
.quelle
Durch das Hinzufügen einer Route wird der eingehende Datenverkehr aufgrund der Filterung des umgekehrten Pfads unterbrochen. Einfache Lösung: Deaktivieren Sie die Umkehrpfadfilterung auf der Schnittstelle:
(Verwenden Sie Ihre eingehende Schnittstelle anstelle der
eth0
oben genannten).Sie können auch das
REDIRECT
Ziel verwenden (senden Sie das Paket beispielsweise an einen Netcat, der darauf wartet -nc -l -u -p 1234 > /dev/null
). Eine kompliziertere Version wäre NFQUEUE.quelle