我有一台 Mac 连接到我自己的路由器,该路由器连接到我的 ISP 的路由器/调制解调器,配置如下:
Mac 使用 DHCP 连接到路由器 192.168.1.1。Mac
DNS 设置为 192.168.1.1
在我自己的路由器上,我可以看到许多连接的设备:
树莓派-节点-4 192.168.1.4
树莓派-节点-1 192.168.1.5
我可以通过 IP ssh 到 192.168.1.4,但如果我通过主机名尝试,它无法识别:
ssh:无法解析主机名 rpi-node-4:未提供节点名或服务名,或者未知
由于路由器知道主机名,并且 Mac 被告知使用 192.168.1.1(路由器)作为 DNS,我预计 Mac 能够解析主机名,但它不起作用。
请注意,我不想/etc/hosts
在 Mac 上手动编辑该文件(因为我有多台机器,并且我使用动态 IP,所以我不想每次重新分配 IP 时都必须更新 3-4 个主机文件)。
有人能告诉我我哪里搞砸了吗?
答案1
您的路由器可能只知道那些 RPi 的名称,因为这些是它们在发出 DHCP 请求时使用的名称,并且您的路由器可能是您网络的 DHCP 服务器。
一些家庭网关路由器可以让你为每个 LAN 私有 IP 地址输入主机名,路由器将充当 DNS内容服务器,而不仅仅是 DNS 中继。查看您的服务器是否具有此功能,如果有,请进行设置。
如果没有该功能,您可以使用 mDNS 和 DNS-SD(又名 IETF ZeroConf、Apple Bonjour)建立域,.local
以便按名称连接到您的 RPi。我相信 Raspbian 默认情况下不会启用 mDNS 实现,因此您可能需要执行类似操作sudo apt-get install avahi-daemon
来获取 Avahi,这是一种流行的开源 mDNS 实现。
答案2
在设置路由器 DHCP 设置时,您的搜索域可能被遗漏。现在您的 Mac 电脑不知道在哪里查找本地主机名和 IP。
修复这个问题:
- 进入系统偏好设置->网络
- 从左栏中选择您的活动网络适配器
- 点击右下角的“高级”
- 选择顶部的 DNS 选项卡
- 在搜索域下输入您的搜索域(我的搜索域是 attlocal.net,因为我使用 AT&T。您可能需要进行搜索才能找到您的搜索域)
- 单击应用。您现在应该可以访问 {hostname}.local