Currently local bind-dyndb-ldap
configuration (like global
forwarder) is present only in /etc/named.conf
. All configuration in
LDAP applies globally to all plugin instances and takes precedence over
local configuration. This is not easy to manage from FreeIPA because
FreeIPA does not have facilities to centrally change named.conf
.
idnsServerId
attribute.Configuration objects will be stored in a LDAP container should be visible to all DNS servers and DNS server admins.
dn: cn=servers,cn=dns,dc=example,dc=com
objectClass: top
objectClass: nsContainer
cn: servers
Server configuration attributes and object class:
attributeTypes: ( 2.16.840.1.113730.3.8.5.31 NAME 'idnsServerId' DESC 'DNS server identifier' EQUALITY caseIgnoreMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'IPA v4.4' )
objectClasses: ( 2.16.840.1.113730.3.8.6.6 NAME 'idnsServerConfigObject' DESC 'DNS server configuration options' STRUCTURAL MUST ( idnsServerId ) MAY ( idnsSubstitutionVariable $ idnsSOAmName $ idnsForwarders $ idnsForwardPolicy ) X-ORIGIN 'IPA v4.4' )
Configuration entry for particular server should be visible only to DNS admins and DNS servers.
Configuration for server ipa-brno.example.com
defines SOA MNAME
= ipa-brno.example.com
so this server will advertise itself as
master accepting updates and will ignore value defined by
idnsSoaMName
attribute in zones.
dn: idnsServerId=ipa-brno.example.com
objectClass: idnsServerConfigObject
idnsServerId: ipa-brno.example.com.
idnsSOAMname: ipa-brno.example.com.
Similarly, configuration for server ipa-london.example.com
defines
SOA MNAME
= ipa-london.example.com
so this server will advertise
itself as master accepting updates and will ignore value defined by
idnsSOAMName
attribute in zones.
dn: idnsServerId=ipa-london.example.com
objectClass: idnsServerConfigObject
idnsServerId: ipa-london.example.com.
idnsSOAMname: ipa-london.example.com.
Highest priority is on top:
idnsZone
entryidnsServerConfig
entryidnsConfig
entrybind-dyndb-ldap will get a new option server_id
which can be used to
specify string to use in idnsServerId
filter.
A new page needs to be created: Network Services -> DNS -> DNS Servers
This page will list all servers. From this list it will be possible to open a page with configuration options for particular server.
Command | Options | Meaning |
---|---|---|
dnsserver-add | <server name> –type=ipa | create an empty server object; Not exposed in API. |
dnsserver-show | <server name> | show server object and its variables |
dnsserver-find | [substring] | list all servers |
dnsserver-mod | <server name> –forwarder | same as in dnsconfig-mod, affects one server |
dnsserver-mod | <server name> –forward-policy | same as in dnsconfig-mod, affects one server |
dnsserver-mod | <server name> –soa-mname-override | same as fake_mname option in named.conf |
dnsserver-set-variable | <server name> <variable name> <value> | set variable specified in Design/RecordGenerator. Not exposed in API. Valid only for IPA DNS servers. |
dnsserver-del-variable | <server name> <variable name> | delete variable specified in Design/RecordGenerator. Not exposed in API. Valid only for IPA DNS servers. |
The object is using a new objectClass so older versions of bind-dyndb-ldap will ignore it.
Following options from named.conf
should be migrated to newly
created idnsServerConfigObject
during IPA upgrade:
fake_mname
-> idnsSOAMName
forward
-> idnsForwardPolicy
forwarders
-> idnsForwarders
At the same time, named.conf
needs to be updated to contain
server_id
option equal to FreeIPA server’s FQDN without trailing
period (for consistency with names used in cn=masters
).
Easy to follow instructions how to test the new feature. FreeIPA user needs to be able to follow the steps and demonstrate the new features.
Test scenarios that will be transformed to test cases for FreeIPA Continuous Integration during implementation or review phase. This can be also link to source in git with the test, if appropriate.