2009-10-16 90 views
2

有沒有辦法在Linux下以編程方式將主機添加到本地名稱解析器?linux:以編程方式添加主機?

我寧願避免在/ etc /動態主機擺弄......

舉例:添加姓名並將其綁定到本地端口127.1.2.3

使用案例:我有一個應用程序可以通過Web瀏覽器在本地訪問。我想通過本地URI訪問應用程序。

+0

我想說這是服務器默認材質 –

+1

它涉及如何以編程方式執行此任務,所以在我看來,這是正確的。 – Noldorin

+0

將主機名綁定到主機:端口?這是否意味着你想連接到任何端口上的foo連接到localhost:9999?如果是這樣,你將需要更多的DNS配置。 –

回答

4

添加姓名並將其綁定到本地端口127.0.0.1:9999

它是什麼,你想要什麼?您可以將foo 127.0.0.1添加到hosts或在您的域名服務器上執行相應操作,但在端口1234上與foo的連接將始終爲127.0.0.1:1234 - 無法將其重定向到基於名稱的端口9999,該名稱在connect調用。

在Linux上,您可以將IP添加到回送設備(即ip addr add 127.1.2.3 dev lo),然後使用iptables將目標地址爲127.1.2.3:1234的所有連接更改爲127.0.0.1:9999,但我無法說出從你的問題,如果你想要的可觀察到的行爲。

0

您需要的google搜索詞是「動態DNS」的「DDNS」。這是一種向DNS服務器動態添加記錄的技術,這聽起來像是你想要的。我很確定大多數lunix發行版都支持它,但是您可能需要閱讀如何配置它。

+0

OP要求操縱「本地名稱解析器」。 DDNS是一種解決方案,但不是「本地」(而不是最簡單的)解決方案。 –

1

如果你只添加主機,一個非常安全的方式做到這一點是

echo -e "ip.add.re.ss\thostname" >> /etc/hosts 

現在,如果你想刪除它開始變得毛茸茸的。我懷疑你也想刪除它們。

如果是這樣,你可以使用動態DNS的情況下,例如,BIND具有的nsupdate工具更新區域文件:

 $ nsupdate 
     > update delete oldhost.example.com A 
     > update add newhost.example.com 86400 A 172.16.1.1 
     > send 

這將執行以下操作:

所有A記錄oldhost.example.com 已刪除。並且添加了IP地址爲 172.16.1.1的 newhost.example.com的A記錄。新增記錄有1天TTL(86400 秒)。

+0

例如,我可以將名稱「foo」綁定到端口9999上的本地地址127.0.0.1嗎? – jldupont

+1

DNS將IP地址映射到名稱,端口不是IP地址的一部分。所以不行。 –

+0

@vinko:忘了那個小細節......你是對的。 – jldupont

0

我將使用最近的發現:multicast-dns使用Avahi包。一個例子可以找到here