オリジナル
Ubuntuサーバーを実行しているホームルーターに複雑なDNSセットアップがあります。私の目的は、次のことができるようにすることです。
dnscrypt-proxy
_。特定のドメイン(私が知っているいくつか)、私が知らない多くのドメイン、および特定のドメイン以外の場合、私のISPは、ブラックホールトラフィックへの誤ったアドレスでルックアップをポイズニングします。これをデフォルトのDNSルックアップサーバーにしたいと思いますこれらの目的を達成するために私が実装しなければならなかった解決策は、
unbound
dnscrypt-proxy
_ on _127.0.2.1:53
_ on _forward-addr
_ for _"."
_ in unbound192.168.1.1:40
_のbind
は私のローカルドメインに対してのみ権限がありますisc-dhcp-server
_ IPアドレスを配布し、順方向および逆方向のルックアップを挿入します。私は自分の目的の大部分をなんとか達成することができました。だから、私のLAN上の非静的ホストの順方向/逆方向のルックアップがあることを除いて例外を大幅に変更することをためらっています。
私の疑いは、_isc-dhcp-server
_がDDNS更新をunbound
に送信していて、それをどうするかわからないということです。クライアントのDNSサーバーを_isc-dhcp-server
_、bind
にするか、unbound
を有効にしてDDNS更新を転送する方法を知っていても、_192.168.1.1:40
_に_192.168.1.1:53
_、unbound
に送信するように依頼するにはどうすればよいですか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
_という名前の魔法のオプションがあります。これにより、_domain-name-server option
_とは異なるサーバーIPアドレスをDDNSに指定できます。
_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
名前付きのapparmorプロファイルを変更しましたが、権限エラーが発生しなくなりました。
127.0.0.1で直接bind
にクエリを実行すると、すべてが機能します。
ただし、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
_
/etc/unbound/unbound.d/
に、mydomain.ddns.net.
の解決を妨げる追加のファイルがありました。ファイルが削除されると、これで問題が解決しました。
最終的なセットアップ
dnscrypt-proxy
127.0.2.1
をリッスンしています。bind
127.0.0.1
をリッスンしています。unbound
192.168.1.1
をリッスンし、質問のmydomain.ddns.net
ステートメントを使用してstub-zone
をbind
に転送し、デフォルトでdnscrypt-proxy
に転送します。isc-server-dhcp
はddns*
のdhcpd.conf
オプションを使用してbind
を更新します