You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora Linux连接CentOS Samba服务报错‘No route to host’求助

排查Fedora访问CentOS Samba出现"No route to host"的问题

我来帮你一步步排查这个问题,“No route to host”本质是网络层面的连通性故障,但结合Samba服务的场景,我们可以从基础到深入逐步定位:

  • 第一步:验证基础网络连通性
    先确认Fedora客户端和CentOS服务端的基础网络是通的,在Fedora终端执行:

    ping 192.168.1.76
    
    • 如果ping不通:说明问题出在底层网络,比如IP配置错误、子网掩码不匹配、物理链路故障(网线松脱、交换机端口异常),先解决这个基础问题再继续。
    • 如果ping通了:说明网络层没问题,接下来检查Samba服务的端口可达性。
  • 第二步:测试Samba核心端口的连通性
    Samba依赖TCP 139(NetBIOS会话服务)、TCP 445(SMB直接访问),还有UDP 137/138(NetBIOS名称解析),用nc工具测试端口是否开放:

    # 测试TCP 139端口
    nc -zv 192.168.1.76 139
    # 测试TCP 445端口
    nc -zv 192.168.1.76 445
    

    如果提示“Connection refused”或者超时,说明端口被拦截,重点检查服务端防火墙。

  • 第三步:检查CentOS服务端的防火墙配置
    CentOS默认使用firewalld,先确认是否允许Samba服务的流量:

    # 查看当前已允许的服务
    firewall-cmd --list-services
    

    如果输出里没有samba,添加并重启防火墙:

    firewall-cmd --add-service=samba --permanent
    firewall-cmd --reload
    

    要是你的CentOS用的是旧版iptables,手动开放端口:

    # 开放TCP 139/445和UDP 137/138
    iptables -A INPUT -p tcp --dport 139 -j ACCEPT
    iptables -A INPUT -p tcp --dport 445 -j ACCEPT
    iptables -A INPUT -p udp --dport 137 -j ACCEPT
    iptables -A INPUT -p udp --dport 138 -j ACCEPT
    # 保存规则并重启服务
    service iptables save
    service iptables restart
    
  • 第四步:排查SELinux限制
    CentOS的SELinux可能会默认阻止Samba对外提供服务,先临时关闭SELinux测试:

    setenforce 0
    

    再尝试访问smb://192.168.1.76,如果能正常访问,说明是SELinux的问题,需要配置允许Samba服务:

    # 永久允许Samba访问主目录(如果共享的是主目录)
    setsebool -P samba_enable_home_dirs on
    # 如果共享的是自定义目录,调整目录的SELinux上下文
    chcon -t samba_share_t /path/to/your/shared/folder
    

    配置完成后,恢复SELinux的强制模式:setenforce 1

  • 第五步:确认Samba服务的监听状态
    虽然smb-status和nmb-status显示ONLINE,但还是要确认服务是否在监听所有网卡(不是仅localhost):

    netstat -tulpn | grep smbd
    netstat -tulpn | grep nmbd
    

    正常输出应该能看到smbd监听0.0.0.0:139和0.0.0.0:445,nmbd监听UDP的137/138端口,确保没有绑定到127.0.0.1。

  • 第六步:检查Fedora客户端的防火墙
    别忽略客户端的防火墙限制,Fedora的firewalld可能会阻止出站的SMB请求:

    firewall-cmd --list-services --zone=public
    

    如果没有smb-client,添加并重启防火墙:

    firewall-cmd --add-service=smb-client --permanent
    firewall-cmd --reload
    

按照这个顺序排查,大部分情况下都能定位到问题——大概率是防火墙或者SELinux的拦截导致的。

内容的提问来源于stack exchange,提问作者sysadmin umesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:27:17