【发布时间】:2022-02-23 21:07:25
【问题描述】:
在我的 Ubuntu 12.04 VM 上,当本地使用时,应用程序 (Tryton) 在端口 8000 上正常运行。但是,从外部我无法通过 Internet 连接到端口 8000。 (之前,我使用的是具有用户友好端点配置的 Windows Azure。)
Netstat,在本地运行,将端口报告为正在侦听: (我称这个虚拟机为“NoConnection”,以区别于下文)
root@NoConnection:~# netstat -tupan | grep 8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
10051/python
tcp 0 0 127.0.0.1:8000 127.0.0.1:58160 ESTABLISHED
10051/python
tcp 0 0 127.0.0.1:58160 127.0.0.1:8000 ESTABLISHED
10860/python
使用 nmap 进行本地检查似乎也可以:
root@NoConnection:~# nmap -v -A -PN localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2014-03-05 09:55 EST
NSE: Loaded 36 scripts for scanning.
Initiating SYN Stealth Scan at 09:55
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 3389/tcp on 127.0.0.1
Discovered open port 8000/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Discovered open port 5432/tcp on 127.0.0.1
Discovered open port 5910/tcp on 127.0.0.1
Completed SYN Stealth Scan at 09:55, 0.03s elapsed (1000 total ports)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.1 (protocol 2.0)
631/tcp open ipp CUPS 1.5
3389/tcp open microsoft-rdp xrdp
5432/tcp open postgresql PostgreSQL DB
5910/tcp open vnc VNC (protocol 3.8)
8000/tcp open http-alt?
顺便说一句,8000 端口是 Tryton ERP,但 nmap 不知道。
但是,从另一台机器进行的 nmap 扫描 *没有* 找到打开的端口:
root@WorksRight:~# nmap -v -A -PN IP_of_NoConnect_VM
Starting Nmap 5.21 ( http://nmap.org ) at 2014-03-05 15:00 UTC
NSE: Loaded 36 scripts for scanning.
Initiating Parallel DNS resolution of 1 host. at 15:00
Completed Parallel DNS resolution of 1 host. at 15:00, 0.08s elapsed
Initiating SYN Stealth Scan at 15:00
Scanning IP_of_NoConnect_VM [1000 ports]
Discovered open port 22/tcp on IP_of_NoConnect_VM
Discovered open port 3389/tcp on IP_of_NoConnect_VM
Discovered open port 5910/tcp on IP_of_NoConnect_VM
Completed SYN Stealth Scan at 15:00, 0.13s elapsed (1000 total ports)
我想这不是 Tryton 应用程序特有的,而是 Linux VM 设置端口的方式。
作为参考,在正确配置 Tryton 并可通过端口 8000 访问的不同 VM(在 Windows Azure 上)上,端口 8000 的 netstat 输出显示为:
root@WorksRight:~# netstat -tupan | grep 8000
tcp6 0 0 :::8000 :::* LISTEN
1310/python
tcp6 0 0 127.0.0.1:8000 127.0.0.1:36818 TIME_WAIT
-
tcp6 0 0 127.0.0.1:8000 127.0.0.1:36820 TIME_WAIT
-
tcp6 0 0 127.0.0.1:8000 127.0.0.1:36814 TIME_WAIT
-
tcp6 0 0 127.0.0.1:8000 127.0.0.1:36813 TIME_WAIT
-
在未连接的虚拟机上显示:
root@NoConnection:~# netstat -tupan | grep 8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
10051/python
tcp 0 0 127.0.0.1:8000 127.0.0.1:58160 ESTABLISHED
10051/python
tcp 0 0 127.0.0.1:58160 127.0.0.1:8000 ESTABLISHED
10860/python
当然,是的,我已经检查过了,两台机器都在特定于应用程序的 trytond.conf 文件中打开了端口:
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
[options]
# Activate the json-rpc protocol
jsonrpc = *:8000
【问题讨论】:
-
好像只监听你本地IP(127.0.0.1)的8000端口,而不监听你外部IP的8000端口
-
公司支持回复:# nmap -PN -p 8000 188.226.146.149 PORT STATE SERVICE 8000/tcp closed http-alt 当在nmap扫描中看到“关闭”时,表示端口在打开,但应用程序未在该端口和/或公共接口上侦听。如果您已将其配置为侦听端口 8000,请确保您的 Web 服务正在侦听公共接口 ---
-
但是,afaik,它正在运行,并且就通常的检查 (netstat) 报告而言,它正在监听。
-
它在本地主机上运行,而不是在公共界面上。它不应该只在 127.0.0.1 上监听,而是在公共 IP 地址上监听,因为这是其他计算机连接的(请参阅 ifconfig 以查看您的公共 IP 是什么)。与 nmap 命令相同——不要对本地主机进行 nmap,而是对您的公共 IP 进行 nmap。我不认识 Tryton,所以不知道如何让它做到这一点,但这就是问题所在。