Що означає цей вихід Netcat?


11

Я хочу передати телнет на свій локально запущений VM, який має послугу 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:?

Відповіді:


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) змусити клієнта підключитися за допомогою іншого протоколу.
Патрік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.