差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
java:basic:networking:resolve_host_cache_on_suse [2017/01/19 17:10]
tony [How to resolve?]
java:basic:networking:resolve_host_cache_on_suse [2023/06/25 09:48] (目前版本)
行 4: 行 4:
 為了要做某個測試,我們會去修改/​etc/​hosts的內容,讓某個hostname會對應到ip A;但結果卻是對應到ip B,也是此hostname真實的ip。 為了要做某個測試,我們會去修改/​etc/​hosts的內容,讓某個hostname會對應到ip A;但結果卻是對應到ip B,也是此hostname真實的ip。
 ===== How to resolve? ===== ===== How to resolve? =====
-在SUSE上,有一個名為nscdname service cache,其中一個功能就是會cache /​etc/​hosts的查詢結果。在爬些文後,得知只要執行以下指令,就可以清除/​etc/​hosts的cache:​+首先我有確認/​etc/​host.conf確認搜尋hostname順序;後來得知在SUSE上,有一個服務名為nscd提供name service cache,其中一個功能就是會cache /​etc/​hosts的查詢結果。在爬些文後,得知只要執行以下指令,就可以清除/​etc/​hosts的cache:​
 <code bash> <code bash>
 /​usr/​sbin/​nscd -i hosts /​usr/​sbin/​nscd -i hosts
行 12: 行 12:
 java.security.Security.setProperty("​networkaddress.cache.ttl",​ "​0"​);​ java.security.Security.setProperty("​networkaddress.cache.ttl",​ "​0"​);​
 </​code>​ </​code>​
-但這個方法會讓影響到原本的功能;於是採用第二個方法,在啟動參數加入:​+第二個方法,在啟動參數加入:​
 <code bash> <code bash>
 -Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.ttl=0
 </​code>​ </​code>​
-如此就可以順利測試完成。目前已知問題是,如果停止了nscd服務後即使你修改了/​etc/​hosts,hostname依然會維持在上次query的狀況下。+如此就可以順利測試完成。\\ 
 +\\ 
 +目前已知問題是,如果停止了nscd服務後即使你修改了/​etc/​hosts,hostname依然會維持在上次query的狀況下。
 ===== Reference ===== ===== Reference =====
   * [[https://​linux.die.net/​man/​5/​nscd.conf|About nscd]]   * [[https://​linux.die.net/​man/​5/​nscd.conf|About nscd]]
   * [[https://​www.liquidweb.com/​kb/​flush-dns-cache/​|flush dns cache]]   * [[https://​www.liquidweb.com/​kb/​flush-dns-cache/​|flush dns cache]]
   * [[http://​www.ctolib.com/​topics/​61570.html|java实现清理DNS Cache的方法]]   * [[http://​www.ctolib.com/​topics/​61570.html|java实现清理DNS Cache的方法]]
 +  * [[http://​docs.oracle.com/​javase/​7/​docs/​technotes/​guides/​net/​properties.html|Java7 - networking properties]]
 +  * [[http://​www.study-area.org/​2freebsd/​config/​02.htm|/​etc/​host.conf]]
 +
 +=====    =====
 +----
 +\\
 +~~DISQUS~~