Firewall

為什麼我無法遠端登錄到具有偵聽服務的本地埠?

  • November 15, 2011

我懷疑這要麼是一個非常簡單的問題,要麼是一個非常複雜的問題。

我有一個執行 ubuntu 10.04 的無頭伺服器,我可以通過 ssh 進入。我對系統具有完全的 root 訪問權限。我正在嘗試建立一個 ssh 隧道以允許我通過 vnc 訪問系統(但這不是我的問題。

我在埠 5903 上執行 vnc,這是 netstat 的輸出:


Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:5903            0.0.0.0:*               LISTEN      7173/Xtightvnc
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
465/sshd

但是當我嘗試從同一系統中遠端登錄到該埠並登錄時,我無法連接錯誤


# telnet localhost 5903
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection timed out

我能夠遠端登錄到埠 22(作為驗證)


~# telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7

我嘗試使用 ufw 打開任何可能的埠(可能是笨拙的方式)


# ufw status numbered
Status: active

    To                         Action      From
    --                         ------      ----
[ 1] 5903                       ALLOW IN    Anywhere
[ 2] 22                         ALLOW IN    Anywhere

還有什麼可能會在本地阻止此連接?

謝謝,

編輯:

iptable -L -n 中對埠 5903 的唯一引用是:


Chain ufw-user-input (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5903
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:5903
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:8080

如果有用的話,我可以發布整個輸出。

hosts.allow 和 hosts.deny 都只包含註釋。

重新編輯:其他一些問題將我指向 nmap,所以我通過該實用程序執行了埠掃描:


# nmap -v -sT localhost -p1-65535

Starting Nmap 5.00 ( http://nmap.org ) at 2011-11-09 09:58 PST
NSE: Loaded 0 scripts for scanning.
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Initiating Connect Scan at 09:58
Scanning localhost (127.0.0.1) [65535 ports]
Discovered open port 22/tcp on 127.0.0.1
Connect Scan Timing: About 18.56% done; ETC: 10:01 (0:02:16 remaining)
Connect Scan Timing: About 44.35% done; ETC: 10:00 (0:01:17 remaining)
Completed Connect Scan at 10:00, 112.36s elapsed (65535 total ports)
Host localhost (127.0.0.1) is up (0.00s latency).
Interesting ports on localhost (127.0.0.1):
Not shown: 65533 filtered ports
PORT   STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 112.43 seconds
          Raw packets sent: 0 (0B) | Rcvd: 0 (0B)

我認為這表明 5903 以某種方式被阻止。我幾乎知道。問題仍然是什麼阻礙了它以及如何修改。

重新編輯:

為了檢查 Paul Lathrop 的建議答案,我首先使用 ifconfig 驗證了我的 IP 地址:


eth0      Link encap:Ethernet  HWaddr 02:16:3e:42:28:8f
         inet addr:10.0.10.3  Bcast:10.0.10.255  Mask:255.255.255.0

然後嘗試從該地址遠端登錄到 5903:


# telnet 10.0.10.3 5903
Trying 10.0.10.3...
telnet: Unable to connect to remote host: Connection timed out

沒運氣。

重新重新重新編輯:

好的,我想我已經將它與 vncserver 隔離了一點,而不是防火牆,該死的。我關閉了 vncserver 並讓 netcat 在埠 5903 上偵聽。然後我的 vnc 客戶端能夠建立連接並坐下來等待響應。看起來我應該追逐一個vnc問題。至少這是進步 感謝您的幫助

好的,我想我已經將它與 vncserver 隔離了一點,而不是防火牆,該死的。我關閉了 vncserver 並讓 netcat 在埠 5903 上偵聽。然後我的 vnc 客戶端能夠建立連接並坐下來等待響應。看起來我應該追逐一個vnc問題。至少這是進步 感謝您的幫助

您的 VNC 伺服器很可能沒有綁定到環回介面。我也遇到過一些 Java 守護程序,它們聲稱正在偵聽 0.0.0.0,直覺上應該包括環回,但實際上它們只綁定到“外部”網路介面。嘗試:telnet <LOCAL_IP> 5904; 如果它連接,那麼您的 VNC 伺服器未綁定到環回介面。

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