Linux-Networking

帶有nc的簡單客戶端/伺服器不起作用

  • March 1, 2021

為什麼以下不起作用?

我有一個新安裝的 Debian 9 系統。iptables是敞開的:

[···]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

我在兩個單獨的控制台上登錄(嗯,兩個單獨的 ssh 登錄)。在其中一個中,我執行:

[···]# nc -l 11115

然後,我轉到另一個控制台,然後執行:

[···]# nc localhost 11115

我得到一個連接被拒絕的錯誤:

[···]# nc localhost 11115
localhost [127.0.0.1] 11115 (?) : Connection refused

我也試過nc 127.0.0.1 11115,試過telnet—總是拒絕連接

在“聆聽”方面,我也嘗試過nc -l localhost 11115— 沒有區別。

我錯過了什麼或做錯了什麼?

$$ EDIT $$:在 CentOS 6.9 機器上,上述完全相同的命令按預期工作。在我家裡的 Ubuntu 14.04 上也是如此。我認為可能是以 root 身份執行會nc禁止某些功能。但是不,我只是在 Debian 9 機器上以普通使用者身份嘗試過,但同樣失敗了。任何想法為什麼?

實際上有四個(或更多?)稱為nc(netcat)的不同程序,它們是很久以前和遙遠的相同基本程序的分支或重寫。

Debian 中的預設值似乎是它所稱netcat-traditional的,古老的原始版本。我能夠用 netcat-traditional 重現這個問題;聽著好像很破。它實際上並沒有綁定到埠;我看不到它在輸出中監聽ss,也沒有看到它在 strace 下執行時嘗試綁定。

另一個可用的 Debian 軟體包稱為netcat-openbsd,它是 OpenBSD 開發人員目前維護的原始 netcat 的一個分支。如果您安裝此軟體包,您應該會發現它可以工作(然後您可以刪除netcat-traditional)。

還有另一個 netcat 包,由基於 Red Hat 的系統使用,由 nmap 和 insecure.org 的 Fyodor 和其他開發人員開發和維護。它從頭開始完全重寫,不使用傳統的 netcat 或 BSD netcat 程式碼。它也可以正常工作。它的包名(在 Red Hat 系統上)是nmap-ncat.

我最近了解了第四個 netcat,GNU netcat,它也是一個徹底的重寫,但在 2007 年被放棄了。奇怪的是,一兩個 Linux 發行版(例如 Arch)仍然提供它。

引用自:https://serverfault.com/questions/960798