Byron의 대답에 따라 플래그 또는 호출 을 사용하여 networkaddress.cache.ttl
또는 networkaddress.cache.negative.ttl
시스템 속성으로 설정할 수 없습니다. 이는 시스템 속성이 아니기 때문에 보안 속성입니다.-D
System.setProperty
System 속성을 사용하여이 동작을 트리거하려면 ( -D
플래그를 사용 하거나를 호출 할 수 있습니다 System.setProperty
) 다음 System 속성 을 설정해야 합니다.
-Dsun.net.inetaddr.ttl=0
이 시스템 속성은 원하는 효과를 활성화합니다.
그러나 유의하십시오 : -D
JVM 프로세스를 시작할 때 플래그를 사용하지 않고 대신 코드에서 이것을 호출하도록 선택하는 경우 :
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
이 코드 는 JVM의 다른 코드가 네트워킹 작업을 수행하기 전에 실행 되어야합니다 .
예를 들어 Security.setProperty
.war 파일 을 호출 하고 해당 .war을 Tomcat에 배포 한 경우 작동하지 않기 때문에 이는 중요 합니다. Tomcat은 Java 네트워킹 스택을 사용하여 .war의 코드가 실행되는 것보다 훨씬 일찍 자체적으로 초기화됩니다. 이 '경쟁 조건'때문에 일반적으로 -D
JVM 프로세스를 시작할 때 플래그 를 사용하는 것이 더 편리합니다 .
을 사용 -Dsun.net.inetaddr.ttl=0
하거나 호출 하지 않으면 해당 파일에서 보안 속성 Security.setProperty
을 편집 $JRE_HOME/lib/security/java.security
하고 설정 해야합니다.
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
그러나 해당 속성을 둘러싼 의견의 보안 경고에주의하십시오. DNS 스푸핑 공격에 취약하지 않다고 합리적으로 확신하는 경우에만이 작업을 수행하십시오 .
java.security.Security
(적어도 jdk7에서)