假设我的本地网络中有两台计算机,主机名为pc1
和。我的路由器有 ip 地址,其说明说也可以通过 访问,我试过了,确实如此。pc2
10.0.0.0/24
10.0.0.138
modem.home
我想通过 ssh 从 连接到pc1
并pc2
使用其主机名,而不是其 ip。但是,host
当使用 的 ip 地址时,linux 下的 commando 给出了以下结果pc2
:
host 10.0.0.53
Host 53.0.0.10.in-addr.arpa not found: 2(SERVFAIL)
我尝试研究一下这意味着什么,我认为它表明
现在回答我的问题:
- 域名到底是什么
.home
?这是通常的域名还是我的路由器设置的域名? - 我如何将我的(Linux)计算机添加到该域,以便我可以检索其他设备(在本地网络中)的主机名?
答案1
.home 域名到底是什么?它是常用域名还是只是我的路由器设置的域名?
这只是您的路由器设置的东西。
与许多路由器一样,它在内部运行 DNS 缓存/代理,并在所有 DHCP 响应中将自己宣传为 DNS 服务器。路由器的 DNS 代理配置为*.home
从本地配置中提供名称,而不是将查询转发到 ISP 的 DNS。(如果您打算自己制作,可以在 dnsmasq 中找到此功能。)
路由器具有modem.home
静态定义的名称以始终返回其自己的 IP,但其他*.home
子域通常从 DHCP 服务器的租约数据库中读取。
我如何将我的(Linux)计算机添加到该域,以便我可以检索其他设备(在本地网络中)的主机名?
确保您的计算机使用 DHCP,并且其 DHCP 客户端始终在请求中填写“主机名”选项 (12)。例如,如果计算机使用dh客户端,添加send host-name = gethostname();
到其配置中。
答案2
域名到底是什么
.home
?这是通常的域名还是我的路由器设置的域名?
尽管.homes和.home.arpa是为特定用途而定义的,但.home
目前该域似乎还没有定义(据我所知)。话虽如此,.home.arpa 的 RFC笔记:
家庭网络控制协议 (HNCP) 已更新为使用“home.arpa.”域而不是“.home”。
因此,.home
在这种情况下,可能存在用于高血压脑病能够自动发现、配置等的设备。但这只是猜测。
如何将我的(Linux)计算机添加到该域,以便我可以检索其他设备(在本地网络中)的主机名?
您可能需要检查您的路由器设置,看看它是否有任何选项可以添加额外的主机名和 IP 以进行本地解析。
否则,正如该问题的另一个答案中详细说明的那样,最简单的方法是使用hosts
每台 PC 上的文件来定义主机名/IP 地址映射:
例如hosts
(PC 1 → 10.0.0.10
)
10.0.0.20 pc2.home
例如hosts
(PC 2 → 10.0.0.20
)
10.0.0.10 pc1.home
该hosts
文件通常位于/etc/hosts
Linux/MacOS 和C:\windows\system32\drivers\etc\hosts
Windows 中。
请注意,如果您在 Linux 上使用文件时遇到问题hosts
,则可能需要编辑/etc/nsswitch.conf
并确保该files
条目在下列出hosts:
。
其他选项
本地 DNS 服务器
即使不知道有关路由器的所有详细信息,您(理论上)也可以简单地设置一个本地 DNS 服务器来为.home
域提供服务。
本质上,您需要:
指定一台 PC 作为 DNS 服务器。它可以是网络上的任何 PC,但需要始终可用(持续打开)以进行 DNS 解析。
配置 DNS 服务器软件以:
- 例如通过单独的区域文件进行识别,
pc1.home
并pc2.home
使用适当的 IP 地址映射(可能是最佳选择)。
或者
解析整个
.home
域并添加例如,pc1.home
并pc2.home
使用适当的 IP 地址映射将区域文件添加到该区域文件(可能不是最佳选择)。将所有其他请求发送到上游(例如,发送到您的 ISP DNS 服务器)。
- 例如通过单独的区域文件进行识别,
将路由器指向 DNS 服务器以进行 DNS 解析(在路由器的域名服务器 (DNS) 地址设置下)。您可能还需要将端口 53 和 953 转发到 DNS 服务器。
.local 域名
如果你不受域名限制.home
,.local
通常用于mDNS(ZeroConf)DNS. 根据维基百科关于多播 DNS (mDNS) 的文章:
在计算机网络中,多播 DNS (mDNS) 协议将主机名解析为不包含本地名称服务器的小型网络中的 IP 地址。它是一种零配置服务,使用与单播域名系统 (DNS) 基本相同的编程接口、数据包格式和操作语义。
mDNS通常可在各种Linux发行版上使用,通过阿瓦希。
答案3
我认为,对于两台计算机,您不需要域。在本地 HOSTS 文件中设置另一台计算机的名称。对每台计算机执行此操作。然后,您可以按名称寻址计算机。
本地 hosts 文件在这里: https://www.makeuseof.com/tag/modify-manage-hosts-file-linux/