Linux

本地主機上的 Netcat“連接被拒絕”

  • March 15, 2017

我試圖從netcat一個 php 文件開始的連接中獲取一個值,但它死於:

localhost [127.0.0.1] 2000 (?) : Connection refused

我不知道為什麼,但是如果我以 apache 使用者(www-data)的身份 ssh 它會很好。這就是我所做的:

  1. 開始一個無限循環服務一個有一點延遲的日期:
$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
  1. 檢查是否工作:
$ su www-data
$ nc localhost 2000
Fri Oct 16 21:33:20 COT 2009
  1. 創建 /var/www/test.php 如下:
<?php
exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
?>
  1. 在瀏覽器上執行它:
http://myserver.com/test.php
  1. 最後看看兩個 txt,日期是空的(與 #2 中的響應不同)並且錯誤有“連接被拒絕”錯誤。

該伺服器是一個執行 Ubuntu Server 9.04 的 LAMP 集群,帶有 DRBD 和 Heartbeat。

讓我發瘋的是,這個 test.php 在我的筆記型電腦(Ubuntu Desktop 9.04 上的 LAMP)上執行良好,並且伺服器似乎已經打開並監聽了埠:

$ netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:4743            0.0.0.0:*               LISTEN      2326/openhpid   
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3364/mysqld     
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      9510/nc         
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3470/apache2    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2320/sshd       
tcp        0      0 127.0.0.1:3551          0.0.0.0:*               LISTEN      2354/apcupsd    
tcp6       0      0 :::22                   :::*                    LISTEN      2320/sshd

這是我真正想要存檔的內容:圖表(我還沒有足夠的點數來插入圖像,哈哈)

  • 當伺服器請求時,將重量值從汽車衡發送到伺服器
  • 將原始文本(epson 轉義文本格式)發送到列印機的串口

因此,在客戶端 pc 中不斷執行兩個偵聽netcat連接,一個用於獲取權重,另一個用於列印原始文本。

好吧,畢竟這是一個權限問題…修復了使用 visudo 編輯 /etc/sudoers 以添加:

www-data ALL = NOPASSWD: /bin/nc

檢查本地介面是否已啟動。

ip link

應該告訴你。本地介面可能已關閉,不太可能,但有可能。

你想看到類似的東西:

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

另外,看看ip route。看看那裡有沒有絕對瘋狂的事情。

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