开源一个自用的 mDNS 反射软件: 解决局域网跨 VLAN 服务发现难题,让你的 IoT 设备可以跨 VLAN 使用

2021-08-20 19:18:59 +08:00
 raysonx

你是否遇到了这类难题?

让 mDNS Reflector 来拯救你吧!

mDNS Reflector 可以运行在防火墙或者同时接入多个 VLAN 的多宿( multi-homed )主机上,可以将来自一个接口(或虚拟接口)的 mDNS 流量反射到其他接口上,解决跨 VLAN 服务发现难题。

举例

假设你有一台运行 Linux 系统的防火墙,br0 对应你日常上网用的 VLAN,br1 对应你 IoT 设备的 VLAN 。不同 VLAN 下的设备默认没办法自动进行服务发现,。为了让日常 VLAN 可以发现 IoT VLAN 的设备,可以在防火墙上运行 mdns-reflector br0 br1,让 mDNS Reflector 在 br0 、br1 两个接口间运行 mDNS 反射,这样即使跨 VLAN 也可以正常进行服务发现了。

通过配置防火墙规则,你可以限制 IoT VLAN 的 Internet 访问权限,只允许从你的日常 VLAN 的某几个 IP 地址访问 IoT VLAN 的某几个 IP 地址的某几个端口,让安全与便利同在。

mDNS Reflector 的特点:

多 zone 隔离举例 比如同时有 eth1-4 四个接口,我们想人为把它们分为两组:eth1 与 eth2 为一组,eth3 与 eth4 为另一组。组内允许 mDNS 反射,组间不允许反射。那么可以直接运行 mdns-reflector eth1 eth2 -- eth3 eth4

下载安装

https://github.com/vfreex/mdns-reflector

已经做好了 deb 和 rpm 的打包文件,使用 rpm 或者 deb 包管理器的朋友可以直接自行编译打包。后续我会视情况 host OpenWRT 以及其他常见 Linux 发行版的二进制包和源方便使用。

Docker 镜像也做好了。想用 Docker 跑的直接拉我的 repo 或者自己 docker build 都可以。

其他系统目前请自己从源码编译。只需要 C 编译器和 cmake:

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=release ..
make
make install

开源许可证:GPLv3

3736 次点击
所在节点    分享创造
3 条回复
weyou
2021-08-21 00:45:40 +08:00
有点类似 smcroute 的功能啊
raysonx
2021-08-21 08:12:53 +08:00
@weyou 只是一个简单的 multicast DNS 反射功能,做服务发现。局域网内的大多数服务用不到 multicast routing 。
Tianao
2021-09-10 13:50:08 +08:00
不错,其实很多商用产品已经有 mDNS 中继 /mDNS 网关 /SDG 了,但这种需求感觉还是上零信任比较好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797091

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX