Devido ao ambiente, minha única escolha foi fazer um encaminhamento bruto usando o iptables.
Como não tínhamos DPI, tudo estava à frente, dependendo de três filtros:
- Fonte
- Destino
- Porta
Além disso, como tinha que ser transparente, tínhamos que usar o arquivo host para definir o domínio de destino como nosso servidor proxy. Para o destino, nenhuma mudança é necessária.
# My SQL try to contact the dest. SQL (who is in fact, my proxy) so I changed the destination to the real one
iptables -t nat -A PREROUTING -i eth0 -s [YOUR_INTERNAL_SERVER] -p tcp --dport 15432 -j DNAT --to-destination [YOUR_DESTINATION_SERVER]
# Little restriction
iptables -t filter -A FORWARD -p tcp --dport 15432 -m state --state NEW -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 15432 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 15432 -m state --state ESTABLISHED -j ACCEPT
# If they contact my SQL, I set the source as my relay so my server could reply back.
iptables -t nat -A POSTROUTING -o eth0 -d [YOUR_INTERNAL_SERVER] -p tcp --dport 15432 -j SNAT --to-source [YOUR_PROXY]