使用 FreeBSD 9(子网之间的 Bonjour)跨两个子网的多播路由?

Eri*_*und 7 freebsd multicast mdns bonjour avahi

我有一个 FreeBSD 9 路由器(Soekris net6501)通过 dsl 调制解调器(桥接)连接到互联网,为两个内部子网 10.0.1.0/24(LAN)和 10.0.2.0/24(wifi 网)执行 NAT。

有子网之类的东西之间的路线ssh host-A.wifihost-B.lan作品。

但是,10.0.2.0/24 网络上的无线客户端(如 iPad 和 iPhone)似乎无法在 LAN 上找到东西(例如,在 LAN 上播放到 Apple-TV)。

我不完全确定,但我认为这是因为 Apple 使用 Bonjour,Bonjour 使用多播来查找内容,而多播不跨子网路由。

根据FreeBSD 手册,要路由多播,我需要编译内核options MROUTING并创建一个/etc/mrouted.conf,但我找不到任何好的配置文件示例。

  1. 我的问题是否与跨子网多播有关?
  2. mroutedFreeBSD 中启用路由的首选解决方案吗?
  3. 如何/etc/mrouted.conf在 10.0.1.0/24 和 10.0.2.0/24 之间创建路由?

Eri*_*und 6

感谢@chris-s,我通过使用 Avahi 而不是尝试路由多播流量解决了我自己的问题。

这对我有用:

  • 编译和安装net/avahi,并dns/nss_mdns从港口树。
  • 添加avahi_daemon_enable="YES"dbus_enable="YES"/etc/rc.conf
  • 使用 avahi 配置文件 ( /usr/local/etc/avahi/avahi-daemon.conf) 并将我的两个内部网络接口(两个内部子网)添加到allow-interfaces密钥(逗号分隔)并将enable-reflector密钥设置为,yes以使 avahi 将流量传播到所有内部网络。
  • hosts条目编辑/etc/nsswitch.confhosts: files dns mdns

启动 avahi 守护进程后,您可以通过直接从 mdns 服务器机器进行查找来检查它是否工作:

root@server / # getent hosts apple-tv.local
10.0.1.4          apple-tv.local
root@server / # getent hosts iphone4s.local
10.0.2.27         iphone4s.local
root@server / # getent hosts ipad.local
10.0.2.22         ipad.local
Run Code Online (Sandbox Code Playgroud)

或者通过使用Bonjour BrowseriStumbler(两者都很棒)等实用程序浏览 .local 域。您应该能够看到所有子网上的设备、主机和服务。

一个脚注是我的 FreeBSD 9.0 安装默认/etc/syslogd.conf没有记录消息,avahi-daemon所以我一开始没有看到任何日志记录(添加了一个daemon.*指向的选择器/var/log/daemon.log