我有一个家庭网络,有几个窗口和安装了samba的Linux机器。
在Windows上,我可以通过主机名找到彼此的计算机。
然而,在Linux计算机上,我无法通过主机名找到任何其他计算机--只有IP地址才能工作。
实际上,Linux似乎甚至无法解决它自己:
user@atom:~$ host atom
Host atom not found: 3(NXDOMAIN)发布于 2014-08-08 15:22:41
Windows使用不同的系统对Linux进行主机名解析。
Linux使用/etc/hosts文件和/或DNS来解析名称。
/etc/hosts文件仅仅是一个IP地址和名称的列表,曾经是将名称映射到IP地址的唯一方法,然后才意识到它正在变得越来越大。解决方案是DNS (域名系统),它是一个分布式数据库,现在是整个互联网的基础。
您只使用DNS的host命令--而不是/etc/hosts,因此除非它有DNS条目,否则它无法找到您的本地计算机。
若要按名称访问所有Linux机器,请创建一个/etc/hosts文件:
127.0.0.1 localhost.localdomain localhost
192.168.0.5 laptop.mydomain.net laptop
192.168.0.6 server.mydomain.net server
192.168.0.7 printer.mydomain.net printer并将其分发到所有Linux计算机,或安装DNS。dnsmasq是一个轻量级的DNS/DHCP服务器,非常适合小型网络。
Windows使用自己的NetBIOS名称解析,其中每台计算机在局域网上广播一条特殊消息,以查找具有特定名称的计算机的IP地址。这就是为什么Windows机器在同一网络上时往往会自动找到对方的原因。他们把这个缓存起来以备将来使用,这样网络上就不会有太多的聊天了。
此广播名称解析(用于更大的部署)的另一种选择是WINS (Windows Internet命名服务),它是计算机和/或服务名称到IP地址的中央数据库。现在Windows的现代版本使用DNS,因为它是事实上的名称解析标准,比WINS更具有可伸缩性。
发布于 2014-08-08 15:06:50
如果您在家里没有DNS服务器,这是不可能的,似乎有几个选项。
/etc/hosts编辑:正如评论所要求的,下面是我链接的线程的一些细节。您可以在linux机器中实现zeroconf,以便在本地网络上宣传它们的主机名。一个典型的安装(对于ubuntu)是"sudo apt install avahi-daemon“。Avahi在ubuntu和其他linuxes上实现zeroconf,您只需要安装守护进程来宣传主机名。我在这里读到的另一个线程(https://superuser.com/questions/491747/how-can-i-resolve-local-addresses-in-windows)中说,Bonjour,一个来自苹果的零can实现,可以安装在Windows上来执行同样的功能。
发布于 2014-08-08 15:13:27
Windows计算机通过使用NetBIOS找到彼此。基本上,网络上的所有节点都会选择一台计算机来负责名称解析,而新的节点只需查询这个节点。
如果您没有设置DNS服务器,那么您的host命令应该会失败。这相当于Windows上的nslookup。如果您在Windows计算机上运行nslookup到另一台windows计算机,它也将在没有DNS的情况下失败,因为这就是您所选择的命令的查询内容。
也就是说,您应该能够通过IP地址引用其他机器,或者将它们的IP地址添加到/etc/hosts中。IIRC Gnome有一些Samba集成选项,可以让您在SMB工作组中导航,类似于您对windows的想法。但是我记不起我头顶上的包裹的名字了。
https://unix.stackexchange.com/questions/149246
复制相似问题