我已经在 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 共享未显示在网络浏览中
解决:
- 确保 Windows 设备、Samba 服务器和路由器服务本地 DNS设置为相同的本地域
- 路由器:本地域将是在以下位置设置的名称领域在其 WebAdmin UI 中
- Samba 服务器:取决于操作系统
- 视窗:本地域是工作组名称:
Control Panel\All Control Panel Items\System
>Computer name, domain, and workgroup settings
- 更改设置>改变...>工作组>好的
- 根据操作系统配置,可能需要重新启动
- 根据操作系统配置,可能需要重新启动
- 确保 Windows 与 Samba 服务器之间的流量在以下端口上被允许:
- TCP:139,445
- UDP:137, 138, 139
确保 Samba 服务器已在路由器上分配静态 IP
IP '192.168.1.2' mac 'AA:BB:CC:DD:EE:FF' name 'Server'
- 如果没有在路由器中配置的静态 IP(即设置客户端主机名和客户端 MAC),路由器就不知道如何将流量路由到本地 DNS 主机名。
- 更改后重新启动路由器,以允许服务器获取新的 DHCP
- Windows 10 v1709 或更高版本,确保中小企业直连已启用并且SMB 版本 1.0被禁用
Control Panel\Programs\Programs and Features
>Turn Windows features on or off
- 取消选中:SMB 1.0/CIFS 文件共享支持
- SMB 1.0 并不安全,在启用了 SMB v1.0 的设备上已被积极利用了 2 年多
- 没有理由使用 SMB1,因为所有设备至少支持 SMB2
- 查看:中小企业直连
- 好的 (按照屏幕上的说明并重新启动)
确保 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 以应用更改
- 确保
将 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
本地域在哪里
- 打开这台电脑,在地址栏中导航到共享:
\\ServerHostname\ShareName
故障排除:
如果这不能解决您的问题:
- 关闭 Windows 设备、Samba 服务器和路由器
- 确保 DHCP 被清除的最简单方法
- 打开路由器并等待其完全启动(如果是 OEM 固件:等待 120 秒 || 所有其他固件:60 秒)
- 启动 Samba 服务器和 Windows 设备
如果这不起作用,请发表评论,以便对答案进行调整或添加,以确保它适用于所有遇到此问题的人。
答案2
我遇到了同样的问题,发现 nmb 服务是解决方案。
https://www.samba.org/samba/docs/current/man-html/nmbd.8.html