2013-08-22 32 views
6

我正在使用Fedora 18與avahi命令行工具(版本0.6.31)Avahi主機名解析:是否緩存某處?

我使用avahi-resolve-host-name來發現我的子網上的單元的IP地址,以便在開發過程中進行測試。我使用Wireshark監視請求和響應。在一次成功的請求和響應之後,Wireshark上不再顯示請求,但該工具仍然返回一個IP地址。計算機/ avahi守護進程/其他東西是否有可能「緩存」結果?

問題:我想用avahi-resolve-host-name的EVERY CALL發出請求包。這可能嗎?

原因:我得到'誤報'可以這麼說。我嘗試解決'test1.local',並且我得到了一個結果IP,但該單元不再位於此IP。我希望每次都發送請求,這樣我可以避免看到不正確IP地址的單元。

回答

2

我看到我有點遲到回答你的問題,但我會留下一個通用的答案,以防其他人絆倒在這。

我的回答基於avahi-0.6.32_rc。


是否有可能計算機/的avahi守護/別的東西是 '緩存' 的結果呢?

是的,avahi-daemon正在緩存查找結果。雖然這似乎並沒有在功能明確列出,該手冊頁avahi-daemon(8)它提示:

守護進程[...]爲當地計劃利用的mDNS記錄緩存avahi-兩個IPC的API守護進程維護。


我想用的avahi-解析主機名每次調用發送請求包。這可能嗎?

是的。相關選項,cache-entries-max(從avahi-daemon.conf(5)):

cache-entries-max=接受一個無符號整數,指定多的資源記錄是如何每個接口緩存。較大的值允許mDNS在大型局域網中正常工作,但也會增加內存消耗。

爲了達到預期的效果,你可以簡單地設置:

cache-entries-max=0 

這將完全禁用緩存,並強制的avahi守護補發在每次請求的mDNS數據包,從而使你有可能監測他們。

但是,我應該在這裏注意到,這也會使avahi在正常使用中幾乎無用。雖然avahi-daemon將發佈查找數據包,但它將無法存儲結果,並且每次調用avahi-resolve-host-name(以及其他命令行工具,nss-mdns,D-Bus API ...)都將失敗。