Estou testando um aplicativo em que estou trabalhando e preciso poder eliminar silenciosamente pacotes UDP de saída por um curto período de tempo para replicar um possível modo de falha.
Há alguma maneira de fazer isso?
Nota: iptables
DROP
não é silencioso para mensagens enviadas! Quando uma send()
chamada ou similar é descartada iptables
, ela retorna EPERM
por algum motivo bizarro (veja aqui . Infelizmente, não posso usar essa resposta, pois meu destino fica a um único salto).
xtables-addons
costumava ter um STEAL
verbo , mas foi removido há alguns anos atrás por nenhuma razão que eu possa encontrar.
Agora tentei usar rotas falsas na tabela de roteamento e, infelizmente, isso parece quebrar as duas direções do tráfego de comunicação.
Para o teste que preciso fazer, tenho que permitir o tráfego UDP de entrada e, assim que instalo a rota falsa, os pacotes recebidos de streaming são interrompidos imediatamente, embora a fonte ainda os esteja enviando.
fonte
Respostas:
Que tal adicionar interface fictícia e definir a rota para essa interface?
Ele sempre envia pacotes para qualquer endereço (vizinho ou remoto)
dummy0
.fonte
Adicionar uma rota está interrompendo o tráfego de entrada devido à filtragem de caminho inverso. Solução simples: desative a filtragem de caminho reverso na interface:
(use sua interface de entrada no lugar
eth0
acima).Você também pode usar o
REDIRECT
destino (envie o pacote para, por exemplo, um netcat atendendo a elenc -l -u -p 1234 > /dev/null
). Uma versão mais complicada seria NFQUEUE.fonte