dns緩存nscd原理及相關知識

[| 不指定 2016/06/12 15:05]
| |
    由于sshd是支持包轉發的。所以最近配置了一些規則,將指定uid的包轉發到指定目標。通過統計包數量,發現tcp的數據是正常的,但dns請求包不生效,還是走原路徑。tcpdump抓包發現確實是發到系統配置的resolver那里去了。看了眼sshd的代碼,是使用了libc里面的res_query方法來做域名解析的。像gethostbyaddr也是使用的這個方法。考慮到可能是這里發生的問題,于是用strace抓包看了一眼。發現該方法是先去連接/var/run/nscd/socket。如果成功,則發送域名解析請求,然后由nscd服務進行dns解析。所以按uid來抓包會失效。

    nscd是一個緩存服務。會緩存passwd、hosts、resolv三類信息。和dnsmasq類似。先試圖停掉nscd服務再進行嘗試,果然進程在試圖連接/var/run/nscd/socket失敗后,轉為連接resolv.conf里指定的server,可以成功被iptables轉發。


    定位了具體問題原因后,開始尋找更多解決方案。停掉nscd固然最簡單,但會導致整個系統都失去dns緩存,對性能還是有一定影響的。于是尋找優化一些的方案。思路是對于指定進程繞過nscd機制。


    研究了一下。發現nscd為了避免自己的請求發送給自己導致死循環,調用了一個__nss_disable_nscd方法。調用該方法后即可關閉nscd機制。于是改動了一下sshd源碼,重新編譯了一個。再次重試。果然ok了。












Tags: ,
by snooda | 分類: 網絡 | 評論(0) | 引用(0) | 閱讀(5876)
發表評論
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打開HTML
打開UBB
打開表情
隱藏
記住我
昵稱   密碼   游客無需密碼
網址   電郵   [注冊]
               

 
一级a做爰片_免费一级特黄大片_日本一级特黄大片 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>