☰
FreeIPA 服务端搭建:身份管理规划、安装与排错
2026/9/30 1:13:45 网站建设 项目流程

1. FreeIPA 到底是个什么东西,值不值得上手

第一次听到 FreeIPA 这个名字,很多人会以为它是某个小工具,实际上它是一整套身份管理基础设施的集合体。全称是 Identity, Policy, Audit(身份、策略、审计),由红帽主导开发,底层把 389 Directory Server、MIT Kerberos、Dogtag 证书系统、BIND DNS、SSSD、chrony 这些各自独立就很能打的组件,封装成了一条命令就能跑起来的整体方案。你要的集中登录、统一授权、主机证书签发、内网域名解析、操作审计,它基本都覆盖了。

这篇搭建教程(一)主要解决的是从零到"服务端能跑起来并且自检通过"这一段,也就是环境规划、系统准备、服务端安装和安装期排错。适合正在给中小规模内网做统一认证的运维、需要搭建实验环境练手的学生、以及被一堆机器上重复维护/etc/passwd折磨过的开发同学。服务端装完之后,客户端纳管、HBAC 规则、sudo 集中管理、副本复制、跨域信任这些内容体量很大,我放到后续的教程(二)(三)里慢慢拆。

需要先打个预防针:FreeIPA 的安装脚本本身容错性不算高,它会在开始时严格校验主机名解析、时间同步、域名合法性,任何一项不满足就直接中止,而且中止后往往留下一堆半成品配置,清理不干净会让下一次安装莫名其妙失败。所以这篇的重点不只是"敲哪条命令",更是"敲之前把哪些东西先定死"。

1.1 拆开看它的几个核心组件各自干什么

理解组件的分工,出问题的时候才能快速定位到底该看哪个日志。我习惯把它拆成这么几层:

  • 389 Directory Server(389-ds):真正的数据存储层,用户、用户组、主机、服务、策略规则全存在这里,对外提供 LDAP/LDAPS 服务,默认端口 389 和 636。它相当于整个系统的"数据库",进不去 LDAP 就等于什么都查不到。
  • MIT Kerberos KDC:负责认证,也就是你执行kinit admin时背后真正在干活的角色。它签发票据(TGT),SSSD 客户端拿着票据去访问服务。端口 88(认证)和 464(改密码)。
  • Dogtag Certificate System:内部的 CA,给每个加入域的主机签发证书,LDAPS、HTTPS、Kerberos 之间的服务认证都依赖它。IPA 的 CA 是用自签名根证书起步的,后续可以换成外部 CA 签发。
  • BIND + bind-dyndb-ldap 插件:DNS 服务。这个插件做的事很有意思,它让 BIND 直接以 LDAP 为后端读取区域数据,也就是说你在 IPA 里改一条 DNS 记录,不需要去碰 zone 文件,也不需要 reload,立刻生效。
  • SSSD:不是服务端组件,而是装在客户端上负责和 IPA 通信、缓存凭证、做离线认证的守护进程。服务端装好之后,客户端能不能顺利加入,一半看 SSSD 的配置。
  • chrony:时间同步。Kerberos 对时间偏差极其敏感,默认容忍 5 分钟,超了就直接拒绝认证。

这六个东西绑在一块儿,优点是开箱即用、互相之间已经调好;缺点是一处配置不对,报错信息可能来自完全想不到的模块。比如登录失败可能是 DNS 解析问题,也可能是时间偏差,还可能是证书过期。

1.2 和其它几种身份管理方案的横向对比

选型的时候我一般会给团队摆这么一张表,把决策依据讲清楚,而不是因为"FreeIPA 听起来很专业"就上:

方案部署复杂度功能覆盖适用规模主要痛点
FreeIPA中,一条脚本搞定但前置校验严认证+授权+DNS+证书+审计全覆盖10~几千台组件耦合紧,排错要懂多个子系统
裸 OpenLDAP高,全靠手工拼只有目录存储任意认证授权要自己配 Kerberos、SSSD,工作量大
微软 AD中,图形化程度高认证+授权+GPO+DNS+证书中大型企业许可成本、跨平台集成偶有摩擦
NIS + 手搓 Kerberos极高基础认证遗留小环境技术老旧、文档稀缺、坑深

从这张表能看出 FreeIPA 的定位:它在"功能完整"和"部署成本"之间找了个不错的平衡点。如果你的环境是纯 Linux,又不打算买 Windows Server 授权,FreeIPA 基本是最省心的选择。要是环境里已经有 AD 而且规模不大,硬换 FreeIPA 反而折腾,直接用信任关系打通更划算——这也是为什么"FreeIPA 与 AD 建立信任"这种做法在企业里很常见:Linux 侧的机器归 IPA 管,员工账号还是走 AD,两边通过跨域信任互认票据,不用做账号同步,人员离职时在 AD 禁用一次就够了。

1.3 哪些场景适合,哪些场景别硬上

适合上的场景我列几个具体的:

  1. 内网有几十台到几百台 Linux 服务器,密码策略、sudo 权限、SSH 公钥分散在各台机器上,改一次要登几十台。
  2. 需要给内网服务签发证书,又不想花钱买公网 CA,也不想手工维护自签证书链。
  3. 有合规要求,需要记录谁在什么时候登录了哪台机器、执行了什么操作。
  4. 内网需要一套自己的 DNS,而且希望 DNS 记录和主机账号生命周期绑定。

不太建议硬上的场景也说清楚:只有三五台机器的小环境,用 Ansible 批量推一下 SSH key 和 sudoers 文件,成本比维护一套 IPA 低得多;跨公网、机器分布在多个不可靠网络的环境,Kerberos 和多端口的通信要求会带来很大麻烦;团队里没人愿意花时间理解 Kerberos 和 LDAP 的话,后面出问题只能干瞪眼。

注意:FreeIPA 不是"装完就不用管"的东西。Kerberos 票据、CA 证书都有有效期,副本之间还有复制协议要维护,至少要有一个人能看懂相关日志。

2. 动手之前的规划:三件必须先定死的事

我见过太多人上来就dnf install ipa-server,结果卡在安装脚本的第一步,然后反复卸载重装,越装越乱。安装前的规划没做好,后面补的成本是几何级增长的。这一节把域名、网络端口、时间同步这三件事讲透。

2.1 域名与 Kerberos Realm 的命名规则

这里有一个关键概念要分清:DNS 域名和Kerberos Realm是两个东西,但通常一个是另一个的大写形式。比如 DNS 域名定了example.lan,那 Realm 一般就是EXAMPLE.LAN。

命名有硬性约束,违反了安装脚本直接拒绝:

  • Realm 必须全大写,习惯上就是域名的大写形式,比如CORP.EXAMPLE.COM。
  • 域名不能是单段,必须是至少两段,example这样的不行,脚本会报 "domain name is not valid"。
  • 域名不要和你的公网域名撞车。假设你公司的官网是example.com,内网千万别直接用example.com,否则客户端解析www.example.com时会被内网 DNS 抢答,导致访问官网失败。稳妥做法是用子域,比如id.example.com,或者干脆用保留后缀,像example.lan、corp.internal。

我个人的建议:如果公司有正式域名,用三层子域id.公司域名;如果没有,就用xxx.lan这种明显不会和公网冲突的后缀。internal这个后缀曾经被 ICANN 建议保留,后来正式分配给了某个商业机构,所以我不太推荐新手用,容易踩坑。

还有一点容易被忽略:域名一旦确定,后期修改成本极高。它写进了 Kerberos 的 realm 名、LDAP 的 suffix(dc=example,dc=lan)、证书的 SAN、DNS 区域、SRV 记录,几乎散落在所有配置文件里。改域名基本等于重建。所以这一步一定要和团队确认好,最好写进部署文档。

2.2 网络、端口与 DNS 记录规划

FreeIPA 用到的端口比一般人想象的多。如果内网有严格的防火墙策略,提前把这些端口摸清楚能省掉大量排错时间。我按用途整理一张表:

端口协议用途是否必须
53TCP/UDPDNS 查询与区域传输使用内置 DNS 时必需
80TCPHTTP,主要用于证书和跳转必需
443TCPHTTPS,Web 管理界面和 API必需
88TCP/UDPKerberos 认证必需
464TCP/UDPKerberos 改密必需
389TCP/UDPLDAP必需
636TCPLDAPS 加密目录访问必需
749TCPKerberos 管理(kadmin)服务端间管理需要
123UDPNTP 时间同步使用 IPA 管理时间时需要
8080TCPDogtag CA 的 HTTP 接口CA 相关操作需要
8443TCPDogtag CA 的 HTTPS 接口CA 相关操作需要

DNS 记录这块,如果打算用 IPA 内置的 DNS,理论上不需要手工建反向区域之外的任何记录,因为安装脚本会自动创建。但如果你要在安装前手工验证解析,至少得保证两条记录存在:

  1. 正向:ipa.example.lan解析到服务器的内网 IP,比如192.168.10.10。
  2. 反向:该 IP 反解回ipa.example.lan,即10.10.168.192.in-addr.arpa的 PTR 记录。

反向解析为什么重要?因为安装脚本和很多 Kerberos 工具会做正反解一致性校验。如果你只做了正向没做反向,脚本可能报 "Unable to resolve hostname" 或者更隐晦的 "Reverse resolvable check failed"。我见过有人在这一步卡了一下午,最后发现只是 PTR 记录没建。

另外,内置 DNS 还需要一个上游转发器(forwarder)。这个转发器的选择有讲究:要用内网能稳定访问的公共解析服务或者自建的上级 DNS,不要填一个需要额外网络环境才能到达的地址,否则安装时 DNS 校验会超时。测试方法很简单,装之前先跑dig @转发器地址 www.example.com,能返回结果就行。

提示:如果内网已经有成熟的 DNS 体系,也可以在安装时加--no-dns不用 IPA 的 DNS,转而把所有 SRV 和 A 记录手工加到现有 DNS 里。但这样做会失去"改 DNS 自动生效"的便利,SRV 记录一旦写错,客户端加入时会报找不到 KDC。新手我建议先用内置 DNS,把流程跑通再说。

2.3 时间同步:看起来最不起眼,翻车最常见

Kerberos 的设计原理决定了它对时间极其敏感:票据上带时间戳,如果客户端和 KDC 的时间差超过默认的 5 分钟(clockskew),认证会直接被拒,报错信息通常是 "Clock skew too great"。

所以在装 IPA 之前,先确认这台机器的时间同步是正常的。做法:

dnf install -y chrony systemctl enable --now chronyd chronyc sources -v chronyc tracking

chronyc tracking输出里的System time那一行如果显示偏差在毫秒级、Leap status是Normal,就说明没问题。如果发现偏差很大,先别急着装 IPA,等它同步稳定几分钟再动。

安装 FreeIPA 时有两种时间管理方式,要提前想清楚:

  • 让 IPA 自己管时间(默认行为):脚本会配置 chronyd,并把它作为内网的时间源,客户端加入时会指向 IPA 服务器同步时间。这种方式适合内网没有统一时间源的情况。
  • 用手工加--no-ntp:IPA 完全不碰 chrony 配置,时间由你现有的 NTP 基础设施负责。如果内网已经有统一时间源,我强烈建议用这个参数,避免 IPA 把已有的 chrony 配置覆盖掉。

一个真实的坑:有人用云上的实例搭 IPA,云厂商自带的 chrony 配置里已经指向了内网时间服务,安装脚本默认又加了一个外部源,结果两个源互相打架,机器时间来回跳,Kerberos 认证时好时坏。后来加--no-ntp才彻底稳住。

3. 把裸机收拾成可安装状态

规划定完了,接下来是把一台裸机收拾到"安装脚本能顺利跑通"的状态。这一步看着琐碎,但每一项都有它存在的理由。

3.1 操作系统选型与最小化安装

FreeIPA 的官方支持列表里,红帽系(RHEL、Rocky Linux、AlmaLinux)是第一梯队,包管理用 dnf,安装最顺;Fedora 版本新但更新快,适合练手;Debian 和 Ubuntu 也有打包,但版本往往落后一两年,某些新特性对不上。如果是生产环境,我建议用 Rocky Linux 9 或 AlmaLinux 9 这类和 RHEL 9 完全兼容的发行版,文档和社区经验都能直接套用。

安装系统时选"最小化安装"(Minimal Install)就够了,不要装带图形界面的版本,多出来的服务会占用端口。特别注意:如果你在安装系统时顺手勾了"Web 服务器"之类的软件组,httpd 会开机自启并占住 80 和 443 端口,IPA 安装脚本会直接报端口冲突。我之前就遇到过一次,排查半天才发现是系统自带的 httpd 在跑。

系统装完先更新一遍:

dnf update -y reboot

更新完重启是必要的,内核和 glibc 更新后不重启,后续安装可能遇到奇怪的库版本问题。

3.2 主机名、hosts 与网络配置

主机名必须是完整限定域名(FQDN),不能是短名。这一点很多教程会一笔带过,但实测这是安装失败排名前三的原因。

# 查看当前主机名 hostnamectl status # 设置成 FQDN,注意和后面安装参数保持一致 hostnamectl set-hostname ipa.example.lan

设置完重新登录一下,让 shell 环境刷新,再确认:

hostname -f # 期望输出:ipa.example.lan

如果hostname -f输出的是短名,说明解析没配好。接着编辑/etc/hosts,加上静态映射:

cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.10 ipa.example.lan ipa

这里有一个细节值得说明:为什么要在/etc/hosts里加这一行,明明打算用 DNS?因为安装过程中 DNS 服务本身还没起来,脚本需要靠本地文件完成自解析。加这一行能让前期的正反解校验顺利通过。等 IPA 的 DNS 跑起来之后,这条记录和 DNS 里的记录是一致的,不会冲突。

顺手把网卡配置也确认一下,IP 建议用静态地址,别用 DHCP。原因很简单:如果 IP 变了,DNS 记录、证书 SAN、客户端的配置全都要改,血亏。

ip -4 addr show ip route show

3.3 SELinux、防火墙与依赖包

SELinux 这块网上有不少"先setenforce 0关掉再说"的建议,我不推荐。FreeIPA 自带完整的 SELinux 策略模块,在 enforcing 模式下是能正常工作的,关掉反而会丢失一层安全防护。正确的做法是保持 enforcing,只在你确认某个报错和 SELinux 有关时,临时切到 permissive 抓一下审计日志:

# 查看当前状态 getenforce # 排障时临时切 permissive(重启失效,不改配置文件) setenforce 0 # 抓完日志记得切回去 setenforce 1 # 看有没有被 SELinux 拦 ausearch -m avc -ts recent

防火墙方面,firewalld 提供了现成的服务定义,一条命令就能放行 IPA 需要的端口:

# 方式一:用预定义服务(推荐) firewall-cmd --permanent --add-service=freeipa-ldap firewall-cmd --permanent --add-service=freeipa-ldaps firewall-cmd --permanent --add-service=freeipa-trust firewall-cmd --permanent --add-service=dns firewall-cmd --permanent --add-service=ntp firewall-cmd --permanent --add-service=kerberos firewall-cmd --permanent --add-service=kpasswd firewall-cmd --reload # 查看生效的规则 firewall-cmd --list-all

有些老版本 firewalld 没有freeipa-4这个服务定义,那就退化成逐端口放行:

firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,389/udp,636/tcp,88/tcp,88/udp,464/tcp,464/udp,53/tcp,53/udp,123/udp,749/tcp} firewall-cmd --reload

如果内网是纯实验环境、暂时不考虑安全边界,也可以先systemctl stop firewalld && systemctl disable firewalld,但这句话只适合试验机,生产别这么干。

最后装依赖包。服务端和内置 DNS 需要的包:

dnf install -y ipa-server ipa-server-dns bind-dyndb-ldap

注意:ipa-server-dns和bind-dyndb-ldap这两个包在有些发行版的默认仓库里是非默认安装的,不装的话,安装脚本加--setup-dns时会报找不到 DNS 组件。这一步先装好,能省掉一次失败重装。

4. 跑起 ipa-server-install:参数逐个拆

环境收拾干净,就到了关键的安装环节。ipa-server-install这个命令的交互流程不算长,但每一步的选择都会影响后续使用,我建议第一次先用交互模式把流程走一遍,理解每个问题的含义,之后再改成静默安装方便批量复现。

4.1 交互式安装流程走一遍

直接执行:

ipa-server-install

脚本会先做一轮前置检查,然后逐个提问。典型的交互过程长这样(我加了中文注释说明每个问题的意图):

The log file for this installation can be found in /var/log/ipaserver-install.log This program will set up the IPA Server. Do you want to configure integrated DNS (BIND)? [no]: yes # 是否启用内置 DNS。内网没有现成 DNS 体系就选 yes Enter the fully qualified domain name of the computer on which you're setting up server software. Using the form <hostname>.<domainname> Example: master.example.com. Server host name [ipa.example.lan]: # 服务器 FQDN,直接回车用默认值,前提是 hostname 已设对 Warning: Hostname ipa.example.lan does not match any of the system's IP addresses... Do you want to use it? [no]: yes Enter the domain name of the computer Example: master.example.com. DNS domain name [example.lan]: # DNS 域名,决定了 LDAP 的 dc 后缀 Enter the Kerberos realm name. This is usually the domain name in uppercase. Kerberos realm name [EXAMPLE.LAN]: # Realm 名,一般用域名大写 Enter the password of the Directory Server superuser. # Directory Manager 密码,也就是目录的管理员,非常重要 Directory Manager password: Confirm: Enter the password of the IPA admin user. # IPA admin 密码,日常管理用这个账号 IPA admin password: Confirm: Do you want to configure DNS forwarders? [yes]: yes Enter the IP address of the DNS forwarder: 223.5.5.5 # 上游 DNS,装之前测过能通就行 Do you want to search for missing reverse zones? [yes]: yes # 是否自动创建反向区域,建议 yes The IPA Master Server will be configured with: Hostname: ipa.example.lan IP address(es): 192.168.10.10 Domain name: example.lan Realm name: EXAMPLE.LAN Continue to configure the system with these values? [no]: yes

确认之后脚本开始正式安装,会依次配置 LDAP、Kerberos、CA、DNS、Web 服务,中间会启动重启若干次服务。整个过程视机器性能,通常 5 到 15 分钟。期间不要开另一个终端去手动启停相关服务,会干扰脚本判断。

4.2 静默安装参数详解

跑通一遍之后,生产部署就该用静默模式了,方便写进自动化脚本。对应的命令:

ipa-server-install \ --realm=EXAMPLE.LAN \ --domain=example.lan \ --hostname=ipa.example.lan \ --ip-address=192.168.10.10 \ --ds-password='DsPassw0rd!2024' \ --admin-password='AdminPassw0rd!2024' \ --setup-dns \ --forwarder=223.5.5.5 \ --forward-policy=only \ --no-ntp \ --mkhomedir \ --unattended

逐条说清楚,这些参数都不是随便加的:

  • --realm和--domain:前面规划好的值,大写 Realm 加小写域名。
  • --hostname:FQDN,必须和hostname -f输出一致。
  • --ip-address:当机器有多块网卡或者多个 IP 时,用这个参数明确指定 IPA 监听和注册的地址。不指定的话脚本可能选错,导致后来客户端连不上。
  • --ds-password:Directory Manager 密码,至少 8 位,建议混大小写数字符号。
  • --admin-password:IPA admin 密码,同样是 8 位起。
  • --setup-dns:启用内置 DNS。
  • --forwarder:上游 DNS 地址,可以写多个--forwarder=。
  • --forward-policy:only表示所有非本地区的查询都转发给上游,不做递归查询;first表示先尝试自己递归,失败再转发。内网环境用only更规范。
  • --no-ntp:不接管 chrony,时间交给现有的时间同步体系。
  • --mkhomedir:让后续加入的客户端在用户首次登录时自动创建家目录,省得每台机器手工建。
  • --unattended:全静默,不交互。

密码别直接写在命令里,那样会进 shell 历史。生产环境可以用文件方式:

# 权限设成 600,用完就删 echo 'DsPassw0rd!2024' > /root/.ds_pw && chmod 600 /root/.ds_pw ipa-server-install --ds-password="$(cat /root/.ds_pw)" ... --unattended

提示:如果反悔了想重来,卸载用ipa-server-install --uninstall,然后rm -rf /var/lib/dirsrv/slapd-EXAMPLE-LAN /etc/dirsrv/slapd-EXAMPLE-LAN /var/lib/pki/pki-tomcat把残留清掉,再重启机器。不清残留直接重装,很可能在 CA 初始化那一步报证书已存在的错。

4.3 安装后自检:五条命令确认服务真的活着

安装脚本最后打印 "The ipa-server-install command was successful" 不代表万事大吉,必须做一轮自检:

# 1. 拿一张 admin 票据,验证 Kerberos 正常 kinit admin klist # 2. 列出用户,验证 LDAP 正常 ipa user-find --all # 3. 查看全局配置,验证 API 正常 ipa config-show # 4. 检查 DNS 解析,验证内置 DNS 正常 dig @127.0.0.1 ipa.example.lan A dig @127.0.0.1 192.168.10.10 -x # 5. 检查所有核心服务单元 systemctl list-units --type=service | grep -E 'ipa|named|krb5kdc|pki|dirsrv'

第 1 条如果成功,说明 LDAP、Kerberos、CA 三者之间的联动是通的。第 4 条的正反解都返回正确结果,说明 DNS 配好了。第 5 条里这些服务单元应该都是active (running),重点看ipa.service、named.service、krb5kdc.service、pki-tomcatd@pki-tomcat.service、dirsrv@EXAMPLE-LAN.service。

还可以跑一下健康检查工具(新版本才有):

ipa-healthcheck --output-type human

它会把 DNS、证书、复制、信任等各个维度的状态汇总输出,有问题会标ERROR或WARNING,非常适合装完做一次全面体检。

5. 安装期常见问题与排查实录

安装脚本报错信息往往比较笼统,只说"失败并回滚",具体原因得去日志里翻。这一节把我实际遇到过、也帮别人解决过的问题整理出来。

5.1 报错速查表

先给一张快速对照表,遇到问题可以按症状对号入座:

报错关键字可能原因处理方向
Unable to resolve hostnameFQDN 解析不到检查/etc/hosts和 DNS 的正反解
Reverse resolvable check failed缺 PTR 记录补反向区域或加 hosts 映射
domain name is not valid域名只有一段改成两段以上,如 example.lan
realm name must be uppercaseRealm 用了小写改成全大写
Clock skew too great时间偏差超 5 分钟先修好 chrony 再装
Port 80 already in usehttpd 等占用端口停掉占端口的服务再装
IPA server is already configured有残留配置先--uninstall再清残留
DNS server could not be startednamed 启动失败看/var/log/messages里 named 的报错
CA failed to start证书服务初始化失败看/var/log/pki/pki-tomcat/ca/debug

主日志的位置要记住,出问题第一个看它:

tail -n 200 /var/log/ipaserver-install.log

里面通常会有比终端输出详细得多的原因说明。

5.2 DNS 反向解析与转发器相关的经典坑

我印象最深的一次,是安装时一直卡在 DNS 配置那一步,报错说 DNS 服务启动失败。翻了journalctl -u named才发现,是上游转发器的地址填错了,BIND 启动时做了一次探测,连不上就起不来。所以装之前一定要用dig @转发器地址验证一次连通性,别凭记忆填地址。

另一个高频坑是反向区域的问题。假设你服务器的 IP 是192.168.10.10,反向区域应该是10.168.192.in-addr.arpa,注意 IP 段是倒序的。安装脚本在--setup-dns时会问你要不要自动创建反向区域,选 yes 的话它会自己建好并加 PTR。但如果你的 IP 段不是标准的 /24,比如是192.168.10.0/25,自动创建有时会判断失误,需要手工加:

# 手工创建反向区域 ipa dnszone-add 10.168.192.in-addr.arpa. # 手工加 PTR 记录 ipa dnsrecord-add 10.168.192.in-addr.arpa. 10 --ptr-rec=ipa.example.lan.

验证反向解析:

dig @127.0.0.1 -x 192.168.10.10 +short # 期望输出 ipa.example.lan.

如果这一步一直失败,可以在安装时加--no-reverse暂时跳过反向区域创建,先把服务跑起来,之后手工补。这算是一个务实的折中方案。

5.3 我踩过之后总结的几条经验

第一,安装失败后千万别反复重试。脚本每次失败都可能留下部分配置,第二次跑的时候它检测到/etc/dirsrv/slapd-EXAMPLE-LAN已存在,行为就不确定了。正确顺序是:ipa-server-install --uninstall→ 手工删残留目录 → 重启机器 → 再装。

第二,把安装日志留好。每次装之前cp /var/log/ipaserver-install.log /root/install-$(date +%s).log,出问题的时候能对比两次的差异,比对着终端刷屏的输出来回翻要高效得多。

第三,先把主机名和解析搞定,再装任何东西。我在帮人排障时发现,一半以上的安装失败可以归结为"主机名和解析不对"。装之前跑三条命令做个体检:

hostname -f # 必须输出 FQDN getent hosts $(hostname -f) # 必须解析到正确的 IP dig +short -x $(hostname -I | awk '{print $1}') # 反解最好也能出结果

第四,密码复杂度和位数要一次到位。脚本对密码有长度要求,如果第一次输入太短被拒,后面的交互会重新走一遍,比较烦。直接准备一个 12 位以上、大小写数字符号齐全的密码,一次性通过。

第五,别在有多块网卡的机器上想当然。那台机器的默认路由网卡不一定是 IPA 要监听的网卡,务必用--ip-address明确指定。装完之后ip a里出现一个奇奇怪怪的ipa或者 tun 之类的接口是正常的,那是 IPA 的虚拟接口,别去删。

我个人的体会是,FreeIPA 这套东西的难度不在安装本身,而在安装前的规划和安装后的排错。只要把域名、时间、解析这三件事提前定死,脚本其实很顺;反过来,任何一项含糊过去,后面都会以各种意想不到的方式还回来。服务端跑起来只是第一步,接下来把第一台客户端纳入管理、验证登录和 sudo 规则是否生效,才能真正确认这套东西在你的环境里是可用的,这部分留到教程(二)里继续拆。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询