ISC DHCP com atualizações de DNS dinâmico seguro do Active Directory

7

Estou tentando substituir o DHCP do Windows Server pelo ISC DHCP. Para fazer isso, eu preciso ser capaz de facilitar a atualização de registros DNS de clientes que não suportam registro de registro DNS dinâmico.

O Active Directory / DNS está sendo executado no Server 2012 R2 nos níveis funcionais de floresta / domínio do 2012 R2. As zonas de pesquisa direta e reversa de DNS aceitam somente atualizações dinâmicas seguras.

Não tive sucesso em encontrar um guia sobre como integrar apenas o ISC DHCP em um ambiente DNS do AD. O arquivo de configuração está abaixo, mas o que eu notei ao usar o ISC DHCP é que os clientes não associados ao domínio não terão um registro A registrado para eles nas zonas de pesquisa direta / reversa. Para clientes ingressados no domínio, eles terão um registro A registrado na zona de pesquisa direta, mas não na zona de pesquisa inversa. A zona de pesquisa direta está usando o 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 ...
}

Com a configuração acima, o DHCPD, como esperado, está sendo recusado pelo DNS para atualizar / criar registros:

Unable to add forward map from device.example.local to 10.10.20.56: REFUSED
    
por Trevor Seward 16.03.2016 / 02:37

1 resposta

4

Isso pode ser concluído por meio de gatilhos para o ISC DHCP. O script somente IPv4 e as informações de configuração estão disponíveis em ISC DHCPd: Atualizações de DNS dinâmicas contra DNS da Microsoft seguro

Existe um script alternativo que suporta IPv4 e IPv6, mas usando a mesma premissa do script acima está disponível em dns-krbnsupdate.sh .

O cerne básico do problema é que o MS DNS usa Kerberos para autenticação para atualizar registros DNS, enquanto o ISC DHCP, pronto para uso, suporta TSIG [para BIND].

Os scripts acima são bastante longos, por isso não os publicarei aqui, mas os passos básicos são:

Gere um keytab usando ktutil . Isso é para um usuário de domínio que é um membro do "DnsUpdateProxy" no Active Directory. Você deve ser capaz de fazer isso no Windows ou no Linux (mas o keytab deve ser copiado para o servidor executando o ISC DHCP).

Configure o script acima para o seu domínio / servidores DNS.

Adicione os parâmetros necessários para executar o script nos acionadores 'on commit', 'on release', 'on expiry' em dhcpd.conf . Se estiver usando o script IPv4 / IPv6, as linhas "executar" precisarão ser ajustadas:

em commit:

execute("/etc/dhcp/ddnsupdate6.sh", "add", ClientIP, "-h", ClientName, "-m", ClientMac);

na versão:

execute("/etc/dhcp/ddnsupdate6.sh", "delete", ClientIP, "-m", ClientMac);

no vencimento:

execute("/etc/dhcp/ddnsupdate6.sh", "delete", ClientIP);
Por último, anote se você está usando o MIT Kerberos ou o Heimdal. Com o Debian Jesse, estou usando o Kerberos e descomentei a linha KRB5MIT .

Depois de concluído, você pode iniciar isc-dhcp-server e monitorar o (registro padrão) /var/log/syslog .

Você deve ver entradas de registro semelhantes a:

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

Se você vir linhas semelhantes a:

DDNS: adding records for 10.10.20.51 (hostname.nauplius.local) FAILED: nsupdate status 2

Isso provavelmente significa que o usuário especificado no keytab não tem direitos sobre o registro DNS, o que pode acontecer se esse usuário não criou o registro originalmente (por exemplo, você não usou um proxy para atualizar o DNS em nome do DHCP). ). Isso deve desaparecer com o tempo, à medida que os registros DNS expirarem, , a menos que os clientes Windows ingressados no domínio estejam atualizando automaticamente seus próprios registros.

Você pode validar isso através do DNS MMC no Windows e verificar a guia Segurança do registro A / AAAA em questão. Se você vir HOSTNAME $, o cliente Windows se registrará no DNS, e o ISC DHCP não poderá (não vejo um problema com isso). Caso contrário, você deverá ver que o usuário especificado no keytab tem permissões de leitura / gravação sobre o registro A / AAAA.

    
por 24.03.2016 / 00:27