Ayer, publiqué una pregunta aquí, pero creo que no fue lo suficientemente clara en mis palabras. Por cierto, esta pregunta no es un duplicado.
Tengo la configuración de AWS VPC como se muestra a continuación.
OBJETIVO / PROBLEMA : SSH al servidor A desde internet. Y no está funcionando.
El servidor A se encuentra en una subred privada y, por lo tanto, quiero habilitar el NAT de iptables en mi instancia de NAT para poder enviar ssh al servidor A directamente desde internet
Ejecuté debajo del comando en la instancia NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
El reenvío de IP está habilitado en la instancia NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE se ejecuta en la instancia 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
Los grupos de seguridad de AWS están configurados correctamente para permitir diversos accesos necesarios para este caso de prueba.
Solución de problemas:
Puedo hacer telnet desde NAT al servidor A en el puerto 22. Entonces el acceso es bueno.
Cuando ejecuto telnet 54.213.116.251 2222
en mi computadora portátil, veo la entrada a continuación en tcpdump en 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
Entonces significa que iptables está enrutando los paquetes 10.0.1.243
. (Por cierto, xxx.xxx.xxx.xxx
es la dirección IP pública de mi computadora portátil)
Pero cuando ejecuto tcpdump en el Servidor A, no veo nada proveniente de 10.0.0.54
la dirección IP interna / privada de NAT ( y creo que este es el 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
Pero si hago telnet desde la instancia NAT al Servidor A, veo cosas buenas en tcpdump en el Servidor A ( Esto significa que Mi PREROUTING
regla general no funciona como se esperaba ):
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
Conclusión:
Desde la salida de tcpdump en NAT, parece que Iptables reenvía mis paquetes bien.
del volcado TCP en el servidor A, tengo buena conectividad de NAT al servidor A.
Pero en extremo a extremo, no puedo conectarme al servidor A desde mi computadora portátil.
( Por cierto, conozco el túnel SSH y otras cosas buenas. Pero solo quiero que Iptables me ayude con esto ) .
Disabled
para la instancia NAT.