1. 检查端口是否已开放
首先,确认端口是否已经在监听:
sudo ss -tulnp | grep <端口号> # 或 sudo netstat -tulnp | grep <端口号>
如果没有任何输出,说明端口未开放或服务未运行。
2. 配置服务监听端口
确保你的服务(如 Nginx、Apache、SSH、自定义应用等)已正确配置监听目标端口。
例如,修改 Nginx 的配置文件:
sudo nano /etc/nginx/sites-available/default找到
listen
指令,确保类似:server { listen 80; # 开放 80 端口 ... }
然后重启服务:
sudo systemctl restart nginx
3. 使用 UFW(推荐)开放端口
Ubuntu 默认使用 UFW(Uncomplicated Firewall) 管理防火墙。
(1) 检查 UFW 状态
sudo ufw status
如果显示 Status: inactive
,需先启用:
sudo ufw enable
(2) 开放端口
sudo ufw allow <端口号> # 开放 TCP 端口(默认) sudo ufw allow <端口号>/udp # 开放 UDP 端口 sudo ufw allow from <IP> to any port <端口号> # 仅允许特定 IP
示例:
sudo ufw allow 80/tcp # 开放 HTTP(80) sudo ufw allow 22 # 开放 SSH(22) sudo ufw allow 3000 # 开放自定义端口 3000
(3) 验证
sudo ufw status numbered
输出示例:
Status: active To Action From -- ------ ---- [1] 80/tcp ALLOW Anywhere [2] 22 ALLOW Anywhere
(4) 删除规则(可选)
sudo ufw delete <规则编号> # 如 sudo ufw delete 1
4. 使用 iptables(高级用户)
如果未使用 UFW,可以直接用 iptables
:
sudo iptables -A INPUT -p tcp --dport <端口号> -j ACCEPT
保存规则(否则重启后失效):
sudo apt install iptables-persistent
sudo netfilter-persistent save
5. 检查外部访问
在本地测试:
telnet <服务器IP> <端口号>
或使用 curl
:
curl http://<服务器IP>:<端口号>
如果无法连接,可能是:
-
防火墙未正确配置(检查 UFW/iptables)
-
服务未监听该端口(检查
ss -tulnp
)