04 — 客户端接入配置
4.1 客户端接入原理
客户端 (dev.thinkmeta.site)
│
│ ① ipa-client-install 自动:
│ - 配置 SSSD
│ - 配置 Kerberos (/etc/krb5.conf)
│ - 注册主机到 FreeIPA LDAP
│ - 获取主机证书
│ - 创建主机 keytab
│
▼
FreeIPA Server (ipa-local.thinkmeta.site:192.168.3.90)
│
│ ② 之后用户登录客户端时:
│ - SSSD 向 FreeIPA 验证用户
│ - 自动创建 home 目录
│ - 获取 Kerberos 票据
│
▼
用户可以使用 IPA 账号登录
4.2 前置条件(客户端必须满足)
| 条件 | 说明 |
|---|---|
| DNS 指向 FreeIPA | /etc/resolv.conf 中 nameserver 192.168.3.90 |
| FQDN 主机名 | 必须是全限定域名,如 dev.thinkmeta.site |
| 时钟同步 | 与 FreeIPA 服务器偏差 < 5 分钟 |
| 网络可达 | 能 ping 通 192.168.3.90 的所有端口 |
| ipa-client 包 | 需要安装 freeipa-client |
4.3 客户端环境配置(逐步操作)
步骤 1:设置主机名
# 查看当前主机名
hostnamectl
# 设置完整主机名(FQDN)
sudo hostnamectl set-hostname dev.thinkmeta.site
# 验证
hostname # 应输出: dev.thinkmeta.site
hostname -f # 应输出: dev.thinkmeta.site步骤 2:配置 hosts 文件
# 添加本地回环解析
echo "127.0.0.1 dev.thinkmeta.site dev" | sudo tee -a /etc/hosts
# 添加 FreeIPA 服务器解析(如果 DNS 还未生效)
echo "192.168.3.90 ipa-local.thinkmeta.site" | sudo tee -a /etc/hosts步骤 3:配置 DNS 指向 FreeIPA
# 方案 A:直接写入 resolv.conf(Ubuntu 26.04 使用 systemd-resolved)
echo "nameserver 192.168.3.90" | sudo tee /etc/resolv.conf
# 方案 B:使用 systemd-resolved 配置(推荐,重启不丢失)
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
# 然后编辑 /etc/resolv.conf 或创建如下配置
# 方案 C:修改 netplan 配置(Ubuntu 26.04 最稳妥)
sudo vim /etc/netplan/50-cloud-init.yamlnetplan 配置示例:
network:
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.3.100/24
routes:
- to: default
via: 192.168.3.1
nameservers:
addresses:
- 192.168.3.90 # FreeIPA DNS 第一
- 1.1.1.1 # 公网 DNS 备选
version: 2# 应用 netplan 配置
sudo netplan apply
# 验证 DNS 解析
nslookup ipa-local.thinkmeta.site
# 应返回: 192.168.3.90步骤 4:验证 DNS 工作正常
# 测试正向解析
host ipa-local.thinkmeta.site
# 测试反向解析
host 192.168.3.90
# 测试 SRV 记录(关键!)
nslookup -type=SRV _ldap._tcp.thinkmeta.site
nslookup -type=SRV _kerberos._tcp.thinkmeta.site
# 验证主机名反向解析
host $(hostname -I | awk '{print $1}')如果 SRV 记录查询失败,不要继续安装客户端! 先排查 DNS 配置。
步骤 5:配置时间同步
# 开启 NTP
sudo timedatectl set-ntp true
# 检查时间同步状态
timedatectl timesync-status
# 手动同步一次(可选)
sudo ntpdate -u 192.168.3.90步骤 6:安装 FreeIPA 客户端包
# Ubuntu 26.04
sudo apt update
sudo apt install -y freeipa-client4.4 注册客户端到 FreeIPA
一切就绪后,执行客户端注册:
sudo ipa-client-install \
--domain=thinkmeta.site \
--server=ipa-local.thinkmeta.site \
--realm=THINKMETA.SITE \
--mkhomedir参数说明
| 参数 | 说明 |
|---|---|
--domain=thinkmeta.site | FreeIPA 域名 |
--server=ipa-local.thinkmeta.site | FreeIPA 服务器 FQDN |
--realm=THINKMETA.SITE | Kerberos Realm |
--mkhomedir | 用户首次登录时自动创建 home 目录 |
安装过程中会提示输入 admin 密码以授权主机加入域。
成功的输出标志
Client configuration complete.
The ipa-client-install command was successful
4.5 验证客户端接入
# 1. 验证 Kerberos 配置
kinit admin
klist
# 2. 在 FreeIPA 服务器上确认主机已注册
# (在 FreeIPA 容器或 Web UI 中执行)
ipa host-find dev.thinkmeta.site
# 3. 测试 IPA 用户能否登录客户端
ssh [email protected]
# 或本地切换用户
su - admin
# 4. 检查 SSSD 服务状态
sudo systemctl status sssd
# 5. 使用 IPA 命令获取用户信息
ipa user-find4.6 自动创建 Home 目录
SSSD 配合 --mkhomedir 后,用户首次 SSH 登录时会自动创建 /home/<username>。
检查 home 目录自动创建是否生效
# 查看 SSSD 配置
grep -r "pam" /etc/sssd/sssd.conf
# 重启 SSSD(修改配置后)
sudo systemctl restart sssd
# 手动触发 home 目录创建
sudo pam-auth-update --enable mkhomedir4.7 批量接入客户端
当有多台服务器需要接入时,可以编写脚本批量操作:
#!/bin/bash
# batch-client-setup.sh — 批量配置客户端
SERVERS=(
"dev.thinkmeta.site|192.168.3.101"
"ops.thinkmeta.site|192.168.3.102"
"db.thinkmeta.site|192.168.3.103"
)
IPA_SERVER="192.168.3.90"
ADMIN_PASSWORD="YourAdminPassword"
for entry in "${SERVERS[@]}"; do
HOSTNAME="${entry%%|*}"
IP="${entry##*|}"
echo "=== 配置 $HOSTNAME ==="
ssh root@$IP "
hostnamectl set-hostname $HOSTNAME
echo '127.0.0.1 $HOSTNAME \$(echo \$HOSTNAME | cut -d. -f1)' >> /etc/hosts
echo 'nameserver $IPA_SERVER' > /etc/resolv.conf
apt install -y freeipa-client
ipa-client-install --domain=thinkmeta.site --server=ipa-local.thinkmeta.site --realm=THINKMETA.SITE --mkhomedir --password='$ADMIN_PASSWORD' --unattended
"
done4.8 客户端日常管理
查看已注册的主机
# 在 FreeIPA 服务器上
ipa host-find查看主机详细信息
ipa host-show dev.thinkmeta.site禁用/启用主机
# 禁用主机(阻止该主机上的所有 IPA 用户登录)
ipa host-disable dev.thinkmeta.site
# 重新启用
ipa host-enable dev.thinkmeta.site从域中移除客户端
# 在客户端上执行
sudo ipa-client-install --uninstall
# 在 FreeIPA 服务器上删除主机记录
ipa host-del dev.thinkmeta.site4.9 查看/管理客户端 keytab
# 查看当前主机的 keytab 条目
sudo klist -k /etc/krb5.keytab
# 在 FreeIPA 服务器上重新生成某台主机的 keytab
ipa-getkeytab -s ipa-local.thinkmeta.site -p host/dev.thinkmeta.site -k /tmp/dev.keytab4.10 常见问题
Q1:ipa-client-install 报 “DNS discovery failed”
原因:客户端 DNS 没有正确指向 FreeIPA 服务器。
解决:
# 确认 DNS 配置
cat /etc/resolv.conf
# 确认能解析 SRV 记录
dig @192.168.3.90 _ldap._tcp.thinkmeta.site SRVQ2:Kerberos 认证报 “Clock skew too great”
原因:客户端与服务器时间差超过 5 分钟。
解决:
# 查看时间差异
sudo ntpdate -q 192.168.3.90
# 强制同步
sudo ntpdate -u 192.168.3.90Q3:用户登录后没有 home 目录
# 确认安装了 oddjob-mkhomedir
sudo apt install -y oddjob-mkhomedir
sudo systemctl enable --now oddjobd
# 或者通过 PAM 实现
sudo pam-auth-update --enable mkhomedirQ4:SSH 登录很慢
通常是 DNS 反向解析超时导致。在客户端 /etc/ssh/sshd_config 中添加:
UseDNS no
然后重启 SSH:sudo systemctl restart sshd