Temos um sistema que recebe armadilhas de vários dispositivos.
Como o sistema não é executado (e não pode ser executado) como root
, ele escuta uma porta não padrão (no nosso caso, 2162 em vez de 162).
O problema é que alguns dos dispositivos que gerenciamos, enviam suas armadilhas sempre para a porta padrão.
Portanto, precisamos encaminhar as armadilhas, recebidas na porta 162, para a porta 2162.
Eu tentei o seguinte, mas não funciona (não encaminha qualquer coisa):
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 162 -j REDIRECT --to-port 2162
iptables -A FORWARD -p udp --dport 2162 -j ACCEPT
Sou engenheiro de software e não sou administrador de sistemas e sei muito pouco sobre iptables, redes, NAT, etc.
Eu tenho as declarações acima googling um pouco.
Como o remetente do pacote UDP é muito importante, não podemos simplesmente criar um pequeno processo, executado como root, que recebe traps na porta 162 e cria novos enviando-os para a porta 2162.
Isso mudaria o endereço de envio.
A saída de iptables -t nat -L -n -v
é:
Chain PREROUTING (policy ACCEPT 11339 packets, 2709K bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to:163.162.154.208:2162
0 0 REDIRECT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 redir ports 2162
0 0 REDIRECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 redir ports 2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to:163.162.154.208:2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
0 0 DNAT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
Chain POSTROUTING (policy ACCEPT 80991 packets, 5033K bytes)
pkts bytes target prot opt in out source destination
5 470 SNAT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162 to:163.162.154.208
Chain OUTPUT (policy ACCEPT 80993 packets, 5033K bytes)
pkts bytes target prot opt in out source destination
Enquanto a saída de iptables -L -n -v
é:
Chain INPUT (policy ACCEPT 3372K packets, 561M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2163
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:2162
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162 state NEW,RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 3349K packets, 733M bytes)
pkts bytes target prot opt in out source destination
A saída de netstat -lnup | grep 2162
é:
udp 0 0 :::2162 :::* 13871/java