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

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

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

子网与工作间存在ssh host-A.wifi路由host-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.conf10.0.1.0/24 和 10.0.2.0/24 之间的路由?

答案1

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

这对我有用:

  • 从 ports 树编译并安装net/avahidns/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

或者使用类似以下实用程序浏览 .local 域名Bonjour 浏览器或者互联网浏览器(都非常好)。您应该能够看到所有子网上的设备、主机和服务。

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

答案2

广告 3:

phyint em0 rate_limit 0 igmpv1
phyint em1 rate_limit 0 igmpv1

但要注意,AppleTV 很可能会发送 TTL 为 1 的数据包,因此无法路由。

快速谷歌搜索显示,其他可能性是 Bonjour“代理”或将服务添加到 DNS。

相关内容