我有一台树莓派 (192.168.1.1),它被设置为几个设备的 AP。WIFI 连接正常,DHCP 似乎也给出了有效的地址。问题是网络中的任何设备都无法解析树莓派的主机名“home”。以下是一些配置文件:
/etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 home
/etc/dnsmasq.conf
interface=wlan0
no-dhcp-interface=eth0
dhcp-range=192.168.1.2,192.168.1.254,12h
dhcp-option=option:dns-server,192.168.1.1
log-queries
log-facility=/tmp/dnsmasq.log
/etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.1.1/24
static domain_name_servers=192.168.1.1
nohook wpa_supplicant
/etc/hostapd/hostapd.conf
# WLAN-Router-Betrieb
# Schnittstelle und Treiber
interface=wlan0
#driver=nl80211
# WLAN-Konfiguration
ssid=HomeNetwork
channel=2
hw_mode=g
ieee80211n=1
ieee80211d=1
country_code=DE
wmm_enabled=1
ignore_broadcast_ssid=1
max_num_sta=255
# WLAN-Verschlüsselung
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=xxxxxxx
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
/var/lib/misc/dnsmasq.leases
1609402473 3c:71:bf:3a:09:c2 192.168.1.67 living-shelf *
1609402474 dc:4f:22:aa:08:1e 192.168.1.42 living-computer-light *
1609402473 dc:4f:22:92:75:da 192.168.1.215 living-beamer *
1609402647 c8:2b:96:53:79:a5 192.168.1.94 living-heater-carpet *
1609400799 dc:4f:22:a7:e5:4d 192.168.1.186 living-light *
1609402473 84:0d:8e:aa:81:7c 192.168.1.98 kitchen-passage *
1609402514 3c:71:bf:3a:12:8f 192.168.1.158 living-wallclock *
1609402652 c8:2b:96:53:77:bd 192.168.1.227 tasmota-printer *
我的问题是:
- 我的 AP-pi 的哪个组件应该将 DNS 查询识别为某个设备的主机名并解析它?
- 我必须设置什么才能使网络中的所有设备能够通过其主机名相互访问?
- 设备需要什么才能通过主机名访问 AP-pi?
答案1
我的 AP-pi 的哪个组件应该将 DNS 查询识别为某个设备的主机名并解析它?
您需要 DHCP 服务器和 DNS 服务器协同工作。对于您来说,dnsmasq 同时执行这两项任务;其内置 DNS 服务将自动查看 DHCP 租约表。
DNS 查询当然由 DNS 服务器处理,但 DHCP 是负责收集其他计算机作为其租约请求的一部分发送的主机名,并以 DNS 服务器可以理解的方式存储它们。
(从技术上讲,通过 DNS 进行自我注册也存在,但您只能在 Active Directory 环境中找到它,而不是在基本的 dnsmasq LAN 中。)
我必须设置什么才能使网络中的所有设备能够通过其主机名相互访问?
Dnsmasq 应该只将自己作为广告宣传,dns-server
而不作为任何其他地址。看来您已经拥有这个了。
你可能但是,需要指定domain
才能使其工作,因为有些设备会拒绝解析单组件名称。为了避免此问题,您可以定义一个域后缀,例如lan
(或正式保留的home.arpa
),所有名称都将归入该后缀下。
后缀可以通过 DHCP 进行宣传,这样您就不需要实际输入它 - 只要您输入单个组件名称,设备就会自动附加它。
domain = lan
dhcp-option = option:domain-name, lan
这将导致类似的名字kitchen-toaster.lan
,但 DHCP 选项可以避免实际类型位.lan
。
设备需要什么才能通过主机名访问 AP-pi?
/etc/hosts 条目需要包含对其他设备有意义的 IP 地址。换句话说,它必须是 192.168.1.1,而不是环回地址。
最好使用 直接在 dnsmasq 中定义名称host-entry
。
host-entry = home, 192.168.1.1
如果使用域后缀,则必须在每个主机条目中指定它:
domain = home.arpa
host-entry = home.home.arpa, 192.168.1.1
dhcp-option = option:domain-name, home.arpa
答案2
这些问题太多了,不幸的是我无法回答。但我知道一个解决方案。您可以在 Raspberry Pi 上设置 PiHole 实例,并手动为您的 Raspberry Pi 添加 DNS 条目。