Вопрос: Что вызывает сообщение «Отказано в соединении»?


Это Канонический вопрос около В соединении отказано 

Мы видим много вопросов о влиянии

Когда я пытаюсь подключиться к системе, я получаю сообщение

В соединении отказано

Почему это ?


66
2017-09-28 12:13


Источник


Мы получаем это много в Apache Hadoop, где это часто вызвано ошибками конфигурации на клиенте: с каким хостом следует разговаривать, с какими установлены их таблицы DNS или / etc / host или несоответствие между портами, используемыми услуг и что клиенты думают, что он должен использовать. Соответственно, мы имеем специальная запись в вики по теме. Многие из проблем, скорее всего, будут в других местах, хотя (надеемся) в меньших масштабах. Отладка проблем с подключением в кластере 1000 узлов не является забавой. - Steve Loughran
Ваша выделенная ссылка на wiki указывает на этот вопрос;) - Iain
хороший улов. Вот официальная ссылка: wiki.apache.org/hadoop/ConnectionRefused, Я добавлю перекрестную ссылку назад оттуда сюда для этого полного цикла. - Steve Loughran
@SteveLoughran Прохладная статья - один комментарий - ссылка назад говорит о переполнении стека, и мы - ошибка сервера;) - Iain
сделанный. FWIW, эта ссылка на wiki добавляется в исключения ConnectionRefused, прошедшие в стеке Hadoop, а также дополнительную информацию (хосты, порты), необходимые для выяснения того, что происходит не так. Мы по-прежнему получаем множество отчетов об ошибках от людей, которые видят трассировку стека и не следуют ссылке на wiki - Steve Loughran


Ответы:


Заметка: Это сообщение является симптомом проблемы, которую вы пытаетесь решить. Понимание причины сообщения в конечном итоге приведет вас к решению вашей проблемы.

Сообщение «Connection Refused» имеет две основные причины:

  1. Ничего не слушает IP-порт, к которому вы пытаетесь подключиться.
  2. Порт заблокирован межсетевым экраном.

Процесс не прослушивается.

Это, безусловно, самая распространенная причина для сообщения. Сначала убедитесь, что вы пытаетесь подключиться к правильной системе. Если вы затем должны определить, является ли это проблемой, на удаленной системе NetStat или сс1 например если вы ожидаете, что процесс прослушивается на порту 22222

sudo netstat -tnlp | grep :22222

или

ss -tnlp | grep :22222

Для OSX подходящей командой является

sudo netstat -tnlp tcp | grep '\.80 '

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

Если у вас нет доступа к удаленной системе и вы хотите подтвердить проблему, прежде чем сообщать об этом соответствующим администраторам, вы можете использовать tcpdump (wirehark или подобное).

При попытке подключения к IP-порту, где ничего не прослушивается, ответ от удаленной системы на исходный пакет SYN представляет собой пакет с флагами RST, ACK. Это закрывает соединение и вызывает сообщение «Отключить соединение», например.

$ sudo tcpdump -n host 192.0.2.1 и порт 22222
  tcpdump: расширенный вывод подавлен, используйте -v или -vv для полного декодирования протокола
  прослушивание на enp14s0, тип link EN10MB (Ethernet), размер захвата 262144 байт

  12: 31: 27.013976 IP 192.0.2.2.34390> 192.0.2.1.22222: Флаги [S], seq 1207858804, выиграть 29200, опции [mss 1460, sackOK, TS val 15306344 ecr 0, nop, wscale 7], длина 0

  12: 31: 27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390: Флаги [Р.], seq 0, ack 1207858805, win 0, length 0

Обратите внимание, что tcpdump использует , в представлять ACK флаг.

Порт заблокирован межсетевым экраном

Если порт заблокирован брандмауэром, а брандмауэр настроен на icmp-port-unreachable это также вызовет сообщение об отказе подключения. Снова вы можете увидеть это с помощью tcpdump (или аналогичного)

$ sudo tcpdump -n icmp
  tcpdump: расширенный вывод подавлен, используйте -v или -vv для полного декодирования протокола

  прослушивание на enp14s0, тип link EN10MB (Ethernet), размер захвата 262144 байт   13: 03: 24.149897 IP 192.0.2.1> 192.0.2.2: ICMP 192.0.2.1 порт tcp 22222 недоступен, длина 68

Обратите внимание, что это также указывает нам, где находится блокирующий брандмауэр.


Итак, теперь вы знаете, что вызывает сообщение отказа Connection, вы должны предпринять соответствующие действия, например. обратитесь к администратору брандмауэра или выясните причину, по которой процесс не прослушивается.

1Другие инструменты, вероятно, доступны.


74
2017-09-28 12:13



Версия ELI5: это означает, что запрос на подключение был получен на другом компьютере, а другой компьютер не знал, о чем вы говорили. - immibis
«Никакой процесс не слушает». Основная причина ..! - Samitha Chathuranga


Для меня на Debian 6 сжатие было так просто, как проверка службы SSH:

sudo service ssh status

И ничего не найдено (с сообщением ssh: unrecognized service) просто установка сервиса:

sudo apt-get install openssh-server

Это также работает, если вы не получаете SFTP-соединение, поскольку SFTP является подмножеством SSH (тогда как FTPS является подмножеством FTP).


3
2018-05-16 09:39





Мой брандмауэр My Centos Shorewall исчерпал дисковое пространство. Смутно, некоторые сайты, такие как youtube и MS, работали. Другие, такие как cnn.com, не удались. Очистка места и перезапуск сервера исправили проблему для меня.


0
2017-11-03 13:19