在身份管理中使用 DNS
管理 RHEL IdM 中集成的 DNS 服务
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 使用 Ansible playbook 在 IdM 中管理全局 DNS 配置 复制链接链接已复制到粘贴板!
使用 freeipa.ansible_freeipa.dnsconfig Ansible 模块,您可以为身份管理(IdM) DNS 配置全局配置。全局 DNS 配置中定义的设置应用到所有 IdM DNS 服务器。但是,全局配置优先于特定 IdM DNS 区的配置。
dnsconfig 模块支持以下变量:
- 全局转发器,特别是 IP 地址和用于通信的端口。
- 全局转发策略:只有、first 或 none。有关这些 DNS 转发策略类型的详情,请参阅 IdM 中的 DNS 转发策略。
- 同步正向查找和反向查找区域。
1.1. 先决条件 复制链接链接已复制到粘贴板!
DNS 服务安装在 IdM 服务器上。有关如何使用集成 DNS 安装 IdM 服务器的详情,请查看以下链接之一:
使用集成 DNS 安装 Identity Management(IdM)将 /etc/resolv.conf 文件配置为指向 127.0.0.1 localhost 地址:
# Generated by NetworkManager search idm.example.com nameserver 127.0.0.1
# Generated by NetworkManager
search idm.example.com
nameserver 127.0.0.1
在某些情况下,如使用 动态主机配置 协议(DHCP)的网络,NetworkManager 服务可能会恢复对 /etc/resolv.conf 文件的更改。为了使 DNS 配置持久,IdM DNS 安装过程还通过以下方式配置 NetworkManager 服务:
DNS 安装脚本会创建一个
/etc/NetworkManager/conf.d/zzz-ipa.confNetworkManager配置文件来控制搜索顺序和 DNS 服务器列表:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
NetworkManager服务已重新加载,该服务始终使用/etc/NetworkManager/conf.d/目录中的最后一个文件中的设置来创建/etc/resolv.conf文件。这时为zzz-ipa.conf文件。
不要手动修改 /etc/resolv.conf 文件。
1.3. 使用 Ansible 确保 IdM 中存在 DNS 全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 全局转发器在 IdM 中存在。在下例中,IdM 管理员确保在 DNS 服务器中存在一个到 IPv4 地址为 7.7.9.9,IP v6 地址为 2001:db8::1:0,端口 53 的 DNS global forwarder。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进入到 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从相关集合目录中复制 forwarders-absent.yml Ansible playbook 文件,并对其重命名。例如:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-presence-of-a-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-presence-global-forwarder.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保 IdM DNS 中存在全局转发器。 -
在
tasks部分中,更改任务的名称,以确保到端口 53上 7.7.9.9 和 2001:db8::1:0 的 DNS 全局转发器存在。 在
freeipa.ansible_freeipa.ipadnsconfig部分的forwarders部分中:-
将第一个
ip_address值更改为全局转发器的 IPv4 地址:7.7.9.9。 -
将第二个
ip_address值更改为全局转发器的 IPv6 地址:2001:db8::1:0。 -
验证
端口值是否已设置为53。
-
将第一个
将
状态更改为present。对于当前示例为修改过的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 使用 Ansible 确保 IdM 中没有 DNS 全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 全局转发器在 IdM 中不存在。在以下示例流程中,IdM 管理员确保端口 53 上具有互联网协议(IP)v4 地址 8.8.6.6 和 IP v6 地址 2001:4860:4860::8800 的 DNS 全局转发器(IP)不存在。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进入到 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从相关集合目录中复制 forwarders-absent.yml Ansible playbook 文件,并对其重命名。例如:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-absence-of-a-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-absence-of-a-global-forwarder.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保 IdM DNS 中缺少全局转发器。 -
在
tasks部分中,更改任务的名称,以确保到 8.8.6.6 和 2001:4860:4860::8800 端口 53 的 DNS 全局转发器不存在。 在
freeipa.ansible_freeipa.ipadnsconfig部分的forwarders部分中:-
将第一个
ip_address值更改为全局转发器的 IPv4 地址:8.8.6.6。 -
将第二个
ip_address值更改为全局转发器的 IPv6 地址:2001:4860:4860::8800。 -
验证
端口值是否已设置为53。
-
将第一个
-
将
action变量设置为member。 -
验证
state已设为absent。
对于当前示例为修改过的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您仅在 playbook 中使用
state: absent选项,而不使用action: member,则 playbook 会失败。-
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. ipadnsconfig ansible-freeipa 模块中的 action: member 选项 复制链接链接已复制到粘贴板!
使用 ansible-freeipa ipadnsconfig 模块在身份管理(IdM)中排除全局转发器,除了使用 state: absent 选项外,还需要使用 action: member 选项。如果您只使用 playbook 中的 state: absent,而没有使用 action: member,则 playbook 将失败。因此,要删除所有全局转发器,您必须在 playbook 中分别指定它们。相反,state: present 选项不需要 action: member。
下表 提供了添加和删除 DNS 全局转发器的配置示例,其演示了 action: member 选项的正确使用。表中每一行显示了:
- 执行 playbook 前配置的全局转发器
- playbook 摘录
- 执行 playbook 后配置的全局转发器
| 之前的转发器 | Playbook 摘录 | 之后的转发器 |
|---|---|---|
| 8.8.6.6 |
| 8.8.6.7 |
| 8.8.6.6 |
| 8.8.6.6, 8.8.6.7 |
| 8.8.6.6, 8.8.6.7 |
| 尝试执行 playbook 会导致错误。原始配置 - 8.8.6.6、8.8.6.7 - 保持不变。 |
| 8.8.6.6, 8.8.6.7 |
| 8.8.6.6 |
1.6. IdM 中的 DNS 转发策略 复制链接链接已复制到粘贴板!
IdM 支持 第一个 且 唯一的 标准 BIND 转发策略,以及任何 IdM 特定的转发策略。
- 首先转发 (默认)
-
IdM BIND 服务将 DNS 查询转发到配置的转发器。如果因为服务器错误或超时查询失败,BIND 会使用 Internet 上的服务器回退到递归解析。
forward first策略是默认策略,它适合优化 DNS 流量。 - 仅转发
-
IdM BIND 服务将 DNS 查询转发到配置的转发器。如果因为服务器错误或超时查询失败,BIND 会向客户端返回错误。建议在带有分割 DNS 配置的环境中使用
forward only策略。 - none (转发禁用)
-
DNS 查询不会通过
none转发策略转发。禁用转发仅作为全局转发配置的特定区覆盖。这个选项等同于在 BIND 配置中指定空转发器列表。
您不能使用转发将 IdM 中的数据与其他 DNS 服务器的数据组合。您只能在 IdM DNS 中转发主区的查询。
默认情况下,如果查询的 DNS 名称属于 IdM 服务器具有权威的区域,BIND 服务不会将查询转发到另一服务器。在这种情况下,如果无法在 IdM 数据库中找到查询的 DNS 名称,则会返回 NXDOMAIN 回答。未使用转发。
例 1.1. 场景示例
IdM 服务器对 test.example 具有权威。DNS 区域.BIND 配置为将查询转发到 IP 地址 192.0.2.254 的 DNS 服务器。
客户端发送对 不存在.test.example的查询时。DNS 名称,BIND 检测到 IdM 服务器对 test.example. 区域具有权威,并且不会将查询转发到 192.0.2.254. 服务器。因此,DNS 客户端会收到 NXDomain 错误消息,通知用户查询的域不存在。
按照以下流程,使用 Ansible playbook 确保将 IdM DNS 中的全局转发策略被设置为 forward first。
如果您使用 forward first DNS 转发策略,DNS 查询将转发到配置的转发器。如果因为服务器错误或超时查询失败,BIND 会使用 Internet 上的服务器回退到递归解析。forward first 策略是默认策略。它适用于流量优化。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 您的 IdM 环境包含一个集成的 DNS 服务器。
流程
进入到 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从相关集合目录中生成 set-configuration.yml Ansible playbook 文件的副本,并对其重命名。例如:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/set-configuration.yml set-forward-policy-to-first.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/set-configuration.yml set-forward-policy-to-first.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 set-forward-policy-to-first.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsconfig任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 将
forward_policy变量设置为 first。删除原始 playbook 的其他所有行。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. 使用 Ansible playbook 确保 IdM DNS 中禁用了全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保全局转发器在 IdM DNS 中被禁用。禁用的方法是将 forward_policy 变量设置为 none。
禁用全局转发器会导致 DNS 查询不会被转发。禁用转发仅作为全局转发配置的特定区覆盖。这个选项等同于在 BIND 配置中指定空转发器列表。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 您的 IdM 环境包含一个集成的 DNS 服务器。
流程
进入到 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从相关集合目录中生成 disable-global-forwarders.yml Ansible playbook 文件的副本。例如:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disable-global-forwarders.yml disable-global-forwarders-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disable-global-forwarders.yml disable-global-forwarders-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 disable-global-forwarders-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsconfig任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 将
forward_policy变量设置为 none。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. 使用 Ansible playbook 确保 IdM DNS 中禁用了正向和反向查找区域的同步 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保正向和反向查找区域在 IdM DNS 中未同步。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 您的 IdM 环境包含一个集成的 DNS 服务器。
流程
进入到 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从相关集合目录中复制 disallow-reverse-sync.yml Ansible playbook 文件。例如:
cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disallow-reverse-sync.yml disallow-reverse-sync-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 disallow -reverse-sync-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsconfig任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 将
allow_sync_ptr变量设置为 no。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 管理 IdM 中的 DNS 区域 复制链接链接已复制到粘贴板!
了解如何以 IdM 管理员身份管理身份管理(IdM) DNS 区域。
2.1. 先决条件 复制链接链接已复制到粘贴板!
DNS 服务安装在 IdM 服务器上。有关如何使用集成 DNS 安装 IdM 服务器的详情,请查看以下链接之一:
- 您了解 IdM 中支持哪些 DNS 区域类型。
2.2. 在 IdM Web UI 中添加主 DNS 区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 身份管理(IdM) Web UI 添加主 DNS 区域。
先决条件
- 以 IdM 管理员身份登录。
步骤
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。管理 IdM DNS 主区域
- 单击所有区域列表顶部的 。
提供区域名称。
输入一个新的 IdM 主区
- 点。
2.3. 在 IdM CLI 中添加主 DNS 区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Identity Management (IdM)命令行界面(CLI)添加主 DNS 区。
先决条件
- 以 IdM 管理员身份登录。
步骤
ipa dnszone-add命令向 DNS 域添加新区域。添加新区域要求您指定新子域的名称。您可以直接使用以下命令传递子域名:ipa dnszone-add newzone.idm.example.com
$ ipa dnszone-add newzone.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有将名称传递给
ipa dnszone-add,脚本会自动提示。
2.4. 在 IdM Web UI 中删除主 DNS 区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 IdM Web UI 从身份管理(IdM)中删除主 DNS 区。
先决条件
- 以 IdM 管理员身份登录。
步骤
-
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。 按区域名称选择复选框,然后单击 。
删除主 DNS 区域
- 在 Remove DNS 区域 对话框窗口中,确认您要删除所选区域。
2.5. 在 IdM CLI 中删除主 DNS 区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 IdM 命令行界面(CLI)从身份管理(IdM)中删除主 DNS 区。
先决条件
- 以 IdM 管理员身份登录。
步骤
要删除主 DNS 区域,请输入
ipa dnszone-del命令,后跟您要删除的区域的名称。例如:ipa dnszone-del idm.example.com
$ ipa dnszone-del idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. DNS 配置优先级 复制链接链接已复制到粘贴板!
您可以在以下层面上配置多个 DNS 配置选项:每个级别具有不同的优先级。
- 特定于区域的配置
-
IdM 中定义的特定区的具体配置级别具有最高的优先级。您可以使用
ipa dnszone-*和ipa dnsforwardzone-*命令来管理特定于区域的配置。 - 每服务器配置
-
安装 IdM 服务器过程中,需要您定义每服务器转发器。您可以使用
ipa dnsserver-*命令管理每服务器转发器。如果您不想在安装副本时设置每服务器转发器,您可以使用--no-forwarder选项。 - 全局 DNS 配置
-
如果没有定义特定于区域的配置,IdM 将使用存储在 LDAP 中的全局 DNS 配置。您可以使用
ipa dnsconfig-*命令管理全局 DNS 配置。全局 DNS 配置中定义的设置应用到所有 IdM DNS 服务器。 /etc/named.conf中的配置在每个 IdM DNS 服务器的
/etc/named.conf文件中定义的配置具有最低优先级。它特定于每台服务器,必须手动编辑。/etc/named.conf文件通常仅用于指定到本地 DNS 缓存的 DNS 转发。其他选项通过使用 命令管理上述区域特定和全局 DNS 配置。
您可以在多个级别上同时配置 DNS 选项。在这种情况下,具有最高优先级的配置优先于较低级别上定义的配置。
2.7. 主要 IdM DNS 区的配置属性 复制链接链接已复制到粘贴板!
身份管理(IdM)创建一个具有特定默认配置的新区域,如刷新周期、传输设置或缓存设置。在 IdM DNS 区域属性 中,您可以使用以下选项之一查找您可以修改的默认区配置的属性:
-
命令行(CLI)上的
dnszone-mod命令。如需更多信息,请参阅在 IdM CLI 中编辑主 DNS 区的配置。 - IdM Web UI.如需更多信息,请参阅在 IdM Web UI 中编辑主 DNS 区的配置。
除了设置区域的实际信息外,这些设置定义了 DNS 服务器如何处理 权威启动 (SOA)记录条目以及它如何从 DNS 名称服务器更新其记录。
| 属性 | 命令行选项 | 描述 |
|---|---|---|
| 权威名称服务器 |
| 设置主 DNS 名称服务器的域名,也称为 SOA MNAME。
默认情况下,每个 IdM 服务器在 SOA MNAME 字段中公告其自身。因此,使用 |
| 管理员电子邮件地址 |
| 设置要用于区域管理员的电子邮件地址。这默认为主机上的 root 帐户。 |
| SOA 串行 |
| 在 SOA 记录中设置序列号。请注意,IdM 会自动设置版本号,用户不应该修改它。 |
| SOA 刷新 |
| 设置次要 DNS 服务器在从主 DNS 服务器请求更新前等待的间隔(以秒为单位)。 |
| SOA 重试 |
| 设置在重试失败的刷新操作前要等待的时间(以秒为单位)。 |
| SOA 过期 |
| 设置次要 DNS 服务器在结束操作尝试之前尝试执行刷新更新的时间(以秒为单位)。 |
| 最低 SOA |
| 根据 RFC 2308,将生存时间(TTL)值(以秒为单位)设置为负缓存。 |
| SOA 生存时间 |
|
为区域 apex 的记录设置 TTL(以秒为单位)。例如,在区域 |
| 默认生存时间 |
| 将默认时间设置为 live(TTL),以秒为单位,为之前未设置单个 TTL 值的区域中的所有值提供负缓存。 |
| BIND 更新策略 |
| 设置 DNS 区域中客户端允许的权限。 |
| 动态更新 |
| 启用对客户端的 DNS 记录的动态更新。 请注意,如果设置为 false,IdM 客户端计算机将无法添加或更新其 IP 地址。 |
| 允许传输 |
| 提供允许传输给定区域的 IP 地址或网络名称列表,用分号(;)分隔。
默认情况下禁用区域传送。默认的 |
| 允许查询 |
| 提供允许发出 DNS 查询的 IP 地址或网络名称列表,用分号(;)分隔。 |
| 允许 PTR 同步 |
| 设置区域的 A 或 AAAA 记录(转发记录)是否将自动与 PTR(反向)记录同步。 |
| 区域转发器 |
| 指定为 DNS 区域特别配置的转发器。这与 IdM 域中使用的任何全局转发器分开。 要指定多个转发器,请多次使用 选项。 |
| forward 策略 |
| 指定 forward 策略。有关支持的策略的详情,请查看 IdM 中的 DNS 转发策略。 |
2.8. 在 IdM Web UI 中编辑主 DNS 区域的配置 复制链接链接已复制到粘贴板!
按照以下流程,使用 IdM Web UI 编辑主身份管理(IdM) DNS 的配置属性。
先决条件
- 以 IdM 管理员身份登录。
步骤
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。DNS 主区管理
在
DNS Zones部分中,单击所有区域列表中的区域名称,以打开 DNS 区域页面。编辑主区域
单击
Settings。主区域编辑页面中的 Settings 选项卡
根据需要更改区域配置。
有关可用设置的详情,请参考 IdM DNS 区域属性。
单击 以确认新配置。
注意如果您要将默认时间改为区域的 live (TTL),请在所有 IdM DNS 服务器上重新启动
named服务,以使更改生效。所有其他设置将立即自动激活。
2.9. 在 IdM CLI 中编辑主 DNS 区域的配置 复制链接链接已复制到粘贴板!
按照以下流程,使用 Identity Management (IdM)命令行界面(CLI)编辑主 DNS 区的配置。
先决条件
- 以 IdM 管理员身份登录。
步骤
要修改现有的主 DNS 区域,请使用
ipa dnszone-mod命令。例如,在重试失败的刷新操作前要设置等待的时间为 1800 秒:ipa dnszone-mod --retry 1800
$ ipa dnszone-mod --retry 1800Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关可用设置及其相应 CLI 选项的更多信息,请参阅 IdM DNS 区域属性。
如果特定设置在您要修改的 DNS 区域条目中没有值,则
ipa dnszone-mod命令会添加该值。如果设置没有值,该命令将使用指定的值覆盖当前值。注意如果您要将默认时间改为区域的 live (TTL),请在所有 IdM DNS 服务器上重新启动
named服务,以使更改生效。所有其他设置将立即自动激活。
2.10. IdM 中的区域传送 复制链接链接已复制到粘贴板!
在有集成 DNS 的身份管理(IdM)部署中,您可以使用 zone transfers 将所有资源记录从一个名称服务器复制到另一个名称服务器。名称服务器为其区域维护权威数据。如果您更改了对 zone A DNS 区具有权威的 DNS 服务器上的区,您必须在位于zone A 外的 IdM DNS 域中的其他名称服务器间分发更改。
IdM 集成的 DNS 可以由不同的服务器同时写入。IdM 区域中的授权起始(SOA)序列号没有在单独的 IdM DNS 服务器间同步。因此,将您的 DNS 服务器配置为仅使用 to-be-transferred 区域中的一个特定的 DNS 服务器。这可防止由未同步的 SOA 序列号导致的区域传输失败。
2.11. 在 IdM Web UI 中启用区域传送 复制链接链接已复制到粘贴板!
按照以下流程,使用 IdM Web UI 在身份管理(IdM)中启用区域传送。
先决条件
- 以 IdM 管理员身份登录。
步骤
-
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。 -
单击
Settings。 在
Allow transfer下,指定要将区域记录传输到的名称服务器。图 2.1. 启用区传输
- 单击 DNS 区域页面顶部的 ,以确认新配置。
2.12. 在 IdM CLI 中启用区传输 复制链接链接已复制到粘贴板!
按照以下流程,使用 IdM 命令行界面(CLI)在身份管理(IdM)中启用区域传送。
先决条件
- 以 IdM 管理员身份登录。
- 您有访问二级 DNS 服务器的 root 权限。
步骤
要在
BIND服务中启用区传输,输入ipa dnszone-mod命令,并指定使用--allow-transfer选项向该区域记录的待传输的名称服务器列表。例如:ipa dnszone-mod --allow-transfer=192.0.2.1;198.51.100.1;203.0.113.1 idm.example.com
$ ipa dnszone-mod --allow-transfer=192.0.2.1;198.51.100.1;203.0.113.1 idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
SSH 到启用了区传输的 DNS 服务器之一:
ssh 192.0.2.1
$ ssh 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
dig工具传输 IdM DNS 区域:dig @ipa-server zone_name AXFR
# dig @ipa-server zone_name AXFRCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果命令没有返回任何错误,则您已成功为 zone_name 启用区域传送。
第 3 章 使用 Ansible playbook 管理 IdM DNS 区域 复制链接链接已复制到粘贴板!
作为身份管理(IdM)管理员,您可以使用 ansible-freeipa 软件包中的 dnszone 模块来管理 IdM DNS 区域的工作方式。
3.1. 先决条件 复制链接链接已复制到粘贴板!
- DNS 服务安装在 IdM 服务器上。有关如何使用 Ansible 安装带有集成 DNS 的 IdM 服务器的更多信息,请参阅 使用 Ansible playbook 安装身份管理服务器。
3.2. 支持的 DNS 区类型 复制链接链接已复制到粘贴板!
身份管理 (IdM) 支持两种类型的 DNS 区域:primary 和 forward区域。此处描述了这两种类型的区,包括 DNS 转发的一个场景示例。
本指南对区域类型使用 BIND 术语,不同于用于 Microsoft Windows DNS 的术语。BIND 服务器中的 Primary zones 与 Microsoft Windows DNS 中的 forward lookup zones 和 reverse lookup zones 作用相同。BIND 中的转发区域的作用与 Microsoft Windows DNS 中的条件 转发器相同。
- 主 DNS 区域
主 DNS 区域包含权威 DNS 数据,并且可以接受动态 DNS 更新。此行为等同于标准 BIND 配置中的
type master设置。您可以使用ipa dnszone-*命令管理主区域。在遵守标准 DNS 规则时,每个主区必须包含
start of authority(SOA)和nameserver(NS)记录。在创建 DNS 区域时,IdM 会自动生成这些记录,但您必须手动将 NS 记录复制到父区域,以创建正确委托。根据标准 BIND 行为,查询服务器不具有权威的名称将转发到其他 DNS 服务器。这些 DNS 服务器(称为转发器)可能是也可能不是查询的权威。
例如,在 IdM 服务器包含
test.example.主区域的场景中。此区域包含sub.test.example.名称的 NS 委派记录。此外,使用sub.text.example子区域的192.0.2.254转发器 IP 地址配置了test.example.区域。查询名称
不存在.test.example.的客户端会收到NXDomain回答,并且不会发生转发,因为 IdM 服务器对此名称具有权威。另一方面,查询
host1.sub.test.example.name 会转发到配置的转发器192.0.2.254,因为 IdM 服务器对此名称没有权威。- 转发 DNS 区域
从 IdM 的角度来看,转发 DNS 区域不包含任何权威数据。事实上,正向"区"通常仅包含两段信息:
- 域名
与域关联的 DNS 服务器的 IP 地址
所有对属于定义的域的名称的查询都转发到指定的 IP 地址。此行为等同于标准 BIND 配置中的
type forward设置。您可以使用ipa dnsforwardzone-*命令管理转发区域。转发 DNS 区域在 IdM-Active Directory(AD)信任的上下文中特别有用。如果 IdM DNS 服务器对 idm.example.com 区域具有权威,并且 AD DNS 服务器对 ad.example.com 区域具有权威,则 ad.example.com 是 idm.example.com 主区的 DNS 转发区域。这意味着,当查询来自 IdM 客户端以获取 somehost.ad.example.com 的 IP 地址时,查询将转发到 ad.example.com IdM DNS 转发区域中指定的 AD 域控制器。
3.3. 使用 Ansible 时的主 IdM DNS 区域的配置属性 复制链接链接已复制到粘贴板!
身份管理(IdM)创建一个具有特定默认配置的新区域,如刷新周期、传输设置或缓存设置。在 IdM DNS 区域属性 中,您可以找到您可以使用使用 ipadnszone 模块的 Ansible playbook 修改的默认区域配置的属性。
除了设置区域的实际信息外,这些设置定义了 DNS 服务器如何处理 权威启动 (SOA)记录条目以及它如何从 DNS 名称服务器更新其记录。
| 属性 | ansible-freeipa 变量 | 描述 |
|---|---|---|
| 权威名称服务器 |
| 设置主 DNS 名称服务器的域名,也称为 SOA MNAME。
默认情况下,每个 IdM 服务器在 SOA MNAME 字段中公告其自身。因此,使用 |
| 管理员电子邮件地址 |
| 设置要用于区域管理员的电子邮件地址。这默认为主机上的 root 帐户。 |
| SOA 串行 |
| 在 SOA 记录中设置序列号。请注意,IdM 会自动设置版本号,用户不应该修改它。 |
| SOA 刷新 |
| 设置次要 DNS 服务器在从主 DNS 服务器请求更新前等待的间隔(以秒为单位)。 |
| SOA 重试 |
| 设置在重试失败的刷新操作前要等待的时间(以秒为单位)。 |
| SOA 过期 |
| 设置次要 DNS 服务器在结束操作尝试之前尝试执行刷新更新的时间(以秒为单位)。 |
| 最低 SOA |
| 根据 RFC 2308,将生存时间(TTL)值(以秒为单位)设置为负缓存。 |
| SOA 生存时间 |
|
为区域 apex 的记录设置 TTL(以秒为单位)。例如,在区域 |
| 默认生存时间 |
| 将默认时间设置为 live(TTL),以秒为单位,为之前未设置单个 TTL 值的区域中的所有值提供负缓存。 |
| BIND 更新策略 |
| 设置 DNS 区域中客户端允许的权限。 |
| 动态更新 |
| 启用对客户端的 DNS 记录的动态更新。 请注意,如果设置为 false,IdM 客户端计算机将无法添加或更新其 IP 地址。 |
| 允许传输 |
| 提供允许传输给定区域的 IP 地址或网络名称列表,用分号(;)分隔。
默认情况下禁用区域传送。默认的 |
| 允许查询 |
| 提供允许发出 DNS 查询的 IP 地址或网络名称列表,用分号(;)分隔。 |
| 允许 PTR 同步 |
| 设置区域的 A 或 AAAA 记录(转发记录)是否将自动与 PTR(反向)记录同步。 |
| 区域转发器 |
| 指定为 DNS 区域特别配置的转发器。这与 IdM 域中使用的任何全局转发器分开。 要指定多个转发器,请多次使用 选项。 |
| forward 策略 |
| 指定 forward 策略。有关支持的策略的详情,请查看 IdM 中的 DNS 转发策略。 |
3.4. 使用 Ansible 在 IdM DNS 中创建主区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保主 DNS 区域存在。在以下流程使用的示例中,您确保 zone.idm.example.com DNS 区域存在。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 您知道 IdM 管理员密码。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开清单文件,并确保
[ipaserver]部分中列出了您要配置的 IdM 服务器。例如,要指示 Ansible 配置 server.idm.example.com,请输入:[ipaserver] server.idm.example.com
[ipaserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 dnszone-present.yml Ansible playbook 文件的副本。例如:
cp dnszone-present.yml dnszone-present-copy.yml
$ cp dnszone-present.yml dnszone-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 dnszone-present-copy.yml 文件进行编辑。
通过在
ipadnszonetask 部分中设置以下变量来调整文件:-
将
ipaadmin_password变量设置为 IdM 管理员密码。 将
zone_name变量设置为 zone.idm.example.com。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 使用 Ansible playbook 确保 IdM 中存在一个带有多个变量的主 DNS 区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保主 DNS 区域存在。在以下流程中使用的示例中,IdM 管理员确保存在 zone.idm.example.com DNS 区域。Ansible playbook 配置区域的多个参数。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 dnszone-all-params.yml Ansible playbook 文件的副本。例如:
cp dnszone-all-params.yml dnszone-all-params-copy.yml
$ cp dnszone-all-params.yml dnszone-all-params-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 dnszone-all-params-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnszone任务部分中设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
zone_name变量设置为 zone.idm.example.com。 -
如果要允许正向和反向记录同步,这是 A 和 AAAA 记录与 PTR 记录的同步,请将
allow_sync_ptr变量设置为 true。 -
将
dynamic_update变量设置为 true,以启用 IdM 客户端计算机添加或更新其 IP 地址。 -
将
dnssec变量设置为 true,以允许区域中的记录内联 DNSSEC 签名。 -
将
allow_transfer变量设置为区域中次要名称服务器的 IP 地址。 -
将
allow_query变量设置为允许发出查询的 IP 地址或网络。 -
将
forwarders变量设置为全局转发器的 IP 地址。 -
将
serial变量设置为 SOA 记录序列号。 -
定义区域中 DNS 记录的
refresh、retry、expire、minimum、ttl和default_ttl值。 -
使用
nsec3param_rec 变量,为区域定义 NSEC3PARAM 记录。 -
将
skip_overlap_check变量设置为 true,从而强制创建 DNS,即使它与现有区域重叠。 将
skip_nameserver_check设置为 true,从而强制 DNS 区域创建,即使名称服务器不可解析。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 在给定 IP 地址时,使用 Ansible playbook 确保存在用于反向 DNS 查找的区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保反向 DNS 区域存在。在以下步骤中使用的示例中,IdM 管理员使用 IdM 主机的 IP 地址和前缀长度确保存在反向 DNS 查找区域。
使用 name_from_ip 变量提供 DNS 服务器的 IP 地址前缀长度,允许您控制区域名称。如果您不声明前缀长度,系统会查询 DNS 服务器以获取区,并根据 192.168.1.2 的 name_from_ip 值,查询可以返回以下 DNS 区域中的任何一个:
- 1.168.192.in-addr.arpa.
- 168.192.in-addr.arpa.
- 192.in-addr.arpa.
由于查询返回的区域可能不是您预期的区域,name_from_ip 只能与 state 选项设置为 present 一起使用,以防止意外删除区域。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 dnszone-reverse-from-ip.yml Ansible playbook 文件的副本。例如:
cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml
$ cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 dnszone-reverse-from-ip-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnszone任务部分中设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 将
name_from_ip变量设置为 IdM 名称服务器的 IP,并提供其前缀长度。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
playbook 创建一个区,用于从 192.168.1.2 IP 地址及其前缀长度 24 中反向 DNS 查找。接下来,playbook 显示生成的区域名称。
-
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 管理 IdM 中的 DNS 位置 复制链接链接已复制到粘贴板!
了解如何使用 IdM Web UI 和 IdM 命令行界面(CLI)管理身份管理(IdM) DNS 位置。
4.1. 先决条件 复制链接链接已复制到粘贴板!
- 您了解 IdM 中 基于 DNS 的服务发现 的概念。
- 您了解IdM 中 对 DNS 位置部署的注意事项。
- 您了解 DNS 生存时间(TTL) 的概念。
4.2. 使用 IdM Web UI 创建 DNS 位置 复制链接链接已复制到粘贴板!
您可以使用 DNS 位置来加快身份管理(IdM)客户端和服务器之间的通信速度。按照以下流程,使用 IdM Web UI 创建 DNS 位置。
先决条件
- 您的 IdM 部署已经集成了 DNS。
- 您有在 IdM 中创建 DNS 位置的权限。例如,您以 IdM admin 身份登录。
步骤
-
打开
IPA Server选项卡。 -
选择
Topology子选项卡。 -
单击导航栏中的
IPA Locations。 - 单击位置列表顶部的 。
- 填写位置名称。
- 单击 按钮以保存位置。
- 可选:重复添加更多位置的步骤。
4.3. 使用 IdM CLI 创建 DNS 位置 复制链接链接已复制到粘贴板!
您可以使用 DNS 位置来加快身份管理(IdM)客户端和服务器之间的通信速度。按照以下流程,在 IdM 命令行界面(CLI)中使用 ipa location-add 命令创建 DNS 位置。
先决条件
- 您的 IdM 部署已经集成了 DNS。
- 您有在 IdM 中创建 DNS 位置的权限。例如,您以 IdM admin 身份登录。
步骤
例如,要创建新位置
germany,请输入:ipa location-add germany ---------------------------- Added IPA location "germany" ---------------------------- Location name: germany
$ ipa location-add germany ---------------------------- Added IPA location "germany" ---------------------------- Location name: germanyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:重复添加更多位置的步骤。
4.4. 使用 IdM Web UI 将 IdM 服务器分配给 DNS 位置 复制链接链接已复制到粘贴板!
您可以使用 Identity Management(IdM)DNS 位置提高 IdM 客户端和服务器之间的通信速度。按照以下流程,使用 IdM Web UI 将 IdM 服务器分配给 DNS 位置。
先决条件
- 您的 IdM 部署已经集成了 DNS。
- 您以有权将服务器分配到 DNS 位置的用户身份登录,例如 IdM admin 用户。
-
您对要为其分配 DNS 位置的主机具有
root访问权限。 - 您已 创建了要为其分配服务器的 IdM DNS 位置。
步骤
-
打开
IPA Server选项卡。 -
选择
Topology子选项卡。 -
单击导航中的
IPA Servers。 - 单击 IdM 服务器名称。
选择 DNS 位置,并选择性地设置服务权重:
将服务器分配到 DNS 位置
- 点击 。
在前面的步骤中为其分配 DNS 位置的主机的命令行(CLI)上,重启
named服务:systemctl restart named
[root@idmserver-01 ~]# systemctl restart namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:重复为其他 IdM 服务器分配 DNS 位置的步骤。
4.5. 使用 IdM CLI 将 IdM 服务器分配给 DNS 位置 复制链接链接已复制到粘贴板!
您可以使用 Identity Management(IdM)DNS 位置提高 IdM 客户端和服务器之间的通信速度。按照以下流程,使用 IdM 命令行界面(CLI)将 IdM 服务器分配给 DNS 位置。
先决条件
- 您的 IdM 部署已经集成了 DNS。
- 您以有权将服务器分配到 DNS 位置的用户身份登录,例如 IdM admin 用户。
-
您对要为其分配 DNS 位置的主机具有
root访问权限。 - 您已 创建了要为其分配服务器的 IdM DNS 位置。
流程
可选:列出所有配置的 DNS 位置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将服务器分配到 DNS 位置。例如,要将位置
germany分配给服务器 idmserver-01.idm.example.com,请运行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在前面的步骤中为其分配 DNS 位置的主机上重启
named服务:systemctl restart named
# systemctl restart namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:重复为其他 IdM 服务器分配 DNS 位置的步骤。
4.6. 将 IdM 客户端配置为使用同一位置的 IdM 服务器 复制链接链接已复制到粘贴板!
身份管理(IdM)服务器被分配给 DNS 位置,如 使用 IdM Web UI 将 IdM 服务器分配给 DNS 位置 中所述。现在,您可以将客户端配置为使用与 IdM 服务器位于同一位置的 DNS 服务器:
-
如果
DHCP服务器为客户端分配 DNS 服务器 IP 地址,请配置DHCP服务。有关在DHCP服务中分配 DNS 服务器的详情,请查看DHCP服务文档。 -
如果您的客户端没有从
DHCP服务器接收 DNS 服务器 IP 地址,请在客户端的网络配置中手动设置 IP。有关在 Red Hat Enterprise Linux 上配置网络的详情,请参考 Red Hat Enterprise Linux 网络指南 中的 配置网络连接设置 部分。
如果您将客户端配置为使用分配给不同位置的 DNS 服务器,客户端会联系两个位置的 IdM 服务器。
例 4.1. 根据客户端的位置的不同名称服务器条目
以下示例显示了位于不同位置的客户端的 /etc/resolv.conf 文件中的不同名称服务器条目:
布拉格 中的客户端:
nameserver 10.10.0.1 nameserver 10.10.0.2
nameserver 10.10.0.1
nameserver 10.10.0.2
智利中的客户端:
nameserver 10.50.0.1 nameserver 10.50.0.3
nameserver 10.50.0.1
nameserver 10.50.0.3
Oslo 中的客户端:
nameserver 10.30.0.1
nameserver 10.30.0.1
布林中的客户端:
nameserver 10.30.0.1
nameserver 10.30.0.1
如果每个 DNS 服务器都被分配给 IdM 中的一个位置,客户端将使用其位置中的 IdM 服务器。
第 5 章 使用 Ansible 管理 IdM 中的 DNS 位置 复制链接链接已复制到粘贴板!
作为身份管理(IdM)管理员,您可以使用 ansible-freeipa 软件包中提供 的位置模块管理 IdM DNS 位置。
5.1. 基于 DNS 的服务发现 复制链接链接已复制到粘贴板!
在基于 DNS 的服务发现中,客户端使用 DNS 协议在提供特定服务的网络中查找服务器,如 LDAP 或 Kerberos。种典型的操作类型是允许客户端在最接近的网络基础架构中查找身份验证服务器,因为它们提供更高的吞吐量和较低的网络延迟,从而降低总体成本。
服务发现的主要优点是:
- 无需使用附近服务器的名称明确配置客户端。
- DNS 服务器用作策略的中央提供程序。使用同一 DNS 服务器的客户端有权访问关于服务提供商及其首选顺序的相同策略。
在 Identity Management(IdM)域中,存在适用于 LDAP、Kerber os 和其他服务的 DNS 服务记录(SRV 记录)。例如,以下命令在 IdM DNS 域中查询 DNS 服务器以获取提供基于 TCP 的 Kerberos 服务的主机:
例 5.1. 独立于 DNS 位置的结果
dig -t SRV +short _kerberos._tcp.idm.example.com 0 100 88 idmserver-01.idm.example.com. 0 100 88 idmserver-02.idm.example.com.
$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.
输出包含以下信息:
-
0(优先级):目标主机的优先级。首选使用较低值。 -
100(权重).为优先级相同的条目指定相对权重。如需更多信息,请参阅 RFC 2782 第 3 节。 -
88(端口号):服务的端口号。 - 提供服务的主机的规范名称。
在示例中,返回的两个主机名具有相同的优先级和权重。在本例中,客户端使用来自结果列表中的随机条目。
相反,当客户端配置为查询在 DNS 位置配置的 DNS 服务器时,输出会有所不同。对于分配到某个位置的 IdM 服务器,会返回定制值。在以下示例中,客户端被配置为在位置 germany 中查询 DNS 服务器:
例 5.2. 基于 DNS 位置的结果
dig -t SRV +short _kerberos._tcp.idm.example.com _kerberos._tcp.germany._locations.idm.example.com. 0 100 88 idmserver-01.idm.example.com. 50 100 88 idmserver-02.idm.example.com.
$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.
IdM DNS 服务器自动返回一个 DNS 别名(CNAME),指向一个 DNS 位置特定的 SRV 记录(首选本地服务器)。此 CNAME 记录显示在输出的第一行中。在示例中,主机 idmserver-01.idm.example.com 具有最低的优先级值,因此是首选的。idmserver-02.idm.example.com 具有更高的优先级,因此仅在首选主机不可用的情况下用作备份。
5.2. DNS 位置部署的注意事项 复制链接链接已复制到粘贴板!
使用集成 DNS 时,身份管理(IdM)可以生成特定于位置的服务(SRV)记录。因为每个 IdM DNS 服务器都会生成特定于位置的 SRV 记录,所以您必须在每个 DNS 位置至少安装一个 IdM DNS 服务器。
客户端与 DNS 位置的关联仅由客户端收到的 DNS 记录定义。因此,如果客户端执行 DNS 服务发现,从 IdM DNS 服务器解析特定于位置的记录,您可以将 IdM DNS 服务器与非 IdM DNS 使用者服务器合并,并递归器。
在大多数使用混合 IdM 和非 IdM DNS 服务的部署中,DNS 递归器都通过使用往返时间指标自动选择最接近的 IdM DNS 服务器。通常,这可确保使用非 IdM DNS 服务器的客户端正在获取最接近的 DNS 位置的记录,从而使用最佳 IdM 服务器集。
5.3. DNS 生存时间(TTL) 复制链接链接已复制到粘贴板!
客户端可以在区域配置中设置的一段时间内缓存 DNS 资源记录。由于这种缓存,客户端可能无法接收更改,直到生存时间(TTL)值过期为止。Identity Management(IdM)中的默认 TTL 值为 1 天。
如果您的客户端计算机在站点间漫游,您应该调整 IdM DNS 区的 TTL 值。将值设为比客户端在站点之间 roam 需要的时间值低。这样可确保客户端上缓存的 DNS 条目在重新连接到另一个站点之前过期,从而查询 DNS 服务器刷新特定于位置的 SRV 记录。
5.4. 使用 Ansible 确保存在 IdM 位置 复制链接链接已复制到粘贴板!
作为身份管理系统管理员(IdM),您可以配置 IdM DNS 位置,以允许客户端在最接近的网络基础架构中查找身份验证服务器。
以下流程描述了如何使用 Ansible playbook 来确保 IdM 中存在 DNS 位置。这个示例描述了如何确保 IdM 中存在 germany DNS 位置。因此,您可以将特定的 IdM 服务器分配给这个位置,以便本地 IdM 客户端可以使用它们来缩短服务器响应时间。
先决条件
在控制节点上:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 您了解 对 DNS 位置部署的注意事项。
流程
进入 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/目录中location-present.yml文件的一个副本:cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-present.yml location-present-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-present.yml location-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
location-present-copy.ymlAnsible playbook 文件以进行编辑。 通过在
freeipa.ansible_freeipa.ipalocation任务部分设置以下变量来调整文件:-
调整任务的
name,使其与您的用例对应。 -
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
name变量设置为位置的名称。
这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
调整任务的
- 保存该文件。
运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:
ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. 使用 Ansible 确保缺少 IdM 位置 复制链接链接已复制到粘贴板!
作为身份管理系统管理员(IdM),您可以配置 IdM DNS 位置,以允许客户端在最接近的网络基础架构中查找身份验证服务器。
以下流程描述了如何使用 Ansible playbook 来确保 IdM 中没有 DNS 位置。这个示例描述了如何确保 IdM 中没有 germany DNS 位置。因此,您无法将特定的 IdM 服务器分配给这个位置,本地 IdM 客户端无法使用它们。
先决条件
- 没有 IdM 服务器被分配给 germany DNS 位置。
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - 示例假定您已 创建并配置了 ~/MyPlaybooks/ 目录,来作为存储示例 playbook 副本的中心位置。
流程
进入 ~/MyPlaybooks/ 目录:
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/目录中location-absent.yml文件的一个副本:cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-absent.yml location-absent-copy.yml
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-absent.yml location-absent-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
location-absent-copy.ymlAnsible playbook 文件以进行编辑。 通过在
freeipa.ansible_freeipa.ipalocation任务部分设置以下变量来调整文件:-
调整任务的
name,使其与您的用例对应。 -
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
name变量设置为 DNS 位置的名称。 -
确保
state变量设置为absent。
这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
调整任务的
- 保存该文件。
运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:
ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 在 IdM 中管理 DNS 转发 复制链接链接已复制到粘贴板!
了解在身份管理(IdM) Web UI、IdM CLI 中以及使用 Ansible 配置 DNS 全局转发器和 DNS 转发区域。
6.1. IdM DNS 服务器的两个角色 复制链接链接已复制到粘贴板!
DNS 转发会影响 DNS 服务如何应答 DNS 查询。默认情况下,集成了 IdM 的 Berkeley Internet Name Domain (BIND) 作为一个 authoritative 和一个 recursive DNS 服务器:
- 权威 DNS 服务器
- 当 DNS 客户端查询属于 IdM 服务器具有权威的 DNS 区域的名称时,BIND 回复包含在配置区域中的数据。权威数据总是优先于任何其他数据。
- 递归 DNS 服务器
- 当 DNS 客户端查询 IdM 服务器不是权威的名称时,BIND 会尝试使用其他 DNS 服务器解析查询。如果未定义转发器,BIND 会询问 Internet 上的根服务器,并使用递归解析算法回答 DNS 查询。
在某些情况下,不需要让 BIND 直接联系其他 DNS 服务器,并根据 Internet 上可用的数据执行递归。您可以将 BIND 配置为使用另一个 DNS 服务器( 转发器 )来解析查询。
当您将 BIND 配置为使用转发器时,查询和答案将在 IdM 服务器和转发器之间来回转发,IdM 服务器充当非权威数据的 DNS 缓存。
6.2. 在 IdM Web UI 中添加全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,在身份管理(IdM) Web UI 中添加一个全局 DNS 转发器。
先决条件
- 以 IdM 管理员身份登录到 IdM WebUI。
- 您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
流程
在 IdM Web UI 中,选择
Network Services→DNS Global Configuration→DNS。
在
DNS Global Configuration部分中,单击Add。
指定将接收转发 DNS 查询的 DNS 服务器的 IP 地址。
选择
Forward policy。
-
单击窗口顶部的
Save。
验证
选择
Network Services→DNS Global Configuration→DNS。
验证 IdM Web UI 中是否存在并启用了带有您指定的 forward 策略的全局转发器。
6.3. 在 CLI 中添加全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用命令行(CLI)添加一个全局 DNS 转发器。
先决条件
- 以 IdM 管理员身份登录。
- 您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
流程
使用
ipa dnsconfig-mod命令添加新的全局转发器。使用--forwarder选项指定 DNS 转发器的 IP 地址。ipa dnsconfig-mod --forwarder=10.10.0.1 Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
[user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1 Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用
dnsconfig-show命令显示全局转发器。ipa dnsconfig-show Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
[user@server ~]$ ipa dnsconfig-show Global forwarders: 10.10.0.1 IPA DNS servers: server.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 在 IdM Web UI 中添加 DNS 转发区域 复制链接链接已复制到粘贴板!
按照以下流程,在身份管理(IdM) Web UI 中添加一个 DNS 转发区。
除非绝对需要,否则请不要使用转发区域。转发区域不是标准解决方案,使用它们可能会导致意外和有问题的行为。如果您必须使用 forward zone,限制使用它们覆盖全局转发配置。
在创建新 DNS 区域时,红帽建议您始终使用名称服务器(NS)记录和避免转发区域,始终使用标准 DNS 委派。在大多数情况下,使用全局转发器足够了,并且转发区不需要。
先决条件
- 以 IdM 管理员身份登录到 IdM WebUI。
- 您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
流程
在 IdM Web UI 中,选择
Network Services→DNS Forward Zones→DNS。
在
DNS Forward Zones部分,点Add。
在
Add DNS forward zone窗口中,指定 forward zone 名称。
点击
Add按钮,并指定 DNS 服务器的 IP 地址来接收转发请求。您可以为每个转发区指定多个转发器。
选择
Forward policy。
-
单击窗口底部的
Add,以添加新的正向区域。
验证
在 IdM Web UI 中,选择
Network Services→DNS Forward Zones→DNS。
验证您创建的 forward 区域(带有您指定的 forwarders 和 forward 策略)是否存在并在 IdM Web UI 中启用。
6.5. 在 CLI 中添加 DNS 转发区域 复制链接链接已复制到粘贴板!
按照以下流程,使用命令行(CLI)添加一个 DNS 转发区域。
除非绝对需要,否则请不要使用转发区域。转发区域不是标准解决方案,使用它们可能会导致意外和有问题的行为。如果您必须使用 forward zone,限制使用它们覆盖全局转发配置。
在创建新 DNS 区域时,红帽建议您始终使用名称服务器(NS)记录和避免转发区域,始终使用标准 DNS 委派。在大多数情况下,使用全局转发器足够了,并且转发区不需要。
先决条件
- 以 IdM 管理员身份登录。
- 您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
流程
使用
dnsforwardzone-add命令添加新的转发区域。如果转发策略不是none,则使用--forwarder选项至少指定一个转发器,并使用--forward-policy选项指定转发策略。ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
[user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: firstCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用
dnsforwardzone-show命令显示您刚才创建的 DNS 转发区域。ipa dnsforwardzone-show forward.example.com. Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
[user@server ~]$ ipa dnsforwardzone-show forward.example.com. Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: firstCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. 使用 Ansible 在 IdM 中建立 DNS 全局转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 在 IdM 中建立一个 DNS 全局转发器。
在以下示例流程中,IdM 管理员创建了一个到互联网协议(IP)v4 地址为 8.8.6.6 和 IPv6 地址为 2001:4860:4860::8800 的 DNS 服务器,端口为 53 的 DNS 全局转发器。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制
set-configuration.ymlAnsible playbook 文件。例如:cp set-configuration.yml establish-global-forwarder.yml
$ cp set-configuration.yml establish-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开 create
-global-forwarder.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以在 IdM DNS 中建立全局转发器。 -
在
tasks部分中,更改任务的名称,来创建一个到 8.8.6.6 和 2001:4860:4860::8800 的 DNS 全局转发器。 在
freeipa.ansible_freeipa.ipadnsconfig部分的forwarders部分中:-
将第一个
ip_address值更改为全局转发器的 IPv4 地址:8.8.6.6。 -
将第二个
ip_address值更改为全局转发器的 IPv6 地址:2001:4860:4860::8800。 -
验证
端口值是否已设置为53。
-
将第一个
将
forward_policy更改为first。对于当前示例为修改过的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7. 使用 Ansible 确保 DNS 全局转发器在 IdM 中被禁用 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 全局转发器在 IdM 中被禁用。在以下示例中,IdM 管理员确保将全局转发器的转发策略设置为 none,这样可有效地禁用全局转发器。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
disable-global-forwarders.ymlAnsible playbook 文件的内容,它已配置为禁用所有 DNS 全局转发器。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.8. 使用 Ansible 确保 IdM 中存在 DNS 转发区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 转发区在 IdM 中存在。在以下示例中,IdM 管理员确保 example.com 的 DNS 转发区域存在到 Internet 协议(IP)地址为 8.8.8.8 的 DNS 服务器。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
forwarders-absent.ymlAnsible playbook 文件的副本。例如:cp forwarders-absent.yml ensure-presence-forwardzone.yml
$ cp forwarders-absent.yml ensure-presence-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-presence-forwardzone.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保 IdM DNS 中存在 dnsforwardzone。 -
在
tasks部分,更改任务的名称,来确保 example.com 到 8.8.8.8 的 dnsforwardzone 存在。 -
在
tasks部分中,将freeipa.ansible_freeipa.ipadnsconfig标题改为freeipa.ansible_freeipa.ipadnsforwardzone。 在
freeipa.ansible_freeipa.ipadnsforwardzone部分中:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
添加
name变量,并将它设置为example.com。 在
forwarders部分中:-
删除
ip_address和port行。 通过在短划线后指定 DNS 服务器的 IP 地址来添加 DNS 服务器的 IP 地址以接收转发的请求:
- 8.8.8.8
- 8.8.8.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
删除
-
添加
forwardpolicy变量,并将它设为第一。 -
添加
skip_overlap_check变量,并将它设为true。 -
将
state变量更改为present。
对于当前示例为修改过的 Ansible playbook 文件:
-
表示
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.9. 使用 Ansible 确保 DNS 转发区域 在 IdM 中有多个转发器 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 IdM 中的 DNS 转发区有多个转发器。在以下示例中,IdM 管理员确保 example .com 的 DNS 转发区转发到 8.8.8.8 和 4.4.4.4。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
forwarders-absent.ymlAnsible playbook 文件的副本。例如:cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml
$ cp forwarders-absent.yml ensure-presence-multiple-forwarders.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-presence-multiple-forwarders.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保 IdM DNS 中的 dnsforwardzone 中存在多个转发器。 -
在
tasks部分,更改任务的名称,来确保 example.com 的 dnsforwardzone 中存在 8.8.8.8 和 4.4.4.4 转发器。 -
在
tasks部分中,将freeipa.ansible_freeipa.ipadnsconfig标题改为freeipa.ansible_freeipa.ipadnsforwardzone。 在
freeipa.ansible_freeipa.ipadnsforwardzone部分中:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
添加
name变量,并将它设置为example.com。 在
forwarders部分中:-
删除
ip_address和port行。 添加您要确保的 DNS 服务器的 IP 地址,以短划线开头:
- 8.8.8.8 - 4.4.4.4
- 8.8.8.8 - 4.4.4.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
删除
- 将 state 变量更改为 present。
对于当前示例为修改过的 Ansible playbook 文件:
-
表示
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10. 使用 Ansible 确保 IdM 中禁用了 DNS 转发区 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 转发区在 IdM 中被禁用。在以下示例中,IdM 管理员确保 example.com 的 DNS 转发区被禁用。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
forwarders-absent.ymlAnsible playbook 文件的副本。例如:cp forwarders-absent.yml ensure-disabled-forwardzone.yml
$ cp forwarders-absent.yml ensure-disabled-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-disabled-forwardzone.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保在 IdM DNS 中禁用了 dnsforwardzone。 -
在
tasks部分中,更改任务的名称,来确保 example.com 的 dnsforwardzone 被禁用。 -
在
tasks部分中,将freeipa.ansible_freeipa.ipadnsconfig标题改为freeipa.ansible_freeipa.ipadnsforwardzone。 在
freeipa.ansible_freeipa.ipadnsforwardzone部分中:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
添加
name变量,并将它设置为example.com。 -
删除整个
forwarders部分。 -
将
state变量更改为disabled。
对于当前示例为修改过的 Ansible playbook 文件:
-
表示
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11. 使用 Ansible 确保 IdM 中没有 DNS 转发区域 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保 DNS 转发区在 IdM 中不存在。在以下示例中,IdM 管理员确保 example.com 缺少 DNS 转发区。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
流程
进到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 制作
forwarders-absent.ymlAnsible playbook 文件的副本。例如:cp forwarders-absent.yml ensure-absence-forwardzone.yml
$ cp forwarders-absent.yml ensure-absence-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
ensure-absence-forwardzone.yml文件进行编辑。 通过设置以下变量来调整文件:
-
将 playbook
的 name变量更改为 Playbook,以确保 IdM DNS 中没有 dnsforwardzone。 -
在
tasks部分中,更改任务的名称,来确保 example.com 的 dnsforwardzone 不存在。 -
在
tasks部分中,将freeipa.ansible_freeipa.ipadnsconfig标题改为freeipa.ansible_freeipa.ipadnsforwardzone。 在
freeipa.ansible_freeipa.ipadnsforwardzone部分中:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
添加
name变量,并将它设置为example.com。 -
删除整个
forwarders部分。 -
将
state变量保留为absent。
对于当前示例为修改过的 Ansible playbook 文件:
-
表示
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 playbook
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 在 IdM 中管理 DNS 记录 复制链接链接已复制到粘贴板!
本章论述了如何在身份管理(IdM)中管理 DNS 记录。作为 IdM 管理员,您可以在 IdM 中添加、修改和删除 DNS 记录。
7.1. 先决条件 复制链接链接已复制到粘贴板!
您的 IdM 部署包含一个集成的 DNS 服务器。有关如何使用集成 DNS 安装 IdM 的详情,请查看以下链接之一:
- 您了解 IdM 中存在哪些类型的 DNS 记录。
- 您了解 在 IdM 中添加、修改和删除最常见的 DNS 资源记录类型时有哪些可用的选项。
7.2. 在 IdM Web UI 中添加 DNS 资源记录 复制链接链接已复制到粘贴板!
按照以下流程,在 Identity Management (IdM) Web UI 中添加 DNS 资源记录。
先决条件
- 要添加 DNS 记录的 DNS 区域存在,并由 IdM 管理。有关在 IdM DNS 中创建 DNS 区域的更多信息,请参阅 在 IdM 中管理 DNS 区域。
- 以 IdM 管理员身份登录。
步骤
-
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。 - 点击您要添加 DNS 记录的 DNS 区域。
在
DNS Resource Records部分,点 来添加新记录。添加新 DNS 资源记录
选择要创建的记录类型,并根据需要填写其他字段。
定义新的 DNS 资源记录
- 单击 以确认新记录。
7.3. 从 IdM CLI 添加 DNS 资源记录 复制链接链接已复制到粘贴板!
按照以下流程,从命令行(CLI)添加任何类型的 DNS 资源记录。
先决条件
- 您要添加 DNS 记录的 DNS 区域存在。有关在 IdM DNS 中创建 DNS 区域的更多信息,请参阅 在 IdM 中管理 DNS 区域。
- 以 IdM 管理员身份登录。
步骤
要添加 DNS 资源记录,请使用
ipa dnsrecord-add命令。该命令采用以下语法:ipa dnsrecord-add zone_name record_name --record_type_option=data
$ ipa dnsrecord-add zone_name record_name --record_type_option=dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在以上命令中:
- zone_name 是正在向其添加记录的 DNS 区域的名称。
- record_name 是新 DNS 资源记录的标识符。
例如,要将 host1 的 A 类型 DNS 记录添加到 idm.example.com 区域,请输入:
ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123
$ ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. 在 IdM Web UI 中删除 DNS 记录 复制链接链接已复制到粘贴板!
您可以使用 IdM Web UI 在身份管理(IdM)中删除 DNS 记录。
先决条件
- 以 IdM 管理员身份登录。
步骤
-
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。 - 单击您要从中删除 DNS 记录的区域,如 example.com。
在
DNS Resource Records部分,点击资源记录的名称。选择 DNS 资源记录
- 按要删除的记录类型的名称选择复选框。
点
Delete。删除 DNS 资源记录
现在,所选的记录类型已被删除。资源记录的其他配置保持不变。
7.5. 在 IdM Web UI 中删除整个 DNS 记录 复制链接链接已复制到粘贴板!
按照以下流程,使用 Identity Management (IdM) Web UI 删除区域中特定资源的所有记录。
先决条件
- 以 IdM 管理员身份登录。
步骤
-
在 IdM Web UI 中,点击
Network Services→DNS→DNS Zones。 - 单击您要从中删除 DNS 记录的区域,如 zone.example.com。
-
在
DNS Resource Records部分,选中要删除的资源记录的复选框。 点。
删除 Entire 资源记录
现在,整个资源记录已被删除。
7.6. 删除 IdM CLI 中的 DNS 记录 复制链接链接已复制到粘贴板!
按照以下流程,从身份管理(IdM) DNS 管理的区中删除 DNS 记录。
先决条件
- 以 IdM 管理员身份登录。
步骤
要从区中删除记录,请使用
ipa dnsrecord-del命令,将--recordType-rec选项和记录值一起添加。例如,要删除 A 类型记录:ipa dnsrecord-del example.com www --a-rec 192.0.2.1
$ ipa dnsrecord-del example.com www --a-rec 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您运行没有任何选项的
ipa dnsrecord-del,命令会提示输入要删除的记录的信息。请注意,使用命令和-del-all选项会删除区域的所有相关记录。
第 8 章 使用 Ansible 管理 IdM 中的 DNS 记录 复制链接链接已复制到粘贴板!
本章论述了如何使用 Ansible playbook 管理身份管理(IdM)中的 DNS 记录。作为 IdM 管理员,您可以在 IdM 中添加、修改和删除 DNS 记录。
8.1. IdM 中的 DNS 记录 复制链接链接已复制到粘贴板!
身份管理(IdM)支持许多不同的 DNS 记录类型。以下 4 个是最常用的:
- A
这是主机名和 IPv4 地址的基本映射。A 记录的记录名称是主机名,如
www。A 记录的IP Address值是一个 IPv4 地址,如192.0.2.1。有关 A 记录的更多信息,请参阅 RFC 1035。
- AAAA
这是主机名和 IPv6 地址的基本映射。AAAA 记录的记录名称是主机名,如
www。IP Address值是一个 IPv6 地址,如2001:DB8::1111。有关 AAAA 记录的更多信息,请参阅 RFC 3596。
- SRV
服务(SRV)资源记录将服务名称映射到 提供该特定服务的服务器的 DNS 名称。例如,此记录类型可将 LDAP 目录等服务映射到管理此目录的服务器。
SRV 记录的记录名称格式为
_service. _protocol,如_ldap._tcp。SRV 记录的配置选项包括目标服务的优先级、权重、端口号和主机名。有关 SRV 记录的详情请参考 RFC 2782。
- PTR
指针记录(PTR)添加反向 DNS 记录,它将 IP 地址映射到域名。
注意IPv4 地址的所有反向 DNS 查找都使用在
in-addr.arpa.域中定义的反向条目。反向地址(人类可读形式)与常规 IP 地址正好相反,其中in-addr.arpa.域附加到该地址。例如,对于网络地址192.0.2.0/24,反向区域为2.0.192.in-addr.arpa。PTR 的记录名称必须采用 RFC 1035 中指定的标准格式,以 RFC 23 17 和 RFC 3596 扩展。主机名值必须是您要为其创建记录的主机的规范主机名。
注意使用
.ip6.arpa.域中的区域,也可以为 IPv6 地址配置反向区域。有关 IPv6 反向区的更多信息,请参阅 RFC 3596。
添加 DNS 资源记录时,请注意很多记录需要不同的数据。例如,CNAME 记录需要主机名,而 A 记录则需要 IP 地址。在 IdM Web UI 中,用于添加新记录的表单中的字段会自动更新,以反映当前所选记录类型所需的数据。
8.2. Common ipa dnsrecord-* 选项 复制链接链接已复制到粘贴板!
在身份管理(IdM)中添加、修改和删除最常见的 DNS 资源记录类型时,您可以使用以下选项:
- A (IPv4)
- AAAA (IPv6)
- SRV
- PTR
在 Bash 中,您可以通过列出大括号内的逗号分隔列表中的值来定义多个条目,如 --option={val1,val2,val3}。
| 选项 | 描述 |
|---|---|
|
| 为记录设置生存时间。 |
|
| 解析原始 DNS 记录,并以结构化格式返回它们。 |
| 选项 | 描述 | 示例 |
|---|---|---|
|
| 传递单个 A 记录或 A 记录列表. |
|
| 可以使用给定 IP 地址创建通配符 A 记录. |
| |
|
|
提供 记录的 IP 地址。在创建记录时,指定 |
|
[a]
这个示例创建了一个通配符 A 记录,其 IP 地址为 192.0.2.123。
| ||
| 选项 | 描述 | 示例 |
|---|---|---|
|
| 传递单个 AAAA(IPv6)记录或 AAAA 记录列表。 |
|
|
|
提供 记录的 IPv6 地址。在创建记录时,指定 |
|
| 选项 | 描述 | 示例 |
|---|---|---|
|
|
传递单个 PTR 记录或 PTR 记录列表。添加反向 DNS 记录时,与添加其他 DNS 记录的用法不同,与 |
|
|
| ||
|
| 提供记录的主机名。 |
| 选项 | 描述 | 示例 |
|---|---|---|
|
|
传递单个 SRV 记录或 SRV 记录列表。在右侧的示例中,_ ldap._tcp 定义 SRV 记录的服务类型和连接协议。 |
|
|
| ||
|
| 设置记录的优先级。某一服务类型可以有多个 SRV 记录。优先级(0 - 65535)设置记录的排名;数值越低,优先级越高。服务必须首先使用优先级最高的记录。 |
|
|
| 设置记录的权重。这有助于确定优先级相同的 SRV 记录的顺序。集合权重应加到 100,代表使用特定记录的可能性(百分比)。 |
|
|
| 指定目标主机上 服务的端口。 |
|
|
| 指定目标主机的域名。如果域中的服务不可用,这可以是单个句点(.)。 |
8.3. 确保使用 Ansible 在 IdM 中存在 A 和 AAAA DNS 记录 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保特定 IdM 主机的 A 和 AAAA 记录存在。在下面的示例中,IdM 管理员确保 idm.example.com DNS 区域中存在 host1 的 A 和 AAAA 记录。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - idm.example.com 区域存在,并由 IdM DNS 管理。有关在 IdM DNS 中添加主 DNS 区域的更多信息,请参阅使用 Ansible playbook 管理 IdM DNS 区域。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 ensure-A- and-AAAA-records-are-present.yml Ansible playbook 文件的副本。例如:
cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml
$ cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 ensure-A-and-AAAA-records-are-present-copy.yml 文件以进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsrecord任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
zone_name变量设置为 idm.example.com。 -
在
records变量中,将name变量设置为 host1,并将a_ip_address变量设置为 192.168.122.123。 在
records变量中,将name变量设置为 host1,并将aaaa_ip_address变量设置为 ::1。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. 确保使用 Ansible 在 IdM 中存在 A 和 PTR DNS 记录 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保特定 IdM 主机的 A 记录存在,且有相应的 PTR 记录。在以下流程中使用的示例中,IdM 管理员确保在 idm.example.com 区域中存在 IP 地址为 192.168.122.45 的 host1 的 A 和 PTR 记录。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - idm.example.com DNS 区域存在,并由 IdM DNS 管理。有关在 IdM DNS 中添加主 DNS 区域的更多信息,请参阅使用 Ansible playbook 管理 IdM DNS 区域。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 ensure-dnsrecord-with-reverse-is-present.yml Ansible playbook 文件的副本。例如:
cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml
$ cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 ensure-dnsrecord-with-reverse-is-present-copy.yml 文件以进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsrecord任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
name变量设置为 host1。 -
将
zone_name变量设置为 idm.example.com。 -
将
ip_address变量设置为 192.168.122.45。 将
create_reverse变量设置为 true。这是当前示例修改的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5. 确保使用 Ansible 在 IdM 中存在多个 DNS 记录 复制链接链接已复制到粘贴板!
按照以下流程,使用 Ansible playbook 确保多个值与特定 IdM DNS 记录相关联。在以下流程中使用的示例中,IdM 管理员确保 idm.example.com DNS 区域中存在 host1 的多个 A 记录。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - idm.example.com 区域存在,并由 IdM DNS 管理。有关在 IdM DNS 中添加主 DNS 区域的更多信息,请参阅使用 Ansible playbook 管理 IdM DNS 区域。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 ensure-presence-multiple-records.yml Ansible playbook 文件的副本。例如:
cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml
$ cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 ensure-presence-multiple-records-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsrecord任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
在
records部分中,将name变量设置为 host1。 -
在
records部分中,将zone_name变量设置为 idm.example.com。 -
在
records部分中,将a_rec变量设置为 192.168.122.112,并将 192.168.122.1 22 设为 192.168.122.122。 在
records部分中定义第二个记录:-
将
name变量设置为 host1。 -
将
zone_name变量设置为 idm.example.com。 -
将
aaaa_rec变量设置为 ::1。
这是当前示例修改的 Ansible playbook 文件:
-
将
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6. 确保使用 Ansible 在 IdM 中存在多个 CNAME 记录 复制链接链接已复制到粘贴板!
Canonical Name 记录(CNAME 记录)是在域名系统(DNS)中一种资源记录类型,用于将一个域名、别名映射到另一个名称,即规范名称。
从单个 IP 地址运行多个服务时,您可能会发现 CNAME 记录很有用:例如,FTP 服务和 Web 服务,每个服务在不同端口上运行。
按照以下流程,使用 Ansible playbook 确保多个 CNAME 记录在 IdM DNS 中存在。在以下步骤中使用的示例中,host03 同时是 HTTP 服务器和 FTP 服务器。IdM 管理员确保在 idm.example.com 区域中存在 host03 A 记录的 www 和 ftp CNAME 记录。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - idm.example.com 区域存在,并由 IdM DNS 管理。有关在 IdM DNS 中添加主 DNS 区域的更多信息,请参阅使用 Ansible playbook 管理 IdM DNS 区域。
- host03 A 记录存在于 idm.example.com 区域中。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 ensure-CNAME-record-is-present.yml Ansible playbook 文件的副本。例如:
cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml
$ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 ensure-CNAME-record-is-present-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsrecord任务部分设置以下变量来调整文件:-
可选:调整 play 的
名称提供的描述。 -
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
zone_name变量设置为 idm.example.com。 在 Record
变量部分中,设置以下变量和值:-
将
name变量设置为 www。 -
将
cname_hostname变量设置为 host03。 -
将
name变量设置为 ftp。 -
将
cname_hostname变量设置为 host03。
这是当前示例修改的 Ansible playbook 文件:
-
将
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:调整 play 的
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.7. 使用 Ansible 在 IdM 中存在 SRV 记录 复制链接链接已复制到粘贴板!
DNS 服务 (SRV) 记录定义域中可用服务的主机名、端口号、传输协议、优先级和权重。在 Identity Management(IdM)中,您可以使用 SRV 记录来定位 IdM 服务器和副本。
按照以下流程,使用 Ansible playbook 确保 SRV 记录在 IdM DNS 中存在。在以下示例中,IdM 管理员可确保存在 _kerberos._udp.idm.example.com SRV 记录,其值为 10 50 88 idm.example.com。这会设置以下值:
- 它将服务的优先级设置为 10。
- 它将服务的权重设置为 50。
- 它将服务要使用的端口设置为 88。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
您已安装了
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(也就是在其上执行
freeipa.ansible_freeipa模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 - idm.example.com 区域存在,并由 IdM DNS 管理。有关在 IdM DNS 中添加主 DNS 区域的更多信息,请参阅使用 Ansible playbook 管理 IdM DNS 区域。
流程
进入到
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord目录:cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 ensure-SRV-record-is-present.yml Ansible playbook 文件的副本。例如:
cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml
$ cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 ensure-SRV-record-is-present-copy.yml 文件进行编辑。
通过在
freeipa.ansible_freeipa.ipadnsrecord任务部分设置以下变量来调整文件:-
表示
ipaadmin_password变量的值已在 secret.yml Ansible vault 文件中定义。 -
将
name变量设置为 _kerberos._udp.idm.example.com。 -
将
srv_rec变量设置为 '10 50 88 idm.example.com'。 将
zone_name变量设置为 idm.example.com。对于当前示例为修改过的 Ansible playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
表示
- 保存这个文件。
运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 在 IdM 中使用规范的 DNS 主机名 复制链接链接已复制到粘贴板!
默认情况下,在 Identity Management(IdM)客户端上禁用 DNS 规范,以避免潜在的安全风险。例如,如果攻击者控制了域中的 DNS 服务器和一个主机,攻击者可能会导致在用户使用短主机名(如 demo )时将其解析到被入侵的主机,如 malicious.example.com。在这种情况下,用户连接到与预期不同的服务器。
这个流程描述了如何在 IdM 客户端上使用规范的主机名。
9.1. 向主机主体中添加别名 复制链接链接已复制到粘贴板!
默认情况下,使用 ipa-client-install 命令注册的 Identity Management(IdM)客户端不允许在服务主体中使用短主机名。例如,在访问服务时,用户只能使用 host/demo.example.com@EXAMPLE.COM 而不是 host/demo@EXAMPLE.COM。
按照以下流程,向 Kerberos 主体中添加别名。请注意,您也可以在 /etc/krb5.conf 文件中启用主机名的规范。详情请参阅 在客户端上的服务主体中启用主机名规范。
先决条件
- IdM 客户端已安装。
- 主机名在网络中是唯一的。
步骤
以
admin用户身份向 IdM 进行身份验证:kinit admin
$ kinit adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将别名添加到主机主体。例如,要在
demo.examle.com主机主体中添加demo别名:ipa host-add-principal demo.example.com --principal=demo
$ ipa host-add-principal demo.example.com --principal=demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. 在客户端的服务主体中启用主机名规范 复制链接链接已复制到粘贴板!
按照以下流程,在客户端的服务主体中启用主机名的规范。
- 注意
如果您使用主机主体别名,如 向主机主体中添加别名 中所述,则不需要启用规范。
先决条件
- 已安装 Identity Management(IdM)客户端。
-
以
root用户身份登录到 IdM 客户端。 - 主机名在网络中是唯一的。
流程
将
/etc/krb5.conf文件中的[libdefaults]部分中的dns_canonicalize_hostname参数设置为false:[libdefaults] ... dns_canonicalize_hostname = true
[libdefaults] ... dns_canonicalize_hostname = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 使用启用了 DNS 主机名规范的主机名的选项 复制链接链接已复制到粘贴板!
如果您在 /etc/krb5.conf 文件中设置了 dns_canonicalize_hostname = true,如 在客户端上的服务主体中启用主机名规范 中所述,在服务主体中使用主机名时,您有如下选择:
-
在 Identity Management(IdM)环境中,您可以在服务主体中使用完整主机名,如
host/demo.example.com@EXAMPLE.COM。 - 在没有 IdM 的环境中,但如果 RHEL 主机作为 Active Directory(AD)域的成员,则不需要进一步考虑,因为 AD 域控制器(DC)自动为注册到 AD 的机器的 NetBIOS 名称创建服务主体。
第 10 章 自定义 BIND 日志记录 复制链接链接已复制到粘贴板!
作为身份管理(IdM)管理员,您可以通过自定义 BIND 在哪里写入其日志并确保 SELinux 允许访问这些自定义路径来提高可见性并保持安全性。
10.1. 自定义 BIND 日志路径 复制链接链接已复制到粘贴板!
您可以使用 ipa-logging-ext.conf 文件自定义 BIND 日志的路径。
流程
打开
/etc/named/目录中的ipa-logging-ext.conf文件,并使用您的文件路径添加或修改日志记录渠道:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 BIND 服务器:
systemctl restart named
# systemctl restart namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. 为 BIND 自定义日志记录扩展 SELinux 策略 复制链接链接已复制到粘贴板!
您可以扩展 SELinux 策略,来包含 BIND 日志。
流程
创建日志目录:
mkdir -p /var/log/named chown named:named /var/log/named chmod 750 /var/log/named
# mkdir -p /var/log/named # chown named:named /var/log/named # chmod 750 /var/log/namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
named_log_tSELinux 上下文分配给新目录和日志文件:semanage fcontext -a -t named_log_t "/var/log/named(/.)?"* restorecon -Rv /var/log/named
# semanage fcontext -a -t named_log_t "/var/log/named(/.)?"* # restorecon -Rv /var/log/namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 BIND 服务器:
systemctl restart named
# systemctl restart namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示自定义日志文件:
tail -f /var/log/named/ipa_dns_queries.log
$ tail -f /var/log/named/ipa_dns_queries.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow