Ieri ho pubblicato una domanda qui, ma penso che non sia stato abbastanza chiaro nelle mie parole. A proposito, questa domanda non è un duplicato.
Ho l'installazione di AWS VPC come di seguito.
OBIETTIVO / PROBLEMA : SSH sul server A da Internet. E non funziona.
Il server A è in sottorete privata e quindi voglio abilitare il NATing iptables sulla mia istanza NAT in modo che io possa ssh a SErver A direttamente da internet
Ho eseguito sotto il comando sull'istanza NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
L'inoltro IP è abilitato sull'istanza NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE è in esecuzione su istanza 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
I gruppi di sicurezza AWS sono configurati correttamente per consentire vari accessi necessari per questo caso di test.
Risoluzione dei problemi:
Posso telnet da NAT al server A sulla porta 22. Quindi l'accesso è buono.
Quando corro telnet 54.213.116.251 2222
sul mio laptop, vedo di seguito la voce in tcpdump su 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
Quindi significa che iptables sta instradando i pacchetti 10.0.1.243
. (A proposito, xxx.xxx.xxx.xxx
è l'indirizzo IP pubblico del mio laptop)
Ma quando eseguo tcpdump sul Server A, non vedo nulla proveniente da 10.0.0.54
quale sia l'indirizzo IP interno / privato di NAT ( e penso che questo sia il 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
Ma se telnet dall'istanza NAT al server A, vedo cose buone in tcpdump sul server A ( Ciò significa che la mia PREROUTING
regola generale non funziona come previsto ):
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
Conclusione:
Dall'output di tcpdump su NAT, sembra che Iptables stia inoltrando bene i miei pacchetti.
dal dump TCP sul server A, ho una buona connettività dal NAT al server A.
Ma in End-to-end, non riesco a collegarmi al server A dal mio laptop.
(A proposito, conosco il tunnel SSH e altre cose buone. Ma voglio solo Iptables che mi aiuti in questo. )
Disabled
per l'istanza NAT.