Ontem, postei uma pergunta aqui mas acho que não foi claro o suficiente em minhas palavras. BTW, esta questão não é uma duplicata.
Eu tenho o AWS VPC Setup como abaixo.
OBJETIVO/PROBLEMA:SSHparaoServidorAdaInternet.Enãoestáfuncionando.
OservidorAestánasub-redeprivadae,portanto,euqueroativaroNATdoiptablesnaminhainstânciadoNATparaqueeupossausarosshparacriarumdiretamentedaInternet
Estouseguindo este e isso
Eu corri o comando abaixo na instância do NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
O encaminhamento de IP é ativado na instância do NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE está sendo executado na instância do NAT:
NAT# iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 6 packets, 312 bytes)
pkts bytes target prot opt in out source destination
199 16466 MASQUERADE all -- * eth0 10.0.0.0/16 0.0.0.0/0
Os grupos de segurança da AWS são bem configurados para permitir vários acessos necessários para este caso de teste.
Solução de problemas:
Eu posso fazer telnet do NAT para o servidor A na porta 22. Então, o Access é bom.
Quando executo telnet 54.213.116.251 2222
no meu laptop, vejo a entrada abaixo no tcpdump no NAT:
NAT# tcpdump -n -i eth0 dst 10.0.1.243 and port 22
09:59:13.738316 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:16.737009 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:22.775567 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,nop,sackOK], length 0
Isso significa que o iptables está roteando os pacotes para 10.0.1.243
. (BTW, xxx.xxx.xxx.xxx
é o endereço IP público do meu laptop)
Mas quando eu executo o tcpdump no Servidor A, eu não vejo nada vindo de 10.0.0.54
, que é o endereço IP Interno / Privado do NAT ( E eu acho que esse é o problema ):
Server A# tcpdump -n src 10.0.0.54
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
Mas se eu der telnet da instância NAT para o Servidor A, vejo coisas boas no tcpdump no Servidor A ( Isso significa que Minha regra geral PREROUTING
não está funcionando como esperado ):
Server A# tcpdump -n src 10.0.0.54
05:01:47.500080 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [S], seq 2862522431, win 14600, options [mss 1460,sackOK,TS val 3013083 ecr 0,nop,wscale 7], length 0
05:01:47.501601 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 760676524, win 115, options [nop,nop,TS val 3013083 ecr 12074896], length 0
05:01:47.535720 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 22, win 115, options [nop,nop,TS val 3013092 ecr 12074928], length 0
Conclusão:
Da saída do tcpdump no NAT, parece que o Iptables está encaminhando meus pacotes bem.
do TCP dump no Servidor A, tenho boa conectividade do NAT para o Servidor A.
Mas no End-to-end, não consigo me conectar ao servidor A do meu laptop.
( BTW, eu conheço o túnel SSH e outras coisas boas. Mas eu quero que apenas o Iptables me ajude com isso. )