Вчера я отправил вопрос здесь , но я думаю , что не было достаточно ясно в моих словах. Кстати, этот вопрос не является дубликатом.
У меня есть AWS VPC Setup, как показано ниже.
ЦЕЛЬ / ПРОБЛЕМА : SSH к серверу A из Интернета. И это не работает.
Сервер A находится в частной подсети, и, следовательно, я хочу включить iptables NATing на моем экземпляре NAT, чтобы я мог подключиться к SSH к серверу A напрямую из Интернета.
Я побежал ниже команды на экземпляре NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
Переадресация IP включена на экземпляре NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE работает на экземпляре 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
Группы безопасности AWS настроены так, чтобы разрешить различный доступ, необходимый для этого теста.
Исправление проблем:
Я могу telnet с NAT на сервер A на порту 22. Так что доступ хороший.
Когда я запускаю telnet 54.213.116.251 2222
на своем ноутбуке, я вижу ниже запись в tcpdump на 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
Таким образом, это означает, что iptables направляет пакеты 10.0.1.243
. (Кстати, xxx.xxx.xxx.xxx
это публичный IP-адрес моего ноутбука)
Но когда я запускаю tcpdump на сервере A, я не вижу ничего, что исходит от 10.0.0.54
внутреннего / частного IP-адреса NAT ( и я думаю, что это проблема ):
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
Но если я telnet с экземпляра NAT на сервер A, я вижу хорошие вещи в tcpdump на сервере A ( это означает, что мое общее PREROUTING
правило не работает должным образом ):
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
Заключение:
Из вывода tcpdump по NAT, кажется, что Iptables нормально пересылает мои пакеты.
из дамп TCP на сервере A, у меня есть хорошее подключение от NAT к серверу A.
Но в сквозном режиме я не могу подключиться к серверу A с моего ноутбука.
( Кстати, я знаю SSH туннель и другие хорошие вещи. Но я хочу, чтобы только Iptables помог мне в этом. )
Disabled
для экземпляра NAT.