我需要为我的应用程序打开端口8081
。我想从另一台服务器连接到该应用程序。问题我无法打开端口。我使用端口 8081 和 IP 0.0.0.0 和 127.0.0.1 启动了该应用程序,我启用了 ufw/禁用了 ufw,我阅读了教程https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04
我的系统:
分销商 ID:Ubuntu D
描述:Ubuntu 20.04 LTS
发行:20.04
代号:focal
输出sudo lsof -i -P -n | grep LISTEN
:
app 4431 foo 27u IPv4 64011 0t0 TCP *:8081(监听)
输出sudo ufw status
状态:活跃
至 操作 从 -- ------ ---- 22/tcp 允许任何地方
8081/tcp 允许任何地方
22 允许任何地方
8081 允许任何地方
22/tcp (v6) 允许任何地方 (v6)
8081/tcp (v6) 允许任何地方 (v6)
22 (v6) 允许任何地方 (v6)
8081 (v6) 允许任何地方 (v6)
nmap 输出:
启动 Nmap 7.80 (https://nmap.org) 于 2020-06-09 21:03 UTC Nmap 扫描报告 myip.bc.googleusercontent.com (myip) 主机已启动(延迟时间为 0.00062 秒)。未显示:999 个已过滤端口 PORT STATE SERVICE 22/tcp 开放 ssh
Nmap 完成:扫描 1 个 IP 地址(1 个主机启动)耗时 8.19 秒
答案1
如果您正在使用 Google 云计算实例,那么您的实例可能有一个具有其自己的默认防火墙规则的 VPC:
https://cloud.google.com/vpc/docs/firewalls
这默认网络已预先填充允许传入连接到实例的防火墙规则。可以根据需要删除或修改这些规则:
默认允许内部 允许网络中实例间所有协议和端口的入站连接。此规则的优先级为 65534,为倒数第二,可有效允许同一网络中其他实例与虚拟机实例建立入站连接。
默认允许 ssh 允许从任何来源到网络中的任何实例的 TCP 端口 22 上的入站连接。此规则的优先级为 65534。
默认允许-rdp 允许从任何来源到网络中的任何实例在 TCP 端口 3389 上建立入口连接。此规则的优先级为 65534,它允许与运行 Microsoft 远程桌面协议 (RDP) 的实例建立连接。
默认允许 ICMP
允许从任何来源到网络中的任何实例的入口 ICMP 流量。此规则的优先级为 65534,并启用 ping 等工具
所以默认规则不包括任何地方的端口 8081......
您可以使用此文档在 Google 云平台 Web 控制台(VPC 网络 -> 防火墙)上创建一个新的 Fireall 规则以允许进入 8081:
https://cloud.google.com/vpc/docs/using-firewalls#creating_firewall_rules
它看起来像这样
还
nmap 有点慢,因此您可能需要尝试直接使用 telnet 或 nc 连接:
$ telnet myip.bc.googleusercontent.com 8081
Trying 123.123.123.123...
Connected to myip.bc.googleusercontent.com.
Escape character is '^]'.
^]
或者
$ nc -zv myip.bc.googleusercontent.com 8081
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Connected to 123.123.123.123:1234.
Ncat: 0 bytes sent, 0 bytes received in 0.24 seconds.