Freebsd
使用 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
fromhost-B.lan
works。但是,10.0.2.0/24 網路上的無線客戶端(如 iPad 和 iPhone)似乎無法在 LAN 上找到內容(例如,在 LAN 上播放 Apple-TV)。
我不完全確定,但我認為這是因為 Apple 使用 Bonjour,而 Bonjour 使用 Multicast 來查找內容,而 Multicast 不會跨子網路由。
根據FreeBSD 手冊,要路由多播,我需要編譯核心
options MROUTING
並創建一個/etc/mrouted.conf
,但我找不到任何好的配置文件範例。
- 我的問題與跨子網多播有關嗎?
mrouted
FreeBSD 中啟用路由的首選解決方案是什麼?- 如何創建
/etc/mrouted.conf
10.0.1.0/24 和 10.0.2.0/24 之間的路由?
感謝@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.conf
為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
沒有記錄消息,avahi-daemon
所以我一開始沒有看到任何日誌記錄(添加了一個daemon.*
指向 的選擇器/var/log/daemon.log
)