Я настроил экземпляр Amazon EC2 под управлением Ubuntu 14.04.4 LTS для использования только одной группы безопасности AWS, в которой весь исходящий трафик открыт, а входящий трафик ограничен, чтобы разрешить входящие TCP-соединения до 22, 80, 443, 5000 из любого места. У меня также настроен и запущен ufw, так что эти порты открыты в соответствии с ufw status
:
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
5000 ALLOW Anywhere
22 ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
5000 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
Несмотря на это, когда я запускаю nmap на своем локальном компьютере по адресу сервера, я получаю следующее:
Starting Nmap 7.12 ( https://nmap.org ) at 2016-08-17 22:55 EDT
Nmap scan report for xxxxxxx.com (xx.xx.xx.xx)
Host is up (0.013s latency).
rDNS record for xx.xx.xx.xx: ec2-xx-xx-xx-xx.compute-1.amazonaws.com
Not shown: 996 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
5000/tcp closed upnp
Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds
Почему порт 5000 отображается как закрытый, а не открытый? Чего здесь не хватает?
Получается, что причина, по которой порт 5000 оказался закрытым, заключалась в том, что на сервере еще не было запущено ничего, чтобы принимать входящие соединения. После запуска приложения на стороне сервера оно обнаружилось как открытое.
Превращение того, что по сути является тройным (доступное, открытое, закрытое) состояние в двоичное, неизбежно вызовет путаницу. Нет никакой технологической причины, по которой это различие не может быть обнаружено в серверных приложениях и инструментах. Ради каждого человека, который в совокупности потратил бесчисленные часы на выяснение этого, так и должно быть.