/
Java VM 의 DNS caching TTL
Java VM 의 DNS caching TTL
Java VM 은 DNS lookup 시 TTL(time-to-live) 전략을 쓰지 않고 한 번 lookup한 도메인 이름은 VM 이 내려갈때까지 계속 캐싱을 하고 있다. (DNS Spoofing 공격을 막기 위함이라고 한다..)
이때문에 외부에 있는 서버의 IP 가 변경되는 경우(예로 google의 reChPTCHA는 가끔 IP 를 변경한다고 한다.) 예전 IP 로 접속하는 문제가 발생할 수 있다.
이 문제를 해결하려면 Java VM 을 완전히 내렸다가 올려야 하며 WAS를 사용할 경우 WAS 를 재구동해야 한다.
또 다른 해결책은 TTL 을 사용하도록 Java SecurityManager의 policy를 수정한 후에 JVM 을 구동하는 방법이 있다.
수정 대상 policy
networkaddress.cache.ttl
성공한 dns lookup 에 대해 cache 여부.
value | 의미 | 비고 |
---|---|---|
-1 | cache forever | default |
0 | cache 하지 않음 | 매번 DNS Server 에서 lookup |
0 보다 큰 정수 | TTL 시간 | 60으로 설정시 60초가 지났을 경우 다시 DNS Server를 통해 lookup |
networkaddress.cache.negative.ttl
실패한 DNS lookup 에 대해 cache 할지 여부이며 기본 설정은 10 이다.
value | 의미 | 비고 |
---|---|---|
-1 | cache forever | |
0 | cache 하지 않음 | 매번 DNS Server 에서 lookup |
0 보다 큰 정수 | 정해진 시간이 지났을 경우 DNS에서 새로 lookup | 60으로 설정시 60초가 지났을 경우 다시 DNS Server를 통해 lookup |
변경하려면 $JRE/lib/security/java.security 파일의 다음 항목을 수정한다.
# networkaddress.cache.ttl=-1 networkaddress.cache.ttl=60
아니면 다음 java code 를 app 소스에서 호출해서 코드로 Java SecurityManager 를 수정해도 된다.
static { java.security.Security.setProperty ("networkaddress.cache.ttl" , "60"); }
Ref
- https://developers.google.com/recaptcha/docs/java?hl=ko
- http://docs.oracle.com/javase/7/docs/technotes/guides/net/properties.html#nct
- http://docs.oracle.com/javase/7/docs/api/
, multiple selections available,
Related content
Domain name 과 DNS(Domain Name Server)는 무엇이고 어떻게 동작하는가?
Domain name 과 DNS(Domain Name Server)는 무엇이고 어떻게 동작하는가?
More like this
클라우드 플레어(Cloudflare) 를 DNS 서버로 사용하기
클라우드 플레어(Cloudflare) 를 DNS 서버로 사용하기
More like this
Linux에 DNS(Domain Name Server) 설정 방법
Linux에 DNS(Domain Name Server) 설정 방법
More like this
가상 호스트(Vritual Host)와 SNI(Server Name Indication)
가상 호스트(Vritual Host)와 SNI(Server Name Indication)
More like this
Linux host 명령어 사용법 및 예제 정리
Linux host 명령어 사용법 및 예제 정리
More like this
가상 호스트(Virtual Host) 동작 방식
가상 호스트(Virtual Host) 동작 방식
More like this