可以通过 localhost:port 访问我机器上的服务,但不能通过 ip:port 访问

可以通过 localhost:port 访问我机器上的服务,但不能通过 ip:port 访问

我想访问我机器的 http rest 服务(公开在端口 5000 上),但我只能通过访问来实现localhost:5000,而不能通过我的 IP192.168.1.1:5000来实现。192.168.1.1

我之后尝试过

nc -l localhost 5001

nc localhost 5001 // works 
nc 192.168.1.1 5001 //doesn't work

当我尝试从其他设备访问它时,也会发生同样的情况。输出形式netstat

 tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      29622/python

我在这里遗漏了什么?

编辑

另一方面,ssh两种用法均可用。该机器上没有运行 iptables。

编辑

有趣的

$ sudo nmap -sS 192.168.1.1/32
Starting Nmap 6.40 ( http://nmap.org ) at 2014-09-17 00:20 CEST
Nmap scan report for XXXXX.home (192.168.1.1)
Host is up (0.0000060s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
222/tcp  open  rsh-spx
5500/tcp open  hotline

Nmap done: 1 IP address (1 host up) scanned in 2.42 seconds
$ sudo nmap -sS localhost/32
Starting Nmap 6.40 ( http://nmap.org ) at 2014-09-17 00:20 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
222/tcp  open  rsh-spx
631/tcp  open  ipp
5000/tcp open  upnp
5001/tcp open  commplex-link
5500/tcp open  hotline
8600/tcp open  asterix

Nmap done: 1 IP address (1 host up) scanned in 2.44 seconds

答案1

默认情况下,SSH 会监听所有接口。我认为您正在运行的服务只监听本地主机接口(lo127.0.0.1)。通过正确配置相关服务,您可以监听所有接口。

例如,Tor 可以这样配置:

SocksListenAddress 0.0.0.0:8050

ApacheVirtualHost定义指定*:80,等等。

相关内容