为什么我无法 telnet 到具有监听服务的本地端口?

为什么我无法 telnet 到具有监听服务的本地端口?

我认为这要么是一个非常简单的问题,要么是一个非常复杂的问题。

我有一台运行 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

我可以 telnet 到端口 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

然后尝试从该地址 telnet 到 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 问题。至少这是进步,感谢您的帮助

答案1

好的,我想我已经将它隔离到 vncserver 上,而不是防火墙上,该死。我关闭了 vncserver,让 netcat 监听端口 5903。然后我的 vnc 客户端能够建立连接并等待响应。看起来我应该追踪 vnc 问题。至少这是进步,感谢您的帮助

答案2

最有可能的是您的 VNC 服务器未绑定到环回接口。我也遇到过一些 Java 守护进程,它们声称正在监听 0.0.0.0,直观上应该包括环回,但实际上它们仅绑定到“外部”网络接口。尝试:telnet <LOCAL_IP> 5904;如果它连接,则您的 VNC 服务器未绑定到环回接口。

相关内容