เอาต์พุต 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. daemon รับฟังได้เพียงหนึ่งโปรโตคอล (น่าจะเป็น IPv4)
  3. ไคลเอ็นต์กำลังเชื่อมต่อผ่านโพรโทคอลเป็นครั้งแรกที่ daemon ไม่ได้รับฟังจากนั้นลองใช้งานที่เป็นอยู่

ตัวอย่างเช่น:

$ 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) ทำให้ daemon ฟังทั้งสองโปรโตคอล 3) บังคับให้ไคลเอ็นต์เชื่อมต่อโดยใช้โปรโตคอลอื่น
Patrick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.