02 — 环境准备与网络规划
2.1 前置条件总览
FreeIPA 对部署环境有严格的要求,在动手之前必须逐一确认:
| 要求 | 说明 |
|---|---|
| 操作系统 | RHEL 8+/AlmaLinux/Rocky Linux/CentOS Stream/Fedora(使用 Docker 可跨平台) |
| 内存 | 最少 2GB(Docker 部署建议 4GB+) |
| CPU | 1 核即可,2 核更佳 |
| 磁盘 | 10GB+(用户数据主要占 LDAP 数据库空间) |
| 固定 IP | 必须有固定 IP,不能是 DHCP 动态分配 |
| 完整主机名(FQDN) | 必须是全限定域名,如 ipa-local.thinkmeta.site |
| DNS 正向/反向解析 | 主机名必须能被正确解析 |
| 时间同步 | Kerberos 要求时钟偏差 < 5 分钟 |
| 端口可达 | 多个端口需要开放(见下方端口表) |
2.2 域名规划
域名选择原则
- 使用你拥有的域名(公网域名或内网自定义域名)
- Realm 名 = 域名的大写形式
- 建议使用专门的内网子域名,避免与公网服务冲突
本教程环境规划
域名(Domain): thinkmeta.site
Realm(领域): THINKMETA.SITE
命名约定
| 主机类型 | 主机名格式 | 示例 |
|---|---|---|
| FreeIPA 服务器 | ipa-<环境>.thinkmeta.site | ipa-local.thinkmeta.site |
| 开发服务器 | dev<N>.thinkmeta.site | dev.thinkmeta.site |
| 运维服务器 | ops<N>.thinkmeta.site | ops01.thinkmeta.site |
| 数据库服务器 | db<N>.thinkmeta.site | db01.thinkmeta.site |
2.3 IP 地址规划
FreeIPA 服务器: 192.168.3.90
子网掩码: 255.255.255.0
网关: 192.168.3.1
客户端 IP 范围: 192.168.3.100 - 192.168.3.200
2.4 端口需求
FreeIPA 需要开放以下端口,确保防火墙不会拦截:
┌───────┬──────────┬──────────────────────────────┐
│ 端口 │ 协议 │ 服务 │
├───────┼──────────┼──────────────────────────────┤
│ 53 │ TCP/UDP │ DNS (BIND) │
│ 80 │ TCP │ HTTP(重定向到 443) │
│ 443 │ TCP │ HTTPS (Web UI + API) │
│ 389 │ TCP │ LDAP │
│ 636 │ TCP │ LDAPS (LDAP over SSL) │
│ 88 │ TCP/UDP │ Kerberos 认证 │
│ 464 │ TCP/UDP │ Kerberos 密码修改 │
│ 123 │ UDP │ NTP 时间同步 │
└───────┴──────────┴──────────────────────────────┘
注意:DNS 端口(53)特别重要,它是客户端发现 FreeIPA 服务的关键途径。
检查端口是否被占用
# 在 FreeIPA 服务器上执行
sudo netstat -tlnp | grep -E ':(53|80|443|389|636|88|464)'
# 或使用 ss
sudo ss -tlnp | grep -E ':(53|80|443|389|636|88|464)'Docker 部署时,如果宿主机已运行 systemd-resolved(Ubuntu 默认),它可能占用 53 端口。需要先停掉:
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved
2.5 Docker 环境准备
本教程使用 Docker 部署 FreeIPA 服务器。
安装 Docker(Ubuntu 26.04)
# 安装 Docker
sudo apt update
sudo apt install -y docker.io
# 启动 Docker 并设置开机自启
sudo systemctl enable --now docker
# 将当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
# 重新登录后生效验证 Docker
docker --version
docker run hello-world2.6 时间同步配置
Kerberos 要求所有节点时钟偏差不超过 5 分钟,否则认证会失败。
服务器端(FreeIPA 宿主机)
# 查看当前时间状态
timedatectl status
# 启用 NTP 时间同步(Ubuntu 使用 systemd-timesyncd)
sudo timedatectl set-ntp true
# 查看同步状态
timedatectl timesync-status客户端
# 确保时间同步开启
sudo timedatectl set-ntp true
timedatectl statusDocker 容器内不使用 NTP,而是与宿主机共享时钟。在运行容器时,FreeIPA 使用了
--no-ntp参数,依赖宿主机的时钟。
2.7 DNS 规划详解
DNS 在整个体系中的角色
客户端想登录 → 问 DNS:"Kerberos 服务器在哪?"
→ DNS 返回:"ipa-local.thinkmeta.site (192.168.3.90)"
→ 客户端去 192.168.3.90:88 做 Kerberos 认证
FreeIPA 内置的 BIND DNS 会自动创建以下关键 SRV 记录:
_kerberos._tcp.thinkmeta.site → ipa-local.thinkmeta.site:88
_kerberos._udp.thinkmeta.site → ipa-local.thinkmeta.site:88
_ldap._tcp.thinkmeta.site → ipa-local.thinkmeta.site:389
_kpasswd._tcp.thinkmeta.site → ipa-local.thinkmeta.site:464
_kerberos-master._tcp.thinkmeta.site → ipa-local.thinkmeta.site:88
客户端 DNS 配置
客户端的 /etc/resolv.conf 必须指向 FreeIPA 服务器:
# 客户端 DNS 配置
nameserver 192.168.3.90对于有外网需求的客户端,可以配置条件转发。但最简单的方式是:将 FreeIPA 的 DNS 作为首选,Forwarders 转发给公网 DNS(FreeIPA 安装时已配置 --forwarder=1.1.1.1)。
2.8 环境检查清单
在开始部署前,逐项确认:
□ Docker 已安装并可正常使用
□ 服务器 IP 地址为固定 IP(192.168.3.90)
□ 53/80/443/389/636/88/464/123 端口未被占用
□ systemd-resolved 已停止(如果占用 53 端口)
□ 时间已同步(timedatectl 显示 NTP service: active)
□ 宿主机内存 ≥ 4GB
□ 磁盘空间 ≥ 20GB(/data/docker-space/ipa-data 所在分区)
□ 防火墙已放行所需端口(或关闭防火墙)
□ /data/docker-space/ipa-data 目录已创建
全部确认完毕后,就可以进入下一章进行 FreeIPA 服务器的部署了。