OpenWRT 跨网段解析 mDNS 域名

  • Post author:
  • Post category:其他




OpenWRT 跨网段解析 mDNS 域名

在局域网中,由于 IP 地址都是动态分配的,很难确定每一台电脑的 IP 地址。此时使用 mDNS 使用局域网域名解析就非常方便。

在这里插入图片描述

对于 windows10 系统电脑。只需要在知道电脑设备的名字,即可通过

ping 设备名称.local

命令知道电脑的 IP 地址。

在这里插入图片描述

在这里插入图片描述

注意: 域名不区分大小写。

对于 IPv4,mDNS 设备间通过使用

udp

组播通信,组播地址为

224.0.0.251

,端口

5353

。组播规定为同一个局域网之间通信,无法实现跨不同网段间通信。

在这里插入图片描述

在上面这种网络结构之中,pc1 无法通过 mdns 发现 pc2 设备(知道 pc2 的 ip 地址)。之前通过在在路由器B上

配置 mDNS 端口映射

的方式实现 pc1 通过 mDNS 发现 pc2。但是过程相对比较复杂,并且不支持 pc2 发现 pc1。



Avahi 实现跨网段的解析 mDNS

  • 在 路由器B (openwrt系统) 上安装 Avahi
opkg update
opkg install avahi-daemon
  • 配置 Avahi 跨网段解析 mDNs,打开

    /etc/avahi/avahi-daemon.conf

    :
[server]
#host-name=foo
#domain-name=local
use-ipv4=yes
use-ipv6=yes
check-response-ttl=no
use-iff-running=no
allow-interfaces=br-lan,eth0.2  # 添加这一行: 接口 br-lan 为局域网接口,eth0.2 为 wan 口接口,根据实际情况修改

[publish]
publish-addresses=yes
publish-hinfo=yes
publish-workstation=no
publish-domain=yes
#publish-dns-servers=192.168.1.1
#publish-resolv-conf-dns-servers=yes

[reflector]
enable-reflector=yes # 修改这一行: 将 no 改为 yes 支持跨网段mdns
reflect-ipv=no

[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=30
rlimit-stack=4194304
rlimit-nproc=3

可以使用

ifconfig

命令就可以查询网络接口。

  • 重启

    avahi

    服务,并设置开机启动。
 /etc/init.d/avahi-daemon restart
 /etc/init.d/avahi-daemon enable
  • 设置防火墙

Luci -> 网络 -> 防火墙 -> 通信规则 -> 新增

在这里插入图片描述

  • 测试

在 pc1 上:

ping pc2.local

在 pc2 上:

ping pc1.local

结果都会返回对应设备的 IP 地址。

注意:虽然 pc2 可以解析到 pc1 的 IP 地址。但是由于 NAT 特性,仍然需要在路由器B上设置端口映射,通过访问路由器B来访问到 pc1 上的服务。



参考链接


Resolving mDNS across VLANs with Avahi on OpenWRT


Avahi mDNS reflection



版权声明:本文为qq_38026359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。