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 地址的某几个端口,让安全与便利同在。
多 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
1
weyou 2021-08-21 00:45:40 +08:00 via Android
有点类似 smcroute 的功能啊
|
2
raysonx OP @weyou 只是一个简单的 multicast DNS 反射功能,做服务发现。局域网内的大多数服务用不到 multicast routing 。
|
3
Tianao 2021-09-10 13:50:08 +08:00
不错,其实很多商用产品已经有 mDNS 中继 /mDNS 网关 /SDG 了,但这种需求感觉还是上零信任比较好。
|