Каково происхождение и решение для ошибки "порт 9000: Соединение отказано"?
Я борюсь с port 9000: Connection refused
ошибка.
я работаю на Ubuntu 14.04
и столкнулся с проблемой при попытке запустить Hadoop
в нераспределенном режиме, как отдельный процесс Java (сравните документацию Hadoop 2.4.1). Я пытался следовать рекомендациям Hadoop Wiki по этой ошибке ( https://wiki.apache.org/hadoop/ConnectionRefused), но у меня ничего не получилось (я новичок Ubuntu
Пользователь и затрудняется даже на 100% понять высказанные предложения). Я опубликовал вопрос stackoverflow, из которого я заключаю, что у меня есть некоторые общие проблемы с port 9000 Connection
,
выводtelnet:
martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
выводnmap:
martakarass@marta-komputer:~$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-27 11:09 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
902/tcp open iss-realsecure
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
КонфигурацияNetcat:
Я попытался использовать следующую команду, чтобы заставить порт 9000 быть открытым:
nc -k -l 9000
но это не сработало (я все еще не мог выполнить отдельную операцию, упомянутую и связанную выше).
Судя по результатам моих исследований в Google, я вижу, что проблема довольно распространенная и создает огромную борьбу, особенно для тех, кто не разбирается в "вопросах, связанных с работой администратора". Поскольку я принадлежу к ним, прошу ответить на следующие вопросы:
Q1: Какова причина такой проблемы в целом? (Некоторые для непрофессионала вводные слова / ссылки об основных проблемах, связанных с портами / соединениями и т. Д., Были бы очень очень полезны).
Q2: как бороться с этой проблемой?
Обновить.
sudo netstat -nlp | grep :9000
ничего не возвращает
3 ответа
В конце концов мне удалось заставить мою службу прослушивать порт 9000, добавив к /etc/ssh/sshd_config
подайте следующую строку:
Port 9000
Я следовал за этим https://help.ubuntu.com/lts/serverguide/openssh-server.html (он также содержит некоторые важные замечания о создании копии исходного файла, перезапуске приложения sshd-сервера и т. Д.)
После этого я вижу:
выводtelnet:
martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
Connected to localhost.
выводnmap:
martakarass@marta-komputer:~$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-01 18:28 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00023s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
902/tcp open iss-realsecure
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
выводnetstat:
martakarass@marta-komputer:~$ sudo netstat -nlp | grep :9000
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 16397/sshd
tcp6 0 0 :::9000 :::* LISTEN 16397/sshd
Попробуйте отключить iptables:
sudo service iptables stop && sudo service ip6tables stop
Затем перезапустите hadoop. Если это помогло, вам нужно правильно настроить брандмауэр.
TL;DR сначала, более подробная информация следующая:
"Отказ в соединении" - это ошибка, возникающая при попытке подключиться к службе на компьютере или сервере (или локально на вашем собственном компьютере), когда указанная служба либо не прослушивает указанный порт TCP (неверный порт или служба не запущена) или когда брандмауэр явно отклоняет соединение, а не игнорирует запрос (не очень распространенное поведение).
А теперь немного подробнее:
Это может произойти только с 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