我的家庭网络上有两台计算机:一台 Raspberry Pi 4 和一台 Windows 笔记本电脑。我的 Raspberry Pi 运行的是它附带的默认 Raspbian。我正在尝试为我的 Raspberry Pi 设置一个主机名,以便可以使用该主机名在网络上访问它。
Raspberry Pi 位于192.168.0.40
,Windows 笔记本电脑位于192.168.0.140
。
我将/etc/hostname
文件从更改raspberrypi
为phobos
,这是我要使用的主机名。
/etc/resolv.conf
看起来像这样:
1 # Generated by resolvconf
2 domain cable.rcn.com
3 nameserver 192.168.0.1
/etc/dhcp/dhclient.conf
看起来像这样:
1 # Configuration file for /sbin/dhclient.
2 #
3 # This is a sample configuration file for dhclient. See dhclient.conf's
4 # man page for more information about the syntax of this file
5 # and a more comprehensive list of the parameters understood by
6 # dhclient.
7 #
8 # Normally, if the DHCP server provides reasonable information and does
9 # not leave anything out (like the domain name, for example), then
10 # few changes must be made to this file, if any.
11 #
12
13 option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
14
15 send host-name = gethostname();
16 request subnet-mask, broadcast-address, time-offset, routers,
17 domain-name, domain-name-servers, domain-search, host-name,
18 dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
19 netbios-name-servers, netbios-scope, interface-mtu,
20 rfc3442-classless-static-routes, ntp-servers;
该hostname
命令返回phobos
。
当我尝试从 Windows 笔记本电脑 ping Raspberry Pi 时,我得到:
PS C:\Users\Leo> ping phobos
Ping request could not find host phobos. Please check the name and try again.
但是,当我 ping 时raspberrypi
(这是我在文件中找到的原始主机名)/etc/hostname
,我得到:
PS C:\Users\Leo> ping raspberrypi
Pinging raspberrypi.cable.rcn.com [192.168.0.40] with 32 bytes of data:
Reply from 192.168.0.40: bytes=32 time=6ms TTL=64
Reply from 192.168.0.40: bytes=32 time=5ms TTL=64
Reply from 192.168.0.40: bytes=32 time=6ms TTL=64
Reply from 192.168.0.40: bytes=32 time=4ms TTL=64
Ping statistics for 192.168.0.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 6ms, Average = 5ms
这让我认为我的路由器(Arris DG3450A)没有在 DHCP 设置中更新 Raspberry Pi 的主机名,但我不确定如何通知它这样做。任何建议,将不胜感激。如果我可以提供任何其他信息,请告诉我。
IP 网络上的主机名解析一直是一个比任何新手想象的更棘手、更不直观的主题。
将您自己的主机名设置为该主机的本地名称对于网络上的其他任何人来说没有任何意义。您不能指望名称更改会自动在网络上公布,或通过长期以来使用的大量服务发现和名称解析协议自动向任何名称服务器注册。因此,您必须自己决定希望网络上的其他设备可以通过哪些方式发现和解析您的主机名,并找到实现这一目标的方法。
/etc/hostname
如果您的 Raspberry Pi 正在运行多播 DNS (mDNS) 的实现,例如 Avahi,那么如果 Avahi 守护进程知道通过命令在 for 中查找您的主机名,您的设备hostname(1)
应在网络上显示为hostname.local(例如 phobos) 。当地的)。如果您没有在网络上使用 mDNS,则可能需要手动更新本地 DNS 服务器以获得 phobos.example.com 的条目(不要使用 .local;为 ZeroConf/mDNS 保留 .local)。
DHCP 是关于客户端从服务器请求配置设置的,而不是关于客户端将主机名等信息推送到服务器的。而且它从不用于主机名到 IP 地址的解析。DHCP 协议确实为 DHCP 客户端提供了一种方法来通知 DHCP 服务器客户端认为自己的主机名是什么,但它主要提供信息,并且大多数 DHCP 服务器不包含将客户端定义的主机名推送到任何客户端的机制。附近的 DNS 服务器,或通过任何其他服务发现或名称解析协议进行通告。但您的家庭网关设备(您的 Arris DG3450A)可能在其嵌入式 DHCP 服务器和嵌入式 DNS 服务之间进行了某种集成。
当客户端设备将自己定义的主机名注册到 DNS 服务器时,有一些基于适当标准跟踪协议的解决方案,例如 DNS UPDATE (RFC 2136),也有一些不太标准但可能更广泛的事实上的市场解决方案,例如动态 DNS (DDNS)。
我认为您没有说您使用什么作为 DNS 服务器,但您可能想查看它是否支持 DNS UPDATE 或 DDNS,并查看您的 Raspbian 环境是否有适用于这两种协议的客户端。
有一种手动操作的方法可以将本地 IP 替换为主机名......
在每台本地计算机上,编辑您的
/etc/hosts
-file(
C:\Windows\System32\etc\hosts
如果我没记错的话)。添加一行,说明例如
129.168.0.40 pi4 raspberry4 rp4 hobby play
您将能够使用这些名称中的任何一个来代替 IP。
值得注意的警告;如果更改 IP,则需要在文件的每个活动实例中手动更改它。即,将其保留在单个“服务器”(带有正在运行的 sshd)上并将
scp
其保留在其他计算机上?(有一些方法可以在 [Shell] 启动时运行脚本,超出了此处的范围)
Linux 提示:sudo 仅适用于lost+found 文件夹中的一个命令,而不是更多
想法:创建一个在每台本地计算机上运行的脚本,并将
scp
/etc/hostname 发送到 sshd 服务器,然后将所有这些附加到一起并作为本地主机文件提供。要通过 访问设备
hostname
,路由器和客户端设备都必须正确配置才能执行此操作,否则路由器不知道如何路由流量。当通过主机名访问设备时,它们是通过在路由器端访问的
<hostname>.<LocalDomain>
,而不是通过 DHCP 配置的,因此必须执行以下操作:hostname
:.local
或.lan
,但可以自定义为任何内容本地域是工作组名称,它是通过以下方式设置的:
+ R→打开:
SystemPropertiesAdvanced
→ 确定<LocalDomain>
→ 确定 → 确定+ R→打开:
powershell
→ Ctrl+ Shift+确定Add-Computer
或:wmic
设置客户
hostname
端条目%WinDir%\System32\etc\hosts
:重启
设置为路由器的本地域 (因发行版而异) →重新启动