我有一台 Linux 服务器,需要为内部网提供一些服务。经常会有用户不太熟悉如何在网络环境中使用笔记本电脑,因此我想以直观的方式公布他们可以使用的服务。理想情况下,当他们将机器连接到网络时,他们会看到可以使用的服务,并且他们的操作系统会收到有关可用打印机等的信息。
为了
- 用于文件共享的可公开访问文件夹(基于 Samba、NFS 或 sshfs)
- 一些基于网络的工具,如状态监视器
- CUPS 驱动的打印机
- 联网扫描仪,
最好的方法是什么?我愿意听取任何建议,但不会在此确定任何特定的技术。
对于我的特定应用程序,安全性并不是一个值得关注的问题,但欢迎随时讨论任何建议的安全性影响。
对于向 Apple 机器宣布 Samba 共享,已经有了答案这里,但我不认为 avahi/Bonjour 能够解决其他所有问题。另外,我不是 Windows 用户,但我想 Microsoft 已经有一些类似的协议,可以更好地与 Windows 客户端配合使用。
答案1
最简单的方法可能是通过 DHCP 发布 DNS 和搜索域,并确保人们只需在help
浏览器中输入即可访问一个不错的文档页面。然后,您可以在此页面中列出您的资源以及如何从他们的机器访问它们。
然后你只需要确保人们知道这件事......
答案2
您可以通过 Bonjour 向 Mac(Safari 中的书签 > Bonjour)和使用 Bonjour(IE 中的 Bonjour 按钮)的 Windows 宣传特定的网页。这个答案给出了一般方法,<txt-record>
在 Web 服务器的根目录下添加一个广告页面。如果您愿意,我可以更详细地讲解。
答案3
你应该研究各种方法零配置网络(zeroconf)。
具体来说,您将获得两个主要系列(您应该能够并行使用):
mDNS 和 DNS-DS,它们往往能更好地与 Linux 和 OSX 客户端集成。以这种方式宣传您的服务的一种方法是在您的服务器上设置 Avahi(请参阅您已经链接到的答案)。如果 Windows 客户端安装了 Bonjour(据我所知,可从 Apple 获得并与 Safari 一起安装),它们应该能够看到这些设备,但 Windows 不支持开箱即用。
UPnP 和国家国防计划。SSDP 或多或少相当于 DNS-DS。Windows 客户端本身支持此功能。我不确定是否有任何事实上的 Linux“标准”服务器(如 Avahi),但它似乎集成在许多需要它的应用程序中(例如媒体服务器),因此您可能会找到有用的库来实现您需要的功能。