我已经在 Centos 6.6 上安装并配置了 avahi-daemon 和 samba,当我从 Ubuntu 机器上测试它时,它可以正常工作。例如:ping myhostname.local
或smb://myhostname.local
但是,当我从 Windows 机器上尝试时,Samba 既不能工作,也不能通过以下方式 ping 它:ping myhostname
谁能向我解释一下 Windows 和 Ubuntu 之间可能存在的区别。
此外,如果 Windows 可以在浏览网络时列出我的服务器,那就太好了,但我不知道是否应该启用类似广播的功能,或者只是正常配置就足够了。
提前致谢。
答案1
经过两天的工作和研究,多亏了Wireshark,我发现Windows不使用mdns
协议来解析主机名,而只是使用自己的协议进行查询NetBios
。因此,Avahi显然不会对其做出响应。
再看一遍后,我发现了本指南:http://sharadchhetri.com/2014/10/09/centos-7-rhel-7-install-and-setup-samba-server-file-sharing/得出以下结论:
Samba 包含一个名为的守护进程nmb
,它处理 NetBios 请求,但它在 Centos 7 中默认被禁用。启动它后,Windows 可以轻松解析我的主机名。
答案2
对我有帮助的是在我的 CentOS 7 防火墙上永久允许 TCP/UDP 端口 548、5353、5354(firewalld
由命令控制的服务firewall-cmd
)。我的参考资料是:
- https://bugzilla.redhat.com/show_bug.cgi?id=704809#c7
- https://serverfault.com/a/626524/1002593?_gl=1*1ctit8g*_ga*MTg5NTczNTM4Mi4xNjY3NzI0MDc0*_ga_S812YQPLT2*MTY3NTAyMzQ4Ni4xMC4xLjE2NzUwMjY5ODAuMC4wLjA。
命令:
sudo firewall-cmd --zone=public --add-port=548/udp --permanent
sudo firewall-cmd --zone=public --add-port=548/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5353/udp --permanent
sudo firewall-cmd --zone=public --add-port=5353/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5354/udp --permanent
sudo firewall-cmd --zone=public --add-port=5354/tcp --permanent
然后重新启动或者重启firewalld
。
笔记
- 这个问题比较老了,主题中奇怪的表述是使用 CentOS 7,但在帖子中提到了 CentOS 6,导致我来到这里。
- OP 自己的回答对我没有帮助。另外,我在 Windows 端使用 Windows 7,它确实可以与在 Linux 主机上运行的 mDNS (avahi) 配合使用。
- 我使用上述方法以不同的方式解决了这个问题。
- 我在这里发布我的解决方案以防其他人也在这里尝试解决 CentOS 7 上的这个问题。