I have a dc configured to use the samba internal dns service.  The version of
samba I am using is 4.10.15 packaged for FreeBSD.  Its build options state
this:
	BIND911        : off
	BIND916        : off
, , ,
	GSSAPI_BUILTIN : on
	GSSAPI_MIT     : off
	LDAP           : on
. . .
	NSUPDATE       : off
My smb4.conf file contains this:
[global]
  bind interfaces only = Yes
  dns forwarder = 192.168.18.161 216.185.71.33
  interfaces = lo0 localhost smb4-1
  netbios name = SMB4-1
  realm = BROCKLEY.HARTE-LYNE.CA
  server role = active directory domain controller
  workgroup = BROCKLEY
  idmap_ldb:use rfc2307 = yes
  vfs objects = dfs_samba4 zfsacl
  server services = -nbt
  rndc command = /usr/bin/true
  log level = 1
  log file = /var/log/samba4/smbd.log
  max log size = 10000
  debug timestamp = yes
  # Disable printing
  load printers = no
  printing = bsd
  printcap name = /dev/null
  disable spoolss = yes
When I run samba_dnsupdate I see this:
samba_dnsupdate --verbose -d4 --all-names
. . .
update(nsupdate): SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389
Calling nsupdate for SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389 (add)
Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as
SMB4-1$
Failed nsupdate: SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389 : [Errno 2] No such file or directory:
'/usr/bin/nsupdate': '/usr/bin/nsupdate'
Failed update of 29 entries
Why is nsupdate required to update the internal dns service of samba?
If I install bind-tools (which provides the nsupdate program) and add  'dns
update command = /usr/local/sbin/nsupdate' to smb4.conf then when I run
samba_dnsupdate I get this:
samba_dnsupdate --verbose -d4 --all-names
. . .
update(nsupdate): SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389
Calling nsupdate for SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389 (add)
Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as
SMB4-1$
Failed nsupdate: SRV
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca
SMB4-1.brockley.harte-lyne.ca 389 : [Errno 2] No such file or directory:
'/usr/bin/nsupdate': '/usr/bin/nsupdate'
Failed update of 29 entries
What am I doing wrong?
-- 
***          e-Mail is NOT a SECURE channel          ***
        Do NOT transmit sensitive data via e-Mail
 Do NOT open attachments nor follow links sent by e-Mail
James B. Byrne                mailto:ByrneJB at Harte-Lyne.ca
Harte & Lyne Limited          http://www.harte-lyne.ca
9 Brockley Drive              vox: +1 905 561 1241
Hamilton, Ontario             fax: +1 905 561 0757
Canada  L8E 3C3
On 30/06/2020 16:46, James B. Byrne via samba wrote:> I have a dc configured to use the samba internal dns service. The version of > samba I am using is 4.10.15 packaged for FreeBSD. Its build options state > this: > > BIND911 : off > BIND916 : off > , , , > GSSAPI_BUILTIN : on > GSSAPI_MIT : off > LDAP : on > . . . > NSUPDATE : off > > My smb4.conf file contains this: > > [global] > bind interfaces only = Yes > dns forwarder = 192.168.18.161 216.185.71.33 > interfaces = lo0 localhost smb4-1 > netbios name = SMB4-1 > realm = BROCKLEY.HARTE-LYNE.CA > server role = active directory domain controller > workgroup = BROCKLEY > idmap_ldb:use rfc2307 = yes > vfs objects = dfs_samba4 zfsacl > server services = -nbt > rndc command = /usr/bin/true > log level = 1 > log file = /var/log/samba4/smbd.log > max log size = 10000 > debug timestamp = yes > > # Disable printing > load printers = no > printing = bsd > printcap name = /dev/null > disable spoolss = yes > > When I run samba_dnsupdate I see this: > > samba_dnsupdate --verbose -d4 --all-names > . . . > update(nsupdate): SRV > _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca > SMB4-1.brockley.harte-lyne.ca 389 > Calling nsupdate for SRV > _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca > SMB4-1.brockley.harte-lyne.ca 389 (add) > Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as > SMB4-1$ > Failed nsupdate: SRV > _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca > SMB4-1.brockley.harte-lyne.ca 389 : [Errno 2] No such file or directory: > '/usr/bin/nsupdate': '/usr/bin/nsupdate' > Failed update of 29 entries > > Why is nsupdate required to update the internal dns service of samba?I wasn't privy to that decision, but it just is ;-)> > If I install bind-tools (which provides the nsupdate program) and add 'dns > update command = /usr/local/sbin/nsupdate' to smb4.conf then when I run > samba_dnsupdate I get this: > > samba_dnsupdate --verbose -d4 --all-names > . . .Could be because you added the wrong line to your smb4.conf (why does freebsd call it smb4.conf ?), try: nsupdate command = /usr/local/sbin/nsupdate -g Rowland
> Could be because you added the wrong line to your smb4.conf (why does > freebsd call it smb4.conf ?),Why does freebsd put these things in /usr/local/etc/? Some questions have answers that are not worth the effort to know.> try: > nsupdate command = /usr/local/sbin/nsupdate -gI did catch that error earlier. But it makes no difference. samba_dnsupdate does not give any evidence of using any value set by 'dns update command = '. It always reports that it cannot find '/usr/bin/nsupdate'. [root at smb4-1 ~ (master)]# which nsupdate /usr/local/bin/nsupdate [root at smb4-1 ~ (master)]# grep nsupdate /usr/local/etc/smb4.conf dns update command = /usr/local/bin/nsupdate -g samba_dnsupdate --verbose -d4 --all-names . . . update(nsupdate): SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 Calling nsupdate for SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 (add) Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as SMB4-1$ Failed nsupdate: SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 : [Errno 2] No such file or directory: '/usr/bin/nsupdate': '/usr/bin/nsupdate' Failed update of 29 entries I experienced this on samba 4.4.3 and the work-around was to create a logical link /usr/bin/nsupdate pointing at /usr/local/bin/nsupdate. However, nsupdate on FreeBSD does not handle the option -g very well. [root at smb4-1 ~ (master)]# samba_dnsupdate --verbose -d4 --all-names . . . update(nsupdate): SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 Calling nsupdate for SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 (add) Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as SMB4-1$ /usr/bin/nsupdate: cannot specify -g or -o, program not linked with GSS API Library Failed nsupdate: 1 Failed update of 29 entries Without the -g option in smb4.conf samba_dnsupdate gives the same result. I presume because that -g -o are both part of the default call to nsupdate that it uses. There does not appear to be any way to unset this. [root at smb4-1 ~ (master)]# grep nsupdate /usr/local/etc/smb4.conf dns update command = /usr/local/bin/nsupdate . . . update(nsupdate): SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 Calling nsupdate for SRV _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.brockley.harte-lyne.ca SMB4-1.brockley.harte-lyne.ca 389 (add) Successfully obtained Kerberos ticket to DNS/SMB4-1.brockley.harte-lyne.ca as SMB4-1$ /usr/bin/nsupdate: cannot specify -g or -o, program not linked with GSS API Library Failed nsupdate: 1 Failed update of 29 entries Where do I go from here? -- *** e-Mail is NOT a SECURE channel *** Do NOT transmit sensitive data via e-Mail Do NOT open attachments nor follow links sent by e-Mail James B. Byrne mailto:ByrneJB at Harte-Lyne.ca Harte & Lyne Limited http://www.harte-lyne.ca 9 Brockley Drive vox: +1 905 561 1241 Hamilton, Ontario fax: +1 905 561 0757 Canada L8E 3C3
On 30/06/2020 21:15, James B. Byrne via samba wrote:>> Could be because you added the wrong line to your smb4.conf (why does >> freebsd call it smb4.conf ?), > Why does freebsd put these things in /usr/local/etc/? Some questions have > answers that are not worth the effort to know. > >> try: >> nsupdate command = /usr/local/sbin/nsupdate -g > I did catch that error earlier. But it makes no difference. samba_dnsupdate > does not give any evidence of using any value set by 'dns update command = '. > It always reports that it cannot find '/usr/bin/nsupdate'. > > [root at smb4-1 ~ (master)]# which nsupdate > /usr/local/bin/nsupdate > > [root at smb4-1 ~ (master)]# grep nsupdate /usr/local/etc/smb4.conf > dns update command = /usr/local/bin/nsupdate -gFrom 'man smb.conf': nsupdate command (G) ??? This option sets the path to the nsupdate command which is used for GSS-TSIG dynamic DNS updates. ??? Default: nsupdate command = /usr/bin/nsupdate -g dns update command (G) ??? This option sets the command that is called when there are DNS updates. It should update the local machines DNS names using TSIG-GSS. ??? Default: dns update command = ${prefix}/sbin/samba_dnsupdate ??? Example: dns update command = /usr/local/sbin/dnsupdate You probably need both. Rowland