局域网.local域名

I. hostname

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

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

II. hosts

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

$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-allrouters

III. mdns

  • Multicast DNS
  • 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
 
1126 11:45:01 hachi avahi-daemon[19887]: Server startup complete. Host name is hachi.local. Local service cookie is 1132714104.

转载补充

  1. 注意这的.local不支持多级域名,只支持顶级域名。
  2. linux设置主机名用hostnamectl set-hostname <name>来设置主机名
  3. 查看主机名用hostnamectl
  4. 更新主机名后记得service avahi-daemon restart来刷新。

Avahi 是Zeroconf规范的开源实现,常见使用在Linux上。它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。它跟 mDNS 一样。包含了一整套多播DNS(multicastDNS)/DNS-SD网络服务的实现。它使用的发布授权是LGPL。Zeroconf规范的另一个实现是Apple公司的Bonjour程式。Avahi和Bonjour相互兼容。Avahi允许程序在不需要进行手动网络配置的情况下,在一个本地网络中发布和获知各种服务和主机。例如,当某用户把他的计算机接入到某个局域网时,如果他的机器运行有Avahi服务,则Avahi程式自动广播,从而发现网络中可用的打印机、共享文件和可相互聊天的其他用户。这有点象他正在接收局域网中的各种网络广告一样。
Linux下系统实际启动的进程名,是avahi-daemon。

安装:

$ sudo apt install avahi-daemon

作者补充

这个方法可能不能混用WIFI和ethernet,同一个路由器的WIFI和ethernet不能互通,可能和VLAN有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值