Netcat gagal memulai dalam mode mendengarkan

13

Saya menggunakan sistem CentOS 6.7 (Final), dan ketika saya mencoba menjalankannya ncdalam mode mendengarkan, ia mencetak yang berikut ini:

# nc -l 1234
nc: Protocol not available

Port tidak terikat. Saya mencoba nomor port lain juga. Bug ini tampaknya sudah dilaporkan: https://access.redhat.com/solutions/1753753 . Sayangnya itu tidak terlalu detail.

Informasi paket:

Name        : nc
Arch        : x86_64
Version     : 1.84
Release     : 24.el6

Apakah ada hal lain yang perlu saya coba?

Ilya I
sumber
Versi nc mana yang Anda gunakan?
Jenny D
@ JennyD Saya memperbarui posting, silakan periksa
Ilya I
1
Sayangnya satu-satunya perbaikan adalah penurunan versi, seperti dijelaskan di bawah ini. Saya juga memberikan suara untuk memindahkan pertanyaan ini ke Unix & Linux karena ini tidak sepenuhnya tentang administrasi sistem. Ini adalah situs yang bagus dengan beberapa ahli yang membuat saya kagum, jadi jangan berpikir bahwa pemungutan suara dekat adalah karena pertanyaan Anda buruk atau apa.
Jenny D

Jawaban:

17

Saya mengalami masalah yang sama. Anda dapat menyelesaikannya dengan cara ini:

# Removes the old package
yum erase nc

# Manually downloads the working package from the Official Repository
wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm

# Installs the package
rpm -iUv nc-1.84-22.el6.x86_64.rpm

Harap dicatat bahwa paket ini untuk x86_64(64-bit). Jika Anda membutuhkan i386(32-bit), yang benar adalah:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
Eddie C.
sumber
Menggunakan rpm dengan flag -i dan -U secara bersamaan terlihat aneh (tetapi berfungsi). Doa standar lainnya adalah -ivh atau -Uvh.
dmourati
1
bekerja seperti pesona!
Shawn Guo
Jalan ini tidak lagi berfungsi
BradLaney
@BradLaney kenapa tidak?
Eddie C.
@ EddieC. URL itu bagi saya ketika saya memberikan komentar. Tampaknya berfungsi sekarang. Lupakan.
BradLaney
9

Versi netcat tertentu ini memiliki bug. Sampai ada perbaikan untuk itu, satu-satunya hal yang dapat Anda lakukan adalah menurunkan versi ke versi sebelumnya - sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64harus melakukan trik.

Jenny D
sumber
1
Tidak yummemiliki argumen yang dapat menurunkan versi ke versi tertentu dari paket tanpa menghapus instalan terlebih dahulu?
kasperd
Bagus, tapi saya tidak bisa menurunkan peringkat. Yum mengatakan tidak ada paket yang tersedia (baik installdengan versi spesifik dan downgradeperintah). Juga mencoba mencari file rpm itu dan belum menemukan.
Ilya I
4

Membalas pertanyaan:

  1. YA, downgrade diperlukan agar nc dapat mendengarkan. dan untuk komentar lainnya:

a) -p tidak seharusnya digunakan saat dalam mode mendengarkan. dari nc manpage:

-l Digunakan untuk menentukan bahwa nc harus mendengarkan koneksi yang masuk daripada memulai koneksi ke host jarak jauh. Ini adalah kesalahan untuk menggunakan opsi ini dalam hubungannya dengan opsi -p, -s, atau -z.

b) downgrade dapat dilakukan dalam satu langkah, yum perintah downgrade bekerja dengan url ke paket:

$ rpm -q nc
nc-1.84-24.el6.x86_64
$ nc -l 12345 #Although the syntax is correct, the command fails
nc: Protocol not available
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ sudo yum downgrade http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm  #shortcut to downgrade
...
Setting up Downgrade Process
nc-1.84-22.el6.x86_64.rpm                                                              |  57 kB     00:00
Examining /var/tmp/yum-root-Iq4yc7/nc-1.84-22.el6.x86_64.rpm: nc-1.84-22.el6.x86_64
Resolving Dependencies
--> Running transaction check
---> Package nc.x86_64 0:1.84-22.el6 will be a downgrade
---> Package nc.x86_64 0:1.84-24.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package          Arch                 Version                     Repository                            Size
==============================================================================================================
Downgrading:
 nc               x86_64               1.84-22.el6                 /nc-1.84-22.el6.x86_64               109 k

Transaction Summary
==============================================================================================================
Downgrade     1 Package(s)

Total size: 109 k
Is this ok [y/N]: y
...
Removed:
  nc.x86_64 0:1.84-24.el6

Installed:
  nc.x86_64 0:1.84-22.el6

Complete!
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ nc -l 12345 # try to listen again
^C
$#nc successully opens a socket on 12345. had to stop it with ctrl+C
RSH
sumber
0
# nc -l -p 1234

Anda dapat mendengarkan port itu dengan menggunakan -pbendera:

-p source_port
         Specifies the source port nc should use, subject to privilege restrictions and availability.

Masalahnya adalah di sepanjang garis ncmemperlakukan 1234 sebagai port tujuan (meskipun dijalankan dalam mode mendengarkan), dan mencoba untuk mendengarkan pada port 0 (yang menghasilkan pesan aneh). Melewati -ppekerjaan secara eksplisit di sekitarnya.

Malaikat
sumber
Saya mencoba ini pada centos 6 dan tidak berhasil menggunakan versi nc-1.84-24 Perbaikannya adalah menurunkan versi ke versi nc-1.84-22 sesuai jawaban yang diterima.
Criggie
versi itu tidak memungkinkan menggunakan -p dengan -l.
andrej
-3

instal nmap:

yum instal nmap

mencoba:

ncat -l 1234

Ronald Gutierrez
sumber
Silakan baca pertanyaan dan jawaban yang sudah disediakan untuk mempelajari mengapa jawaban Anda tidak cukup dalam kasus tertentu.
Sven