Есть isc-DHCP Server 4.3.6-P1 на FreeBSD 11.2-RELEASE-p9 который раздает адреса в локальную сеть.
Хочу его привязать к AD DNS'у на Windows Server 2008 R2, чтобы все выданные адреса вносил в виндовый DNS.
Сгенерировал keytab, установил krb5, в конфиг dhcp сервера прописал триггеры on commit, on expire, on release с функцией execute() которая, по идее, должна запускать скрипт dns-krbnsupdate.sh и передавать ему в качестве параметров IP, MAC и имя хоста, которому был выдан адрес, который в свою очередь будет заносить, переданные ему данные, в DNS.
Код: Выделить всё
on commit {
set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set ClientName = pick-first-value(option host-name, host-decl-name, config-option host-name, noname);
log(info, concat("Commit: IP: ", ClientIP, " Mac: ", ClientMac, " Name: ", ClientName));
execute("/usr/local/etc/dhcpd/dns-krbnsupdate.sh", "add", ClientIP, ClientMac, ClientName);
}
on release {
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
log(concat("Release: IP: ", ClientIP, " Mac: ", ClientMac));
execute("/usr/local/etc/dhcpd/dns-krbnsupdate.sh", "delete", ClientIP);
}
on expiry {
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
log(concat("Expired: IP: ", ClientIP));
execute("/usr/local/etc/dhcpd/dns-krbnsupdate.sh", "delete", ClientIP);
}
Код: Выделить всё
Apr 15 20:20:43 <23.7> core dhcpd: Commit: IP: 192.168.10.36 Mac: 0:b:82:44:ff:78 Name: Phone-1132
Apr 15 20:20:43 <23.7> core dhcpd: execute_statement argv[0] = /usr/local/etc/dhcpd/dns-krbnsupdate.sh
Apr 15 20:20:43 <23.7> core dhcpd: execute_statement argv[1] = add
Apr 15 20:20:43 <23.7> core dhcpd: execute_statement argv[2] = 192.168.10.36
Apr 15 20:20:43 <23.7> core dhcpd: execute_statement argv[3] = 0:b:82:44:ff:78
Apr 15 20:20:43 <23.7> core dhcpd: execute_statement argv[4] = Phone-1132
Apr 15 20:20:43 <23.3> core dhcpd: execute: /usr/local/etc/dhcpd/dns-krbnsupdate.sh exit status 256
В начало скрипта было добавлено пара строк:
Код: Выделить всё
echo "$@" >> ./script.log
exit 0
в скрипе "dns-krbnsupdate.sh" есть проверка "пустых" переменных:
Код: Выделить всё
action=$1
ip=$2
DHCID=$3
name=${4%%.*}
...
if [ -z "$ip" ] || [ -z "$DHCID" ]; then
_usage
exit 1
fi
Код: Выделить всё
/usr/local/etc/dhcpd/dns-krbnsupdate.sh exit status 512
При запуске скрипта "вручную" с параметрами, скрипт отрабатывает без проблем:
Код: Выделить всё
root@core:/usr/local/etc/dhcpd# ./dns-krbnsupdate.sh add 192.168.10.36 0:b:82:44:ff:78 Phone-1132
DDNS: adding records for 192.168.10.36 (Phone-1132.domain.loc) succeeded
root@core:/usr/local/etc/dhcpd# ./dns-krbnsupdate.sh delete 192.168.10.36 0:b:82:44:ff:78 Phone-1132
DDNS: removing records for 192.168.10.36 (phone-1132.domain.loc) succeeded
Так вот, хочу узнать, есть ли у кого-нибудь из форумчан, опыт организации связки FreeBSD isc-dhcpd + MS Windows 2008 DNS?
Поделитесь, ибо, я уже не знаю в какую сторону копать...
Везде, на этот счет, "глухо" (даже в гугле
