Windows Server DHCPをISC DHCPに置き換えようとしています。これを行うには、動的DNSレコードの登録をサポートまたはサポートしていないクライアントのDNSレコードの更新を容易にする必要があります。
Active Directory / DNSは、2012 R2フォレスト/ドメイン機能レベルのServer 2012 R2で実行されます。 DNSフォワードおよびリバースルックアップゾーンは、安全な動的更新のみを許可します。
ISC DHCP を AD DNS 環境に統合する方法に関するガイダンスが見つかりません。設定ファイルは次のように見えますが、ISC DHCPを使用している間に感じたのは、ドメインに参加していないクライアントの場合、前方/逆方向ルックアップ領域にAレコードが登録されていないことです。ドメインに参加しているクライアントの場合、Aレコードは順方向参照領域に登録されますが、逆方向参照領域には登録されません。順方向ルックアップ領域はDNSSECを使用しています。
ddns-updates on;
ddns-update-style standard;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
group {
option routers 10.10.20.1;
option subnet-mask 255.255.255.0;
option domain-search "example.local";
option domain-name-servers 10.10.20.2, 10.10.20.3;
option broadcast-address 10.10.20.255;
ddns-domainname "example.local";
ddns-rev-domainname "in-addr.arpa.";
authoritative;
allow unknown-clients;
authoritative;
subnet 10.10.20.0 netmask 255.255.255.0 {
range 10.10.20.30 10.10.20.150;
}
... certain IP reservations for hosts ...
}
上記の設定が完了した後、期待どおりにDHCPDがDNSによってレコードの更新/生成が拒否されました。
Unable to add forward map from device.example.local to 10.10.20.56: REFUSED
答え1
これはISC DHCPトリガを介して行うことができます。 IPv4専用のスクリプトと設定情報は、以下で確認できます。ISC DHCPd:セキュアMicrosoft DNS用の動的DNSアップデート
IPv4とIPv6をサポートしますが、上記のスクリプトと同じ前提を使用する代替スクリプトがあります。dns-krbnsupdate.sh。
問題の基本的な鍵は、MS DNSがDNSレコードを更新するための認証にKerberosを使用し、ISC DHCPがデフォルトでTSIG(BIND用)をサポートすることです。
上記のスクリプトは長すぎるため、ここに投稿しませんが、基本的な手順は次のとおりです。
キータブの作成を使用してくださいktutil
。これは、Active Directoryの「DnsUpdateProxy」メンバーであるドメインユーザーに適用されます。 WindowsまたはLinuxでこれを行うことができる必要があります(ただし、ISC DHCPを実行しているサーバーにキータブをコピーする必要があります)。
ドメイン/ DNSサーバー用に上記のスクリプトを構成します。
に追加されましたdhcpd.conf
。 IPv4 / IPv6スクリプトを使用している場合は、「実行」行を調整する必要があります。
提出時:
execute("/etc/dhcp/ddnsupdate6.sh", "add", ClientIP, "-h", ClientName, "-m", ClientMac);
出版当時:
execute("/etc/dhcp/ddnsupdate6.sh", "delete", ClientIP, "-m", ClientMac);
有効期限:
execute("/etc/dhcp/ddnsupdate6.sh", "delete", ClientIP);
最後に、MIT Kerberosを使用するかHeimdalを使用しているかを表示してください。 Debian Jesseの場合、Kerberosを使用してこのKRB5MIT
行のコメントを外します。
完了したら、起動してisc-dhcp-server
監視できます(デフォルトログ)/var/log/syslog
。
次のようなログエントリが表示されます。
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[0] = /etc/dhcp/ddnsupdate6.sh
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[1] = add
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[2] = 10.10.20.56
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[3] = -h
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[4] = HostName
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[5] = -m
Mar 23 23:19:34 localhost dhcpd: execute_statement argv[6] = <MAC_Addr>
Mar 23 23:19:34 localhost dhcpd: DHCPREQUEST for 10.10.20.56 from <MAC_Addr> (HostName) via eth0
Mar 23 23:19:34 localhost dhcpd: IPv4!
Mar 23 23:19:34 localhost dhcpd: DHCPACK on 10.10.20.56 to <MAC_Addr> (HostName) via eth0
Mar 23 23:19:34 localhost dhcpd: DDNS: adding records for 10.10.20.56 (hostname.nauplius.local) succeeded
次のような行が表示される場合:
DDNS:10.10.20.51(hostname.nauplius.local)のレコードを追加できませんでした:nsupdateステータス2
これは、[キー]タブで指定されたユーザーにDNSレコードに対する権限がないことを意味できます。これは、そのユーザーが最初にレコードを作成しなかった場合に発生する可能性があります(たとえば、プロキシユーザーを使用して代わりにDNSを更新しなかった場合など)。 DHCP)。 DNSレコードが期限切れになると、この現象は消えなければなりません。〜しない限りドメインに参加するWindowsクライアントは自動的にレコードを更新します。
Windows の DNS MMC に移動し、[セキュリティ] タブで関連する A/AAAA レコードを確認すると、これを確認できます。 HOSTNAME $が表示されている場合は、WindowsクライアントがすでにDNSに登録されており、ISC DHCPが登録できないことを意味します(個人的には問題がないと思います)。それ以外の場合は、keytabで指定されたユーザーにA / AAAAレコードに対する読み取り/書き込み権限があることを確認する必要があります。