Что означает этот вывод netcat?

11

Я хочу подключиться к моей локальной виртуальной машине с сервисом dictd, работающим на порту 2628, когда я запускаю команду nc -v, но получаю следующее:

$ nc -v localhost 2628
nc: connectx to localhost port 2628 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 63929
    dst 127.0.0.1 port 2628
    rank info not available
    TCP aux info available

Connection to localhost port 2628 [tcp/dict] succeeded!

Почему в соединении отказано, а затем соединение установилось позже? Что это значит и почему он не примет мою связь, когда я просто делаю telnet localhost 2628:?

Raul77
источник

Ответы:

11

Доступно несколько десятков версий netcat, но это, вероятно, потому что:

  1. У вас есть 2 записи для localhostв /etc/hosts. Один для IPv4, другой для IPv6.
  2. Демон прослушивает только один протокол (вероятно, IPv4).
  3. Клиент сначала подключается по протоколу, который демон не слушает, а затем пробует тот, который он использует.

Например:

$ grep localhost /etc/hosts
127.0.0.1 localhost
::1 localhost

$ nc -4 -l -p 9000 -s 127.0.0.1     
nc: listening on 127.0.0.1 9000 ...


$ nc localhost 9000
nc: cannot connect to localhost (::1) 9000 [9000]: Connection refused
nc: localhost (127.0.0.1) 9000 [9000] open
nc: using stream socket
Патрик
источник
Хорошо, если это то, что происходит, как это исправить?
Raul77
Исправить любой из 3 пронумерованных предметов. 1) удалить одну из записей из /etc/hosts. 2) заставить демона слушать оба протокола. 3) заставить клиента подключиться по другому протоколу.
Патрик