2009-10-23 90 views
3

需要使用C創建自定義DNS名稱服務器,該服務器將檢查MySQL數據庫以查看客戶端IP是否需要定向到不同的服務器。將此用於測試網絡,所以如果啓用真正的查找,foo.com的請求將只會到達那裏,否則請求將被引導至開發環境。任何建議/建議?在C中創建自定義DNS名稱服務器

目前正在研究的libevent的東西,如LDNS或c-戰神

+1

你需要這個名字服務器是遞歸還是不是? – 2009-10-23 15:55:35

+0

目前有一個使用Stanford :: DNS服務器的perl DNS名稱服務器,這個崩潰並且需要每天重新啓動,所以我正在尋找在C. Stanford :: DNSserver中編寫類似的功能,據我所知只是權威性的。目標是像DNS服務器一樣工作,並根據mysql表中的信息修改某些請求,並將所有其他請求轉發給真正的DNS服務器。 – jfarrell 2009-10-23 19:15:57

回答

1

我結束了包含自身職能爲處理DNS請求的libevent 1.4去。 libevent包含的evdns函數非常直接,而且我需要創建q自定義dns服務器。我看着使用綁定,但不想處理必須設置區域和額外的配置,evdns允許我使用現有的resolv.conf轉發任何DNS請求到實名服務器,並根據需要修改響應包含在一個MySQL表中。

0

非常相似,我的工作,現在,除了在我的情況下,我必須使DNS服務器比正常返回不同的錯誤信息的東西適應它在專用網絡上運行的事實。

我決定只下載BIND源代碼,並將我的修改作爲補丁寫入。然後爲了部署,我們可以下載最新的BIND源代碼,其中將包含新的安全補丁,應用我們的定製補丁並構建它。

我建議你做同樣的事情,只是得到BIND並根據需要修改它。您可以獲得BIND及其所有文檔here at ISC.ORG

+0

我不認爲這是一個好主意。 BIND 9(與它的後續BIND 10計劃不同)並不是真正用於hackability。 – bortzmeyer 2009-10-26 08:00:00

+0

這只是意味着它不容易破解BIND 9,因爲源代碼的組織和重構都不夠好。但是有時開發人員只需要深入研究並弄清楚事情的真相。在任何情況下,OP都指定了C,並且可能會非常熟練地使用它,否則我會建議使用Python和Twisted Names與DNS服務器一起進行黑客攻擊。 – 2009-10-26 11:14:49

2

BIND已經有一個mySQL擴展(使用動態可加載區域)。您所需要做的就是創建一個包含翻譯的地址表,並使用該表定義構建正確DNS記錄的查詢。

的完整文檔,請參閱:http://bind-dlz.sourceforge.net/

相關問題