我的 Ubuntu 15.04 机器上的 4444 端口上运行着一个 php 服务器。现在我执行它时,telnet 127.0.0.1 4444
它工作正常。现在我已使用移动热点连接了我的机器和一台 Windows 7 机器。我使用ifconfig
显示
wlan0 Link encap:Ethernet HWaddr b4:b6:76:b2:18:b7
inet addr:192.168.43.115 Bcast:192.168.43.255 Mask:255.255.255.0
inet6 addr: fe80::b6b6:76ff:feb2:18b7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23468 errors:0 dropped:0 overruns:0 frame:0
TX packets:21537 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15077925 (15.0 MB) TX bytes:3582649 (3.5 MB)
现在,当我telnet 192.168.43.115 4444
在 Windows 机器上执行时,我得到Could not open connection to the host, on port 4444: Connect Failed
。nmap -sU 127.0.0.1 -p 4444
显示以下内容
Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-22 23:03 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
PORT STATE SERVICE
4444/udp closed krb524
并netstat -tulpn
显示以下内容
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN 1611/php
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::21 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
udp 0 0 127.0.1.1:53 0.0.0.0:* -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 0.0.0.0:21107 0.0.0.0:* -
udp 0 0 0.0.0.0:631 0.0.0.0:* -
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1744/chromium-brows
udp 0 0 0.0.0.0:5353 0.0.0.0:* -
udp 0 0 0.0.0.0:34051 0.0.0.0:* -
udp6 0 0 :::56100 :::* -
udp6 0 0 :::25246 :::* -
udp6 0 0 :::5353 :::* -
我该如何解决这个问题?请帮忙。提前致谢
答案1
不建议使用 telnet,而应使用 SSH。原因是 telnet 通信未加密,容易被窃听。
您可以通过安装 openssh-server 使您的 PHP 服务器允许通过 SSH 进行远程连接:
sudo apt-get 安装 openssh-server
如果您仍想使用 telnet,那么根据您的输出,似乎您的 Linux 机器上的端口 4444 未打开。假设您没有在该计算机上设置防火墙,则似乎您的服务器未运行 telnet 服务器。要安装该服务:
sudo apt-get 安装 telnetd
我希望这有帮助。
答案2
在您的netstat
输出中,该行
tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN 1611/php
表示 php(进程号 1611)正在监听TCP端口 4444内部的地址 127.0.0.1。该地址位于环回接口上,只能从本地主机(即您的 Ubuntu 计算机)访问,而不能从 Windows 计算机访问。
相比之下,例如,您的 chromium-brows...(PID 1744)监听0.0.0.0
,它很特殊,意味着“所有接口”(因此它应该可以从外部访问,例如 Windows 机器)。
您的 nmap UDP 探测报告端口“已关闭”,因为 php 使用 TCP 协议。
我发现lsof
调查正在监听的内容很有用,但是。为了在我的计算机上获取一些输出,我将请求端口 22(SSH)而不是 4444:
$ sudo lsof -P -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 2152 root 5u IPv4 10192 0t0 TCP *:22 (LISTEN) sshd 2152 root 6u IPv6 10194 0t0 TCP *:22 (LISTEN)
您会看到它监听“*”(所有接口)。与您的情况一样,UDP 扫描不会发现它已打开:
$ sudo nmap -sU 127.0.0.1 -p 22
Starting Nmap 6.40 ( http://nmap.org ) at 2015-12-22 13:53 EST Nmap scan report for localhost (127.0.0.1) Host is up (0.000048s latency). PORT STATE SERVICE 22/udp closed ssh
Nmap done: 1 IP address (1 host up) scanned in 0.37 seconds
以上就是对您所看到内容的解释。要修复此问题,您应该指示 PHP 服务器监听 0.0.0.0 或 *,而不是 127.0.0.1 或“localhost”。我不知道该程序;如果您无法更改其配置,您可以随时使用ssh
或iptables
转发端口。
/奎吉