我有一个通过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文件的好例子。
/etc/mrouted.conf和10.0.2.0/24之间的路由/etc/mrouted.conf? 感谢@ chris-s,我使用Avahi解决了自己的问题,而不是试图路由多播stream量。
这对我工作:
net/avahi和dns/nss_mdns 。 /etc/rc.conf添加avahi_daemon_enable="YES"和dbus_enable="YES" /usr/local/etc/avahi/avahi-daemon.conf )并将我的两个内部networking接口(两个内部子网)添加到allow-interfaces密钥(以逗号分隔),并设置enable-reflector密钥yes ,使avahi传播到所有内部networking的stream量。 /etc/nsswitch.conf的hosts条目到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。