기발한
Ubuntu 서버를 실행하는 홈 라우터에 복잡한 DNS 설정이 있습니다. 저의 목표는
- 내가 관심있는 지역 레오 케이션 감지 조회를 위해 로컬 ISP의 DNS를 조회하십시오.
dnscrypt-proxy
대부분의 조회를 위해. 특정 도메인 (내가 아는 일부)의 경우, 내가 모르는 특정 도메인과 다른 도메인의 대부분의 ISP는 잘못된 주소로 조회를 블랙홀 트래픽에 중독시킵니다. 이것이 기본 DNS 조회 서버가되기를 바랍니다.- 인터넷 DNS 조회를 최소화하십시오. 인터넷 연결이 안정적이지 않으며 하루 중 특정 시간에 DNS 검색이 성공하지 못할 확률이 50/50 정도로 낮습니다.
- 주로 역방향 조회가 작동하도록 내 내부 도메인을 보유하십시오.
이러한 목표를 달성하기 위해 구현해야하는 솔루션은
unbound
캐시 캐싱, 적극적으로 캐시 유지 및 캐시 누락을 위해 관련 DNS 서버로 주소 전달을위한 LAN의 기본 DNS 서버dnscrypt-proxy
에127.0.2.1:53
는 ASforward-addr
에 대한"."
언 바운드에서bind
에192.168.1.1:40
내 로컬 도메인에 대한 권한 만isc-dhcp-server
IP 주소를 전달하고 정방향 및 역방향 조회를 삽입합니다.
나는 대부분의 목표를 달성했다. 따라서 LAN에있는 비 정적 호스트에 대한 정방향 / 역방향 조회를 제외하고 는 크게 변경해야 합니다.
내 의심은 isc-dhcp-server
DDNS 업데이트를 전송하여 unbound
어떤 조치를 취해야할지 전혀 모른다는 것입니다. 어떻게 묻죠 isc-dhcp-server
에 보내 192.168.1.1:40
, bind
내 클라이언트에 대한 DNS 서버가되고 싶어하더라도 192.168.1.1:53
, unbound
또는 수 unbound
에 DDNS 업데이트를 전달하는 방법을 알고 bind
?
오류 메시지 예
Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPREQUEST for 192.168.1.101 from 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPACK on 192.168.1.101 to 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:22 ubuntu dhcpd[7057]: Unable to add forward map from Xbox-SystemOS.mydomain.ddns.net. to 192.168.1.101: timed out
관련 라인 dhcpd.conf
ddns-updates on;
ddns-update-style interim;
key rndc-key { algorithm hmac-md5; secret MIND_YOUR_BUSINESS; }
subnet ...... {
....
option domain-name-servers 192.168.1.1;
...
ddns-domainname "mydomain.ddns.net.";
ddns-rev-domainname "in-addr.arpa.";
}
관련 라인 /etc/bind/named.conf.local
zone "mydomain.ddns.net" {
type master;
file "/etc/bind/zones/db.mydomain.ddns.net"; # Zone file path
allow-update { key rndc-key; }; # allow for dynamic updates
};
zone "168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168"; # 192.168.0.0/16 subnet
allow-update { key rndc-key; }; # allow for dynamic updates
};
업데이트 1
파고 들자 dhcpd.conf
나는 바인딩 서버의 포트 번호를 지정할 수 없다는 결론에 도달했습니다. 그러나에서 ddns-local-address4
DDNS에 다른 서버 IP 주소를 지정할 수 있는 매직 옵션이라는 이름 이 domain-name-server option
있습니다.
수신하도록 바인드를 변경 127.0.0.1
했으며 크게 작동합니다. 그러나 권한이 부족합니다.
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: signer "rndc-key" approved
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' A 192.168.1.104
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' TXT "316a52934f2adcaf4c95004e870a4c0f70"
Sep 29 19:21:40 ubuntu named[31415]: /etc/bind/zones/db.mydomain.ddns.net.jnl: open: permission denied
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': error: journal open failed: unexpected error
Sep 29 19:21:40 ubuntu kernel: [212079.779512] audit: type=1400 audit(1475148100.710:25): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/etc/bind/zones/db.mydomain.ddns.net.jnl" pid=31419 comm="named" requested_mask="w" denied_mask="w" fsuid=110 ouid=0
그러나 최선의 시도는 해당 파일을 업데이트하기 위해 바인드에 충분한 권한을 부여하는 것입니다. 무엇을 제공합니까?
ps aux | grep named
bind 31415 0.0 0.2 429564 19572 ? Ssl 19:10 0:00 /usr/sbin/named -f -u bind
ls -la /etc/bind/zones
total 16
drwxrwsr-x 2 root bind 4096 Sep 29 19:21 .
drwxr-sr-x 3 root bind 4096 Sep 29 19:07 ..
-rw-r--r-- 1 root bind 340 Sep 28 08:01 db.192.168
-rw-r--r-- 1 root bind 514 Sep 27 07:40 db.mydomain.ddns.net
-rw-rw-r-- 1 bind bind 0 Sep 29 19:21 db.mydomain.ddns.net.jnl
업데이트 2
명명 된 이름으로 내 의류 프로필을 수정했는데 더 이상 권한 오류가 발생하지 않습니다.
bind
127.0.0.1에서 직접 쿼리하면 모든 것이 작동합니다.
그러나를 통해 쿼리 할 때 조회 ubuntu
를 bind
올바르게 전달하지 않습니다 .
내가 지금 뭘 잘못하고 있니?
에서 unbound.conf
local-zone: "1.168.192.in-addr.arpa." nodefault
local-zone: "168.192.in-addr.arpa." nodefault
stub-zone:
name: "168.192.inaddr.arpa."
stub-addr: 127.0.0.1
stub-zone:
name: "1.168.192.inaddr.arpa."
stub-addr: 127.0.0.1
stub-zone:
name: "mydomain.ddns.net."
stub-addr: 127.0.0.1
chown bind:bind /etc/bind/zones
으로 충분합니다 (BIND 사용자를 디렉토리의 소유자로 만드십시오).