Вчора я розмістив запитання тут, але, думаю, недостатньо чіткий у своїх словах. До речі, це запитання не є дублікатом.
У мене налаштування AWS VPC, як показано нижче.
МЕТА / ПРОБЛЕМА : SSH на сервер A з Інтернету. І це не працює.
Сервер A знаходиться в приватній підмережі, і тому я хочу ввімкнути iptables NATING на моєму екземплярі NAT, щоб я міг ssh на SErver 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 налаштовані штрафом, щоб забезпечити різний доступ, необхідний для цього тестового випадку.
Вирішення проблем:
Я можу телефонувати з 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
. (BTW, 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 до сервера А.
Але в кінцевому підсумку я не в змозі підключитися до сервера А зі свого ноутбука.
( До речі, я знаю тунель SSH та інші хороші речі. Але я хочу, щоб мені допомагали лише Iptables. )
Disabled
для екземпляра NAT.