OpenWRT 跨网段解析 mDNS 域名

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值