На основании описания проблемы мы провели локальный тест. Когда приложение работает на компьютере Linux, который служит конечной точкой для сетевого (TCP / IP) трафика, мы обнаружим, что оно прослушивает номер порта. Клиент, желающий подключиться к этому приложению, должен знать хост / IP-адрес хоста, на котором работает компьютер, а также порт, на котором работает приложение.
В нашей головоломке, описанной в этой проблеме, мы пытались подключиться к приложению, размещенному на GCP, которое, по нашему мнению, прослушивало порт 8111. Однако полученное нами сообщение об ошибке было «Соединение отказано». Мой опыт показывает, что эта ошибка указывает на то, что сетевой запрос от клиента проходит к хосту, но хост не знает, что приложение прослушивает этот порт.
Один простой способ составить список всех используемых портов - использовать команду nestat
. У этого есть много опций, но я предпочитаю nestat -an
, в котором перечислены все сетевые соединения (включая те, которые находятся в режиме прослушивания) и печатаются числовые IP-адреса, а не выполняется разрешение имени хоста. Для получения полной информации о nestat см. netstat . Альтернативой nestat является команда lsof
, но она используется не так часто, и может потребоваться дополнительная настройка.
После запуска nestat мы обнаружили, что ни одно локальное приложение на хосте активно не прослушивает порт 8111, что полностью объясняет, почему интернет-клиент не может подключиться к службе. Первый проход при разрешении будет проверять природу и конфигурацию приложения, запускаемого на хосте, чтобы определить, как настроить его для активного прослушивания желаемого порта. До тех пор, пока netstat не покажет, что приложение прослушивает локально, при подключении из Интернета нет никакой ценности / достоинства.