MultipleTrustServers#
__NOTOC__
Overview#
Ticket #2189;
Each FreeIPA server in the realm has potential to serve as domain controller in the cross-forest realm trust. This page outlines design for implementing multiple servers support in FreeIPA.
Use Cases#
Once ipa-adtrust-install ran on the FreeIPA server, the server can
handle requests from trusted domains by means of Samba project’s
smbd and winbindd daemons.
Hosts in FreeIPA realm may be enrolled against specific FreeIPA replica
server. User from trusted domain can access these hosts and their
identities will be resolved against the replica. However, if replica
server does not have trust support configured, these identities will not
be processed since running winbindd process is required to contact
the trusted domain’s domain controllers and Global Catalog servers.
Domain controllers are advertised to clients via SRV records in DNS. Since replica servers may be arranged in a specific topology, adding new domain controller would need to respect the topology design. It means priority/weight of the domain controller compared to other domain controllers should be adjustable. Prime use case for this is branch office deployments.
Design#
Each domain controller uses separate identity and service key to talk to FreeIPA LDAP server. The identity is tied to the server hostname.
Service principal is
cifs/hostname@REALM, identified in LDAP askrbprincipalname=cifs/hostname@REALM.All identities are members of
cn=adtrust agents,cn=sysaccounts,cn=etc,$SUFFIX. Thus, all replica servers can see what other servers are providing domain controller service.Replica server only becomes domain controller when
ipa-adtrust-installutility was executed on it. It means all DC setup is delivered via theipa-adtrust-install.ipa-adtrust-installshould be able to detect other DCs by looking at existing identities as members of thecn=adtrust agents,cn=sysaccounts,cn=etc,$SUFFIXtree and modify list of SRV records under_msdcsand default site configuration if DNS is controlled by FreeIPA.Domain Controller priority/weight can be modified at run time since it only affects SRV records in the DNS (if FreeIPA controls the DNS). Normal
ipa dnsrecord-modcommands should be used for this purpose, operating on SRV records for_msdcsand default site configuration.There are trust properties that are global for the realm. Some of them are modifiable, some not. Thus,
ipa trustconfig-showandipa trustconfig-modshould reflect both global and local settings (realm-wise and DC-wise).Following properties of the trust are global for the realm:
NetBIOS domain name (read-only, affects existing trusts)
Domain name (read-only, affects existing trusts)
Domain GUID (read-only, informational)
Additional domain suffixes exposed to the trusted party, handled as black list against global list of additional domains associated with our or transitive realm, read/write
Fallback primary group (read-write)
Following properties of the trust are per Domain Controller:
priority of the DC and GC services (read-write, DNS SRV record)
Details on ipa trustconfig commands design are available at
http://www.freeipa.org/page/V3/Trust_config_command Details on
additional domain suffixes handling are available at
http://www.freeipa.org/page/V3/Domain_suffixes
Implementation#
Implementation-wise there are three parts:
ipa-adtrust-install:Gather list of CIFS services that are also members of
cn=adtrust agentsand add SRV records for them to _msdcs in ipaserver/install/adtrustinstance.py:ADTrustInstance::__add_dns_service_records().Once Global Catalog Server implementation will be ready, configure its use as one of
ADTrustInstancesetup steps.
IPA framework:Add display and modification of trust properties as
ipa trustconfig-*commands, including listing DC and GC servers.NOTE: there is no need to modify trust creation procedure since it appears that AD DC assumes LSA CreateTrustedDomainEx2 call comes from the DC (in Windows the UI to establish trust is only on DC) and therefore does not do DNS discovery during validation step. Since smbd running on the same host that ‘ipa trust-add’ runs on will contact the same host’s LDAP server, there is no issue in replication at this stage.
IPA Web UIAdd support for
ipa trustconfig-*to Web UI.
Major configuration options and enablement#
No additional options to ipa-adtrust-install
Replication#
All data is already in a replicated namespace.
Updates and Upgrades#
No changes to schema, no need to run anything additional on updates or upgrades
Dependencies#
No additional dependencies beyond AD trusts support
External Impact#
Once ipa-adtrust-install install ran on replica, the replica will be
advertised via _msdcs SRV namespace as a domain controller.