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 레코드에 대한 읽기/쓰기 권한이 있는지 확인해야 합니다.