![可以通过 SSH 访问 80 端口(使用 nginx 监听),但无法 ping 通,也无法访问任何其他端口(似乎?)](https://linux22.com/image/900525/%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20SSH%20%E8%AE%BF%E9%97%AE%2080%20%E7%AB%AF%E5%8F%A3%EF%BC%88%E4%BD%BF%E7%94%A8%20nginx%20%E7%9B%91%E5%90%AC%EF%BC%89%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%20ping%20%E9%80%9A%EF%BC%8C%E4%B9%9F%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E4%BB%BB%E4%BD%95%E5%85%B6%E4%BB%96%E7%AB%AF%E5%8F%A3%EF%BC%88%E4%BC%BC%E4%B9%8E%EF%BC%9F%EF%BC%89.png)
我整整一个星期都在思考这个问题,星期五快结束了,我决定上网查一下,看看有没有人能提供一些见解
我将删除所有我认为可能相关的信息,但同时省略了很多我认为不相关的信息
我在云端有一个运行 Ubuntu 的实例。另一个部门的工程师帮我设置了它,为了让我能够 ssh 进入它,我需要使用.pem
密钥
ssh -i mykey.pem ubuntu@IPOMITTED
为了测试我的理智,我安装了 nginx,当我使用以下代码访问服务器时,我成功进入了欢迎页面:
$ curl http://IPOMITTED:80
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
...
但是,如果我尝试 ping 服务器,就会失败
ping IPOMITTED
PING IPOMITTED (IPOMITTED): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
...
无论如何,这可能都不是一个问题。
问题是,我正在尝试启动一个名为 Sync Gateway 的服务器,它监听端口 4984。
我确信我已经正确安装了它,因为如果我在本地发出请求,我就能命中它。我不确定我是否缺少某种配置,这里有 sync_gateway 配置文件中的两行相关内容(但这个文件中实际上没有其他内容)
"adminInterface": "127.0.0.1:4985",
"interface": ":4984",
这是我的净统计数据:
sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:4985 0.0.0.0:* LISTEN 2148/sync_gateway
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1070/sshd
tcp6 0 0 :::4984 :::* LISTEN 2148/sync_gateway
tcp6 0 0 :::22 :::* LISTEN 1070/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 921/dhclient
这是我发出本地请求时得到的结果:
$ curl localhost:4984
{"couchdb":"Welcome","vendor":{"name":"Couchbase Sync Gateway","version":"2.0"},"version":"Couchbase Sync Gateway/2.0.0(832;2d8a6c0)"}
但如果我尝试远程发出请求:
$ curl IPOMITTED:4984
curl: (7) Failed to connect to IPOMITTED port 4984: Operation timed out
有人知道我该如何进一步调试吗?我的网络背景很少,我是从事客户工程的,所以任何小想法都可能有帮助。
谢谢你的时间!
编辑:根据@Steve 提供的更多信息:
$ sudo ufw status verbose
Status: inactive
-
$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 276K packets, 17M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-7d807f03cf39 !br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br-7d807f03cf39 br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 273K packets, 116M bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-2 all -- br-7d807f03cf39 !br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (2 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * br-7d807f03cf39 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
答案1
127.0.0.1:4985
意味着只有本地主机可以访问它,这是您的第一个问题。
对于网络测试,您可以使用以下nc
命令打开一个简单的连接:
nc -l -p 4984
然后从远程连接连接到它。尝试各种端口。如果这是“在云端”,则可能是网络防火墙问题。
答案2
是的,尽管我基本上已经问过这个确切的问题和信息,但我的服务器管理员告诉我这不是防火墙问题。但我回到他们那里并让他们再检查一下,是的,这就像为端口 4984 添加例外一样简单。
我认为引起混淆的原因是,管理员以为我做错了什么,当我解释说我可以从端口 80 获得响应,但不能从 4984 获得响应时,管理员就不再听我说话了。
TT