在局域网建立.local域名

文章正文
发布时间:2024-07-19 00:27

ubuntu setup .local domain in lan

需要理解linux下面的几个概念。

I. hostname

主机名,默认保存在/etc/hosname,可以通过命令hostname查看和更改。

$hostname #查看 hachi-jay $sudo hostname -F /etc/hostname #编辑`/etc/hostname`后应用该命令更改。II. hosts

本地域名文件,配置后再本机立即生效。默认地,会设置本机hostname到hosts使之映射到127.0.0.1。同样地,局域网内也可以通过 到该机器。

$cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 hachi-jay # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allroutersIII. mdns

mdns 即多播dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。在局域网中,设备和设备之前相互通信需要知道对方的ip地址的,大多数情况,设备的ip不是静态ip地址,而是通过dhcp协议动态分配的ip 地址,如何设备发现呢,就是要mdns大显身手,例如:现在物联网设备和app之间的通信,要么app通过广播,要么通过组播,发一些特定信息,感兴趣设备应答,实现局域网设备的发现,当然mdns 比这强大。

当mDNS客户端需要解析主机名时,它会发送一个IP多播查询消息,要求具有该名称的主机标识自己。然后该目标机器多播包含其IP地址的消息。然后,该子网中的所有计算机都可以使用该信息来更新其mDNS高速缓存。任何主机都可以通过发送生存时间(TTL)等于零的响应数据包来放弃其对名称的声明。

默认情况下,mDNS仅限并且专门解析以.local顶级域(TLD)结尾的主机名。如果该域包括未实现mDNS但可以通过传统单播DNS服务器找到的主机,则会导致问题。解决此类冲突需要违反零配置目标的网络配置更改 [1] 。

IV. avahi

install

$sudo apt-get install avahi-daemon

control

成功安装会自动通过systemd启动avahi服务,可以通过systemd控制器状态。

$systemctl status avahi-daemon.service $sudo systemctl start avahi-daemon.service $sudo systemctl status restart.service

config

成功启动avahi服务后,会自动建立hostname.local域名到当前ip的映射。

$systemctl status avahi-daemon.service ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-11-26 11:45:00 CST; 2h 59min ago Main PID: 19887 (avahi-daemon) Status: "avahi-daemon 0.7 starting up." Tasks: 2 (limit: 4915) CGroup: /system.slice/avahi-daemon.service ├─19887 avahi-daemon: running [hachi.local] └─19908 avahi-daemon: chroot helper 11月 26 11:45:01 hachi avahi-daemon[19887]: Server startup complete. Host name is hachi.local. Local service cookie is 1132714104.

如果还需要配置其他域名/ip映射,可以配置更改/etc/avahi/hosts文件。

$cat /etc/avahi/hosts # Examples: 192.168.1.1 router.local #192.168.1.57 hachi.local # 2001::81:1 test.local

提示:成功启动avahi-daemon 服务后会默认映射本地hostname到当前ip地址,所以无需再次在/etc/avahi/hosts文件中重复配置,否则会提示ip 地址冲突。

Static host name hachi0.local: avahi_server_add_address failure: Local name collision