Eu tenho um servidor executando o servidor UDP na porta 50000. Esse servidor recebe atualizações de clientes e envia de volta os clientes a cada 5 segundos para o soquete do qual eles estavam conectados.
Agora, desejo redirecionar todo o tráfego para e a partir desse servidor UDP por meio de outro servidor. Basicamente eu quero configurar um proxy transparente na frente deste servidor. O motivo é que eu quero ser capaz de controlar facilmente qual servidor lida com o tráfego UDP, sem a necessidade de alterar as configurações de DNS.
Primeiro, tentei usar n socat para criar este proxy:
socat UDP-LISTEN:50000,fork UDP:myserver:50000
Mas isso parece funcionar bem para o tráfego de entrada, mas o tráfego de volta do meu servidor para os clientes não alcança seu destino. Também parece que o socat bifurca outro processo para cada conexão, então eu posso acabar com muitos processos e processos mortos quando clientes desconectam / trocam IP.
Percebi que posso usar a funcionalidade NAT do iptables para isso, mas não parece funcionar para mim. A configuração que eu tentei é:
sudo iptables -t nat -A PREROUTING -p udp --dport 50000 -j DNAT --to-destination myserver:50000
Mas parece que não funciona - nem vejo as conexões no meu servidor. Não tenho certeza se é devido a configuração incorreta ou devido a alguns outros problemas.
Algumas perguntas:
- Eu preciso de alguma forma reiniciar o iptables depois de adicionar a configuração nat?
- Preciso permitir o tráfego para a porta de entrada ou ter a configuração NAT suficiente?
ATUALIZAÇÃO: O servidor que realmente lida com o tráfego está em uma máquina diferente daquela em que estou tentando configurar o iptables.