Я только что арендовал сервер Amazon EC2, предназначенный для размещения приложения node.js, которое слушает клиента через порт 9001.
Я настроил группы безопасности и добавил входящие и исходящие правила для этого порта. Там нет брандмауэра (Amazon Linux), и я полностью отключил iptables.
sudo netstat -plunta | grep LISTEN
возвращает это:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2064/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2104/sendmail
tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN 3207/node
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2146/mongod
tcp 0 0 :::80 :::* LISTEN 2303/httpd
tcp 0 0 :::22 :::* LISTEN 2064/sshd
Мое приложение node.js прослушивает этот порт и все адреса с помощью команды server.listen(9001, "0.0.0.0");
Тем не менее, nmap сервера возвращает это:
Portscan scan report for 172.31.47.81
Host is up.
All 1000 scanned ports on 172.31.47.81 are filtered
Portscan done: 1 IP address (1 host up) scanned in 2.32 seconds
Кроме того, выполнение Nmap на моем телефоне говорит мне, что открыт только порт 80.
Если я запускаю приложение node.js на сервере и выполняю telnet <ip_server> 9001
, оно работает. Однако, если я делаю то же самое со своего персонального компьютера, я получаю ошибку тайм-аута.
Я знаю, что этот вопрос неоднократно задавался, но ни одно из решений, которые я пробовал, не сработало. Я могу пропинговать сервер, использовать ssh для подключения к нему, но приложение node.js не будет работать, а любой из портов, которые должны быть открыты, на самом деле нет (даже попытка подключиться через браузер к веб-серверу не не работает, несмотря на то, что httpd настроен с правильным веб-сайтом, поэтому порт 80 также не открыт).
Есть идеи как это исправить?