无法通过 Windows 10 上的主机名连接到 Linux Samba 服务器

无法通过 Windows 10 上的主机名连接到 Linux Samba 服务器

我已经在 CentOS 上设置了一个 Samba 服务器。在 Windows 资源管理器的地址栏中输入地址时,我能够连接到它,\\ip-address\share但它没有出现在网络列表中,如果我尝试使用主机名连接到它,它会告诉我Windows cannot access \\hostname\share

我也无法 ping 主机名,但可以 ping IP。我可以从 CentOS ping 主机名

Samba 服务器已启用 DHCP(使用 NetworkManager),并且主机名通过静态 IP 规则在路由器上配置。主机名也通过 hostnamectl 设置。

我已经启用并正在运行 winbind,但不知道它是否配置正确。

Firewall-cmd 处于活动状态并正在运行,并且它在公共区域打开了 samba 服务。

我已经更新了 seLinuxsudo setsebool -P samba_enable_home_dirs on

这是 smb.conf 文件的部分转储;

[global]
    workgroup = WORKGROUP
    netbios name = *hidden*
    wins support = Yes
    encrypt passwords = true
    security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw

[homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = Yes
    read only = No
    inherit acls = Yes

[printers]
    comment = All Printers
    path = /var/tmp
    printable = Yes
    create mask = 0600
    browseable = Yes

[print$]
    comment = Printer Drivers
    path = /var/lib/samba/drivers
    write list = @printadmin root
    force group = @printadmin
    create mask = 0664
    directory mask = 0775

我如何让 Windows 能够通过主机名访问共享?

编辑:添加 nmcli dump

connection.id:                          MyEth
connection.uuid:                        4b4c8ef6-def8-3c7f-9c1c-e3bdd39d2ed4
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              --
connection.autoconnect:                 yes
connection.autoconnect-priority:        -999
connection.autoconnect-retries:         -1 (default)
connection.auth-retries:                -1
connection.timestamp:                   1565104013
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
-------------------------------------------------------------------------------
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mac-address:             B8:27:EB:FF:F8:7D
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
-------------------------------------------------------------------------------
ipv4.method:                            auto
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         --
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)
-------------------------------------------------------------------------------
ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       ""
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     stable-privacy
ipv6.dhcp-duid:                         --
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
ipv6.token:                             --
-------------------------------------------------------------------------------
proxy.method:                           none
proxy.browser-only:                     no
proxy.pac-url:                          --
proxy.pac-script:                       --
-------------------------------------------------------------------------------

防火墙配置:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client http samba https
  ports: 22/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

答案1

您的问题与本地 DNS 有关,具体如下:

  • FreeNAS 论坛主题中更深入的讨论:SMB 共享未显示在网络浏览中
    1. 必须在路由器中设置本地域,并在所有 LAN 设备上呼应(#23
      • 在 Windows 中,这将是工作组名称
    2. 必须在路由器中为 Samba 服务器设置静态 IP 和主机名(#30
    3. Windowshosts文件中必须包含 Samba 服务器的条目(#27
      • 格式(见下文第 6 条)IP Hostname Hostname.LocalDomain
    4. 必须允许在正确的 TCP 和 UDP 端口上进行通信(#27

解决:


  1. 确保 Windows 设备、Samba 服务器和路由器服务本地 DNS设置为相同的本地域
    1. 路由器:本地域将是在以下位置设置的名称领域在其 WebAdmin UI 中
    2. Samba 服务器:取决于操作系统
    3. 视窗:本地域是工作组名称:
      1. Control Panel\All Control Panel Items\System>Computer name, domain, and workgroup settings
      2. 更改设置>改变...>工作组>好的
        • 根据操作系统配置,可能需要重新启动

  2. 确保 Windows 与 Samba 服务器之间的流量在以下端口上被允许:
    1. TCP:139,445
    2. UDP:137, 138, 139

  3. 确保 Samba 服务器已在路由器上分配静态 IP

      IP      '192.168.1.2'
      mac     'AA:BB:CC:DD:EE:FF'
      name    'Server'
    
    • 如果没有在路由器中配置的静态 IP(即设置客户端主机名和客户端 MAC),路由器就不知道如何将流量路由到本地 DNS 主机名。
    • 更改后重新启动路由器,以允许服务器获取新的 DHCP

  4. Windows 10 v1709 或更高版本,确保中小企业直连已启用并且SMB 版本 1.0被禁用
    1. Control Panel\Programs\Programs and Features>Turn Windows features on or off
    2. 取消选中:SMB 1.0/CIFS 文件共享支持
      • SMB 1.0 并不安全,在启用了 SMB v1.0 的设备上已被积极利用了 2 年多
      • 没有理由使用 SMB1,因为所有设备至少支持 SMB2
    3. 查看:中小企业直连
    4. 好的 (按照屏幕上的说明并重新启动)

  5. 确保 Samba 服务器smb.conf包含以下内容:

    [global]
        server min protocol  = SMB2
        server max protocol  = SMB3_11
        netbios name         = <Samba Server Hostname>
        workgroup            = <Local Domain>
    
    • 确保workgroup本地域与 1.3.2 中的设置相匹配(多于)
    • 确保server max protocol是最大的你的Samba 服务器构建支持
    • 重新启动 Samba 以应用更改

  6. 将 Samba 服务器添加到 Windows 的 hosts 文件

    • C:\Windows\System32\drivers\etc\hosts

      #
      
               ##::[[---  Windows Host Config  ---]]::##
      
      #===========================================================
                          ##----- LAN -----##
      #===========================================================
      
        # OpenWrt:
          192.168.1.1        OpenWrt   OpenWrt.Wrt
          192.168.1.2        Server    Server.Wrt
          192.168.1.3        Win10     Win10.Wrt
      
      • 第一列:主机的静态 IP
      • 第二列:主机的主机名
      • 第三列:主机名和本地域地址,Wrt本地域在哪里

  7. 打开这台电脑,在地址栏中导航到共享:\\ServerHostname\ShareName

故障排除:


如果这不能解决您的问题:

  1. 关闭 Windows 设备、Samba 服务器和路由器
    • 确保 DHCP 被清除的最简单方法
  2. 打开路由器并等待其完全启动(如果是 OEM 固件:等待 120 秒 || 所有其他固件:60 秒)
  3. 启动 Samba 服务器和 Windows 设备

如果这不起作用,请发表评论,以便对答案进行调整或添加,以确保它适用于所有遇到此问题的人。

答案2

我遇到了同样的问题,发现 nmb 服务是解决方案。

https://www.samba.org/samba/docs/current/man-html/nmbd.8.html

相关内容