MySQL 데이터베이스 외부에 추가 영역 추가

MySQL 데이터베이스 외부에 추가 영역 추가

내 DNS 서버를 위한 MySQL 백엔드가 필요하여 Bind에서 PowerDNS로 전환하기로 결정했습니다. PowerDNS의 MySQL 백엔드는 약간 더 편리합니다.

기본적으로 사용자는 웹 프런트엔드를 사용하여 내 데이터베이스에 도메인을 추가하고 해당 도메인은 PowerDNS에 등록되어 사용할 수 있습니다. 이러한 도메인에 대해 DNS 서버에 쿼리하면 유효한 응답을 받습니다. 매력처럼 작동합니다.

사실은 내 DNS 레지스트리에 내 도메인과 영역을 추가해야 하는데 이를 데이터베이스에 추가하면 내 응용 프로그램의 논리가 손상됩니다(이 응용 프로그램의 사용자만 도메인을 추가해야 합니다). 내 데이터베이스에 직접 추가하지 않고 PowerDNS에 추가 도메인과 영역을 추가하고 싶습니다.

예를 들어 MySQL 쿼리가 이루어지기 전에 읽을 수 있는 추가 도메인을 파일에 등록할 수 있는 방법이 있습니까? 아니면 내 MySQL 레코드에 아무 것도 발견되지 않은 경우를 대비해 대체 파일이 있을까요?

답변1

해결책을 찾았습니다.PowerDNS 런치패드의 깊이! MySQL 백엔드를 사용하기 전에 DNS 데이터 파일을 읽는 방법이 있습니다. 즉... 두 개의 백엔드를 사용하는 것입니다! 인용 :

에 설명된 대로http://doc.powerdns.com/modules.html- 단어가 너무 많지는 않습니다.) - PowerDNS는 시작 문을 통해 다양한 수의 백엔드를 시작하거나 동일한 백엔드를 오븐으로 만들 수 있습니다. 일반적으로 명령줄 대신 구성 파일 pdns.conf에서 해당 작업을 수행합니다. 해당 백엔드는 실행 문에 제공된 순서대로 DNS 쿼리에 대한 응답을 위해 소진됩니다. 이는 라인의 첫 번째 백엔드가 질문에 답할 수 있으면 그렇게 되며 라인의 네 번째 백엔드만 질문에 답할 수 있는 경우 PowerDNS가 답변을 보낼 때까지 처음 세 개의 백엔드를 통해 루핑이 지연된다는 의미입니다. 따라서 백엔드가 응답하는지 확인하는 것이 중요합니다.충분히 빠르다1초 미만으로 수신하고 응답하는 속도가 충분히 빠르면 대부분의 재귀 네임서버와 호환되기에 충분하지만 물론 빠를수록 좋습니다.

내 문제에 대해서는 다음을 사용하기로 결정했습니다.

  • 우선순위 파일 기반 백엔드 역할을 하는 바인딩 백엔드.
  • 두 번째는 MySQL 백엔드입니다.

기본적으로 다음에서 약간의 구성 변경만 하면 됩니다 pdns.local.

launch=bind,gmysql

(백엔드에 이름 할당)을 더 구체적으로 지정할 수 있다고 들었습니다.

launch=bind:first,gmysql:second

그런 다음 두 백엔드 모두에 매개변수를 추가하면 됩니다.

# Bind backend configuration
bind-config=/path/to/your/zones/file

# MySQL configuration
gmysql-host=localhost
gmysql-port=
gmysql-dbname=db
gmysql-user=user
gmysql-password=passwd
gmysql-dnssec=no

zone{}도메인별 파일(SOA, A, MX, NS, ... 레코드 포함)을 참조하는 바인드 영역 파일(블록)을 생성하기만 하면 됩니다 .

재시작 !

관련 정보