Na AWS temos 3 instâncias na mesma sub-rede/VPC. Gostaríamos que a instância do cliente fizesse uma solicitação de DNS para uma segunda instância de análise, que encaminhará a solicitação para uma terceira instância executando um serviço de DNS. O serviço DNS deve então fornecer uma resposta à instância de análise, que deve então responder ao cliente.
O objetivo é que a instância Analysis possa interceptar o tráfego entre as instâncias Client e DNS para fins de análise.
Instância de cliente -> Instância de análise (NAT) -> Instância de DNS
A configuração atual permite que a instância do cliente envie uma solicitação de DNS por meio da instância de análise para a instância de DNS. A instância do DNS responde à instância do Analysis, tcpdump
mas a instância Client nunca recebe uma resposta da instância do Analysis.
Temos as verificações de origem/destino na AWS para a instância de análise que executa NAT desativadas.
Primeiro, ativamos o encaminhamento na instância do Analysis:
sudo sysctl -w net.ipv4.ip_forward=1
Em seguida, adicionamos as seguintes regras IPTables à instância Analysis
sudo iptables -A FORWARD -p udp --dport 53 -d 192.168.1.151 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.151
sudo iptables -t nat -A POSTROUTING -d 192.168.1.151 -s 192.168.1.156 -p udp --dport 53 -j SNAT --to 192.168.1.213
Outras POSTROUTING
regras, como as seguintes, também foram tentadas
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.1.151 --dport 53 -j SNAT --to-source 192.168.1.213
sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.1.151 --dport 53 -j MASQUERADE
Todos com o mesmo resultado, a instância Client nunca recebe uma resposta DNS. Pensamentos sobre o que pode estar impedindo a instância de análise de retornar uma resposta?
O problema era que a cadeia FORWARD não permitia o tráfego de retorno, portanto, a seguinte regra era necessária:
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
A solução completa se parece com: