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

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

在子网之间有一些路由,比如来自host-B.lan ssh host-A.wifi host-B.lan工程。

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

我不完全确定,但我认为这是因为苹果使用Bonjour和Bonjour使用多播来查找的东西和多播不通过子网路由。

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

  1. 我的问题涉及跨子网多播吗?
  2. 在FreeBSD中为了启用路由select了首选解决scheme?
  3. 如何创build/etc/mrouted.conf和10.0.2.0/24之间的路由/etc/mrouted.conf?

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

这对我工作:

  • 从ports树编译并安装net/avahidns/nss_mdns
  • /etc/rc.conf添加avahi_daemon_enable="YES"dbus_enable="YES"
  • 使用avahiconfiguration文件( /usr/local/etc/avahi/avahi-daemon.conf )并将我的两个内部networking接口(两个内部子网)添加到allow-interfaces密钥(以逗号分隔),并设置enable-reflector密钥yes ,使avahi传播到所有内部networking的stream量。
  • 编辑/etc/nsswitch.confhosts条目到hosts: 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 

或者通过像Bonjour Browser或iStumbler这样的实用程序浏览.local域名(两者都很好)。 您应该能够看到所有子网上的设备,主机和服务。

脚注是我的股票FreeBSD 9.0安装的/etc/syslogd.conf默认没有logging来自avahi-daemon的消息,所以我没有看到任何日志logging(添加了daemon.*select器指向/var/log/daemon.log

广告3:

 phyint em0 rate_limit 0 igmpv1 phyint em1 rate_limit 0 igmpv1 

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

一个快速的谷歌search显示,其他的可能性是一个Bonjour“代理”或通过添加服务的DNS。