ipt de regra de redirecionamento para o udp não funcionar

3

Estou tentando criar um redirecionamento para o tráfego UDP do syslog de IP: PORT de entrada para outra porta na mesma caixa linux. O objetivo disso é rotear o tráfego que vem para diferentes endereços IP no servidor para serviços executados em números de porta mais altos, dependendo do endereço de destino.

SO: RHEL 7.2

Regra:

iptables -A PREROUTING -t nat -p udp --dport 514 -d A.D.D.R -j REDIRECT --to-port 1514

para depuração eu testei também:

iptables -A PREROUTING -t nat -p udp --dport 514 -d A.D.D.R -j LOG --log-prefix "SYSLOG_REDIRECT"

iptables -t nat -L -v -n 

mostra 0 para contador, nenhum registro registrado

tcpdump mostra o tráfego recebido na porta de entrada 514

endereço IP de destino (A.D.D.R) é atribuído à interface de subinterface / alias enoXXXX: 1

Alguém teve um caso semelhante?

    
por mrbeat 27.09.2017 / 12:52

1 resposta

0

Sua regra de NAT parece estar correta e deve fazer o que você esperava. No entanto, há um ponto para verificar se acredito que essa seja a razão pela qual seu tráfego UDP não é redirecionado.

Redirecionar o tráfego UDP pode ser mais complicado do que redirecionar o TCP. Isso ocorre principalmente porque o TCP é um protocolo orientado a conexões e o UDP é sem conexão.

As regras NAT dependem do módulo de rastreamento de conexão que acompanha o estado de qualquer "conexão ". No caso do TCP, fica claro o que significa, pois há pacotes TCP especiais para indicar novas conexões. No UDP, não há fase de estabelecimento de conexão. O primeiro pacote que sua caixa verá será considerado como iniciando uma "conexão " e o pacote de resposta indica que a "conexão está estabelecida ".

Que tal fechar a conexão? No TCP, também fica claro porque o TCP usa sinalizadores especiais para indicar o fechamento da conexão. Quando visto, você pode fazer uso deles e limpar o estado da conexão de acordo. No entanto, você nunca saberá quando o UDP " conexão " é finalizado. Portanto, a entrada da faixa de conexão não será apagada, a menos que o tempo limite seja atingido (na minha máquina, ela está configurada para 180 segundos) sem qualquer pacote UDP.

Como isso está relacionado ao seu problema? Quando sua caixa está continuamente recebendo tráfego UDP para syslog, o tempo limite de "conexão" UDP não expira e o estado da conexão será mantido o tempo todo. A regra de NAT não será aplicada, desde que haja um estado na tabela de controle de conexão.

Como forçar a nova regra de NAT? Você pode tentar remover manualmente a entrada de rastreamento de conexão usando o comando abaixo (não a use sem nenhum outro parâmetro, pois ela esvazia a tabela inteira, interrompendo todos suas conexões atuais). Para mais parâmetros, você pode verificar o manual.

$ sudo conntrack -D
    
por 27.09.2017 / 13:24