Что такое источник и решение для порта ldquo: 9000: соединение отказано & rdquo; ошибка?

Следующее отражается на всех dirs в текущем каталоге (но не на пунктирных, например .git)

#!/bin/bash

find . -maxdepth 1 -mindepth 1 -type d | while read Directory; do
    echo "$Directory";
done
1
задан 23 May 2017 в 15:39

2 ответа

TL; DR сначала более подробная информация:

«Отказано в подключении» - это ошибка, возникающая при попытке подключиться к службе на компьютере или сервере (или локально на вашем собственном компьютере), когда указанная услуга либо не прослушивает указанный TCP-порт (неправильный порт, либо служба не запущена), либо когда брандмауэр явно отклоняет соединение вместо игнорирования запроса (не очень частое поведение).

[d1 ] TL; DR сначала более подробная информация:

Это может произойти только с TCP (службы UDP не имеют сеанса), и эта ошибка действительно очень распространена для администраторов системы.

] Когда клиентское приложение подключается к службе TCP, оно отправляет первый пакет с установленным флагом SYN. Если мы упростим, есть два возможных ответа на этот вопрос:

Сервер фактически прослушивает требуемый TCP-порт и отвечает с помощью пакета SYN-ACK, чтобы подтвердить пакет SYN, после чего клиенты разрывают пакет ACK «подтвердить» серверу, что SYN-ACK был получен. Это тот момент, когда вы установили сеанс TCP, и когда вы можете начать «разговаривать» с сервером. Сервер получает ваш SYN-пакет, но не прослушивает запрошенный порт. Соединение отклоняется пакетом с установленным флагом RST (сброс). Это 99% времени, когда вы получили печально известное «сообщение отказалось».

Как это исправить?

Ну, есть несколько вещей, которые вы можете проверить: запрашиваете ли вы правый порт на стороне клиента? Началось ли ваше обслуживание?

Эти три вопроса помогут вам решить вашу проблему.

Быстрая общая команда, которая будет введена в . Как я могу это исправить? (машина, которая запускает службу)

Проверка того, что служба прослушивает ожидаемый порт

ss -nat | grep <enter port number here> | grep LISTEN

Некоторые люди в старых системах также могут использовать это

netstat -an | grep <enter port number here> | grep LISTEN

Если вы ничего не видите здесь, как ваш номер порта, ваша служба либо не запускается, либо не прослушивается на указанном вами номере порта.

Проверка того, что служба работает

service <service name> status
1
ответ дан 23 May 2018 в 20:57
  • 1
    Следует также добавить, что этот вопрос (и его ответ) сильно отличается от askubuntu.com/questions/352868/… . Другой вопрос связан с hadoop, в то время как OP здесь нуждалась в информации, которая является общей для всех «Соединение отказано». ошибки. Здесь Hadoop выходит за рамки вопроса. – Marc-Olivier Barre 30 April 2015 в 21:55
  • 2
    Привет @ Marc-Olivier Barre, большое спасибо за этот ответ. Я предполагаю, что «моя служба » является в этом случае таким же, как «клиент », и равна моей единственной машине (пожалуйста, поправьте меня, если я ошибаюсь). Хорошо ли я понимаю, что я и сам? (моя машина) хотят соединиться с самим собой. и это невозможно, потому что это, скорее всего, не слушает порт 9000? (Я не понимаю, как «Является ли ваша служба запущена?» Может быть моим делом. В моем случае ss -nat | grep 9000 | grep LISTEN ничего не возвращает. Не могли бы вы предоставить несколько руководств по , как сделать мой сервис прослушивать порт 9000? – Marta Karas 30 April 2015 в 22:18
  • 3
    Немного объяснения для комментария выше: Я не понимаю, как " Началось ли ваше обслуживание? & Quot; может быть моим случаем , потому что, как я понимаю, «моя служба» является моей машиной, и когда я пытаюсь выполнить операцию на машине, это означает, что машина - , obvioulsly, работает . – Marta Karas 30 April 2015 в 22:21
  • 4
    ok, словарь нуждается в небольшом пояснении: service - это hasoop в случае OP. Клиент обычно является браузером или, например, программой telnet. Сервер обычно является машиной, на которой запущена служба. Клиентская программа и service может быть расположена на том же компьютере (то есть на вашем ноутбуке). В случае, если сервер - это ваш ноутбук. – Marc-Olivier Barre 1 May 2015 в 12:10
  • 5
    " В ваших конфигурационных файлах hadoop, fs.default.name и mapred.job.tracker ссылаются на localhost? Если это так, то Hadoop будет слушать только порт 9000 и 9001 на интерфейсе loopback, который недоступен для любого другого хоста. Убедитесь, что fs.default.name и mapred.job.tracker относятся к внешнему имени хоста вашего компьютера " - источник stackoverflow.com/questions/4855808/… – Aravinda 1 May 2015 в 12:50

Попробуйте отключить iptables:

sudo service iptables stop && sudo service ip6tables stop

Затем перезапустите hasoop. Если это помогло вам настроить правильную конфигурацию вашего брандмауэра.

1
ответ дан 23 May 2018 в 20:57
  • 1
    Привет @ UNIm95, спасибо за ваш ответ. Я забыл упомянуть в сообщении, что это не мое дело (я исследовал следующие предложения в другом вопросе stackoverflow , который я связал в моем вопросе здесь). Обратите внимание, что я в конце концов нашел решение, которое я описываю в ответе, который я обозначил как «принятый». Вот. – Marta Karas 5 May 2015 в 15:28

Другие вопросы по тегам:

Похожие вопросы: