Lewati ke konten
Client Panel

Server Deployment

Konten ini belum tersedia dalam bahasa Anda.

Artikel ini belum diterjemahkan. Isi berikut berbahasa Inggris. Buka versi asli bahasa Inggris.

This guide walks through installing and configuring a FreeIPA server on Rocky Linux 9.x. The setup includes the integrated DNS server, which is strongly recommended for service discovery.

For this guide, we use the following reference setup:

HostnameIPRoleOS
ipa-server.example.internal192.168.100.128FreeIPA Server (DNS, Kerberos, LDAP)Rocky Linux 9.x
client-1.example.internal192.168.100.129Client (joined to domain)Rocky Linux 9.x
client-2.example.internal192.168.100.130Client (joined to domain)Rocky Linux 9.x

Run these checks on the server before starting the installation:

Terminal window
# 1. Time synchronization (Kerberos requires < 5 min drift)
timedatectl status
# 2. Network connectivity
ping 192.168.100.128
# 3. Hostname must be a proper FQDN
hostname -f
# 4. No DNS conflicts
getent hosts ipa-server.example.internal

Why these matter:

  • Kerberos uses timestamps to prevent replay attacks, time drift causes auth failures
  • FreeIPA relies on DNS for service discovery, network/DNS issues are the most common deployment failure
  • FQDN must be correct, otherwise Kerberos tickets and certificates will fail validation
Terminal window
hostnamectl set-hostname ipa-server.example.internal

Verify:

Terminal window
hostname -f
# Must output: ipa-server.example.internal
Terminal window
cat >> /etc/hosts << 'EOF'
192.168.100.128 ipa-server.example.internal ipa-server
EOF
Terminal window
dnf update -y
dnf install -y ipa-server ipa-server-dns
PackagePurpose
ipa-serverFreeIPA core services
ipa-server-dnsIntegrated DNS server (strongly recommended)

Expected size: ~500 MB of packages, depending on what is already installed.

If you skip ipa-server-dns, you must configure external DNS manually, including SRV records for service discovery.

Terminal window
ipa-server-install --unattended \
--setup-dns \
--hostname=ipa-server.example.internal \
--ip-address=192.168.100.128 \
--domain=example.internal \
--realm=EXAMPLE.INTERNAL \
--ds-password='YourDS_P@55w0rd' \
--admin-password='YourAdmin_P@55w0rd' \
--forwarder=192.168.100.2 \
--forward-policy=only \
--auto-reverse \
--no-dnssec-validation \
--netbios-name=EXAMPLE \
--mkhomedir \
--ntp-server=pool.ntp.org
ParameterMeaningWhy
--setup-dnsConfigure integrated DNSFreeIPA auto-manages DNS records
--hostnameServer FQDNMust match hostnamectl output
--ip-addressServer IPBasis for forward/reverse DNS records
--domainDNS domain (lowercase)LDAP DN suffix, user email domain
--realmKerberos realm (uppercase)Typically DOMAIN in uppercase
--ds-passwordDirectory Server passwordLDAP backend root DN password
--admin-passwordAdmin user passwordWeb UI and CLI admin credentials
--forwarderUpstream DNS serverHandles queries outside the FreeIPA domain
--forward-policy=onlyDNS forward policyOnly forward non-local queries, avoid loops
--auto-reverseAuto-configure reverse DNSCreates PTR records (IP to hostname)
--no-dnssec-validationDisable DNSSECReduces complexity (enable in production)
--mkhomedirAuto-create home dirsCreates /home/<user> on first login
--ntp-serverNTP sourceSynchronizes system time (critical for Kerberos)

Runtime: 5 to 15 minutes, depending on network and disk speed.

Terminal window
ipactl status

Successful output looks like this:

Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
pki-tomcatd Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful
ServiceRole
Directory ServiceLDAP directory database
krb5kdcKerberos ticket-granting service
namedDNS service
httpdWeb UI at https://ipa-server.example.internal
pki-tomcatdCertificate authority
ipa-otpdOne-time password daemon

Open all required FreeIPA ports:

Terminal window
firewall-cmd --permanent --add-service={freeipa-ldap,freeipa-ldaps,kerberos,kpasswd,dns,http,https,ntp}
firewall-cmd --reload
# Verify
firewall-cmd --list-services
PortProtocolServicePurpose
53UDP/TCPDNSName resolution and service discovery
88UDP/TCPKerberosTicket issuance
389TCPLDAPDirectory queries
443TCPHTTPSWeb UI, LDAPS
464UDP/TCPKpasswdPassword changes
123UDPNTPTime synchronization

Adapted from Dawn’s Blog : FreeIPA Complete Deployment Guide.