Hier, j'ai posté une question ici, mais je pense que ce n'était pas assez clair dans mes mots. BTW, Cette question n'est pas un doublon.
J'ai la configuration AWS VPC comme ci-dessous.
OBJECTIF / PROBLÈME : SSH vers le serveur A depuis Internet. Et ça ne marche pas.
Le serveur A est dans un sous-réseau privé et je souhaite donc activer le NAT iptables sur mon instance NAT afin que je puisse ssh vers SErver A directement depuis Internet
J'ai exécuté la commande ci-dessous sur l'instance NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
Le transfert IP est activé sur l'instance NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE s'exécute sur une instance 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
Les groupes de sécurité AWS sont correctement configurés pour permettre divers accès nécessaires à ce scénario de test.
Dépannage:
Je peux telnet du NAT au serveur A sur le port 22. Ainsi l'accès est bon.
Lorsque je cours telnet 54.213.116.251 2222
sur mon ordinateur portable, je vois l'entrée ci-dessous dans tcpdump sur 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
Cela signifie donc que iptables achemine les paquets vers 10.0.1.243
. (BTW, xxx.xxx.xxx.xxx
est l'adresse IP publique de mon ordinateur portable)
Mais lorsque j'exécute tcpdump sur le serveur A, je ne vois rien provenant de 10.0.0.54
l'adresse IP interne / privée de NAT ( et je pense que c'est le problème ):
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
Mais si je telnet de l'instance NAT au serveur A, je vois de bonnes choses dans tcpdump sur le serveur A ( cela signifie que ma PREROUTING
règle générale ne fonctionne pas comme prévu ):
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
Conclusion:
De la sortie de tcpdump sur NAT, il semble que Iptables transmette bien mes paquets.
du TCP dump sur le serveur A, j'ai une bonne connectivité du NAT au serveur A.
Mais de bout en bout, je ne peux pas me connecter au serveur A depuis mon ordinateur portable.
( BTW, je connais le tunnel SSH et d'autres bonnes choses. Mais je ne veux que des Iptables pour m'aider. )
Disabled
pour l'instance NAT.