记录一下ubuntu22.02可以ping通,但是telnet不行

发布于:2025-07-12 ⋅ 阅读:(62) ⋅ 点赞:(0)

Ubuntu 22.04 网络故障记录:可 Ping 不可 Telnet

 问题描述

在 Ubuntu 22.04 系统中,目标主机可以通过 ping 命令正常连通,但使用 telnet 命令连接某个端口时失败


 现象举例

# ping 正常
ping 192.168.1.100

# telnet 失败(如连接 80 端口)
telnet 192.168.1.100 80
# 或报错:
# telnet: Unable to connect to remote host: Connection refused

 排查思路

 1. 网络连通性检查

ping 192.168.1.100
traceroute 192.168.1.100

 说明 ICMP 协议通,网络无丢包,路由正常。


 2. 检查目标端口监听状态

在目标主机(192.168.1.100)上执行:

sudo ss -tuln

确认是否存在监听端口,例如 80 端口是否由某服务(如 nginx、apache)监听:

LISTEN  0  128  0.0.0.0:80  0.0.0.0:*  

若未监听,说明服务未启动或端口未开放。


 3. 检查防火墙设置(ufw

在目标主机上运行:

sudo ufw status

可能输出:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere

如果目标端口(如 80)未被允许,需要放行:

sudo ufw allow 80

重新载入防火墙规则:

sudo ufw reload

 4. 确认服务是否正常运行

例如目标主机为 Web 服务:

sudo systemctl status nginx
# 或 apache2,或其他服务

若服务未运行:

sudo systemctl start nginx

 5. 检查目标服务是否绑定正确 IP

有些服务默认只绑定到 127.0.0.1,外部访问失败。

检查配置文件:

  • nginx: /etc/nginx/sites-enabled/default

  • apache: /etc/apache2/ports.conf

确保监听地址为 0.0.0.0 或服务器公网 IP。


6. SELinux/AppArmor(可选)

Ubuntu 默认使用 AppArmor,可能限制了某些服务的网络访问。

查看是否启用 AppArmor:

sudo aa-status

若相关服务被限制,可尝试临时或永久放宽策略(高级操作)。


 7. Telnet 客户端是否安装

有些系统未默认安装 telnet

sudo apt install telnet

 结论与解决方案总结

项目 检查项 结果 处理方式
网络连通 ping 成功 ✅ 正常 -
服务监听 ss -tuln 无 80 端口 ❌ 异常 启动服务
防火墙规则 ufw status 拒绝 80 ❌ 异常 ufw allow 80
服务状态 nginx 未运行 ❌ 异常 systemctl start nginx
IP 绑定 仅监听 127.0.0.1 ❌ 异常 配置为 0.0.0.0
telnet 工具 未安装 ❌ 异常 apt install telnet

 附录

telnet 使用说明

telnet [IP] [PORT]
# 示例:
telnet 192.168.1.100 22

 备注

  • ping 通并不代表 TCP 端口通,ping 使用 ICMP,而 telnet 使用 TCP。

  • 建议使用 telnet 或更现代的工具如 nccurlss 进行端口测试。