2013-08-14 13 views
2

기존 프라이빗 클라우드를 지원하기 위해 DNS 서비스 (다양한 DNS 작업 자동화)를 만들려고합니다. 나는 이것을하기위한 옵션과 아이디어를 찾고있다. 이 작업을 수행 할 기존 Java API가 있습니까? 제발 제안 해주세요.DNSJava를 사용하는 사설 클라우드의 DNS 자동화

가능한 해결책을 조사했습니다. 나는 좋은 해결책이 될 DNSJava을 발견했다. 그러나 많은 문서/예제를 찾지 못했습니다. 다음은 현재의 문제를 해결할 수있을 때의 답변입니다.

  1. NS 또는 A 레코드를 존 파일에 추가하는 방법은 무엇입니까?
  2. 영역 파일의 내용을 인쇄하는 방법은 무엇입니까?

테스트 목적으로 로컬 DNS 서버를 만들었습니다. 예제가 localhost와 관련하여 주어지면 정말 도움이 될 것입니다.

감사합니다.

답변

3

많은 연구 끝에 DNSJava으로 영역 파일을 수정하는 방법을 찾았습니다. Bind9가 서버에 설치되어 있어야합니다. 필수 영역 파일은 기본 정보로 작성되어야합니다. 이 설정이 완료되면 영역 파일에서 레코드를 추가 및 삭제하는 것은 간단합니다. Bind9 용 TSIG 키를 생성하려면 this 페이지를 참조하십시오. 실제로 레코드를 추가 할 수있는 코드는 다음과 같습니다.

Name zoneName = null; 
String domain = "your.domain"; 
String host = "hostname"; 
DNSRecordType type = DNSRecordType.A; 
int ttl = 600; 

Lookup lookup = new Lookup(Name.fromString("your.domain")); 
Record [] records = lookup.run(); 
if(records != null) { 
    zoneName = records[0].getName(); 
} 
if(zoneName != null) { 
    Name hostName = Name.fromString("hostname", zoneName); 
    Update update = new Update(zoneName); 
    update.add(hostName, Type.value(type.toString()), 600, 
        "192.168.2.50"); 
    Resolver resolver = new SimpleResolver(); 
    resolver.setTCP(true); 
    resolver.setTSIGKey(new TSIG("your.domain.", 
       "z0pll56C4cwLXYd2HG6WsQ==")); 

    Message response1 = resolver.send(update); 
    response = response1.getHeader().toString(); 
} 
+0

'DNSRecordType'이 더 이상 존재하지 않으므로 아마도 이미 int를 반환하는'Type.A'로 대체해야합니다. –