18.6. 使用 network RHEL 系统角色配置带有 802.1X 网络身份验证的 wifi 连接
网络访问控制(NAC)保护网络不受未授权客户端的访问。您可以在 NetworkManager 连接配置文件中指定身份验证所需的详情,以使客户端可以访问网络。通过使用 Ansible 和 network RHEL 系统角色,您可以自动化此过程,并在 playbook 中定义的主机上远程配置连接配置文件。
您可以使用 Ansible playbook 将私钥、证书和 CA 证书复制到客户端,然后使用 network RHEL 系统角色配置具有 802.1X 网络身份验证的连接配置文件。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo权限。 - 网络支持 802.1X 网络身份验证。
-
您已在受管节点上安装了
wpa_supplicant软件包。 - DHCP 位于受管节点的网络中。
control 节点上存在 TLS 身份验证所需的以下文件:
-
客户端密钥存储在
/srv/data/client.key文件中。 -
客户端证书存储在
/srv/data/client.crt文件中。 -
CA 证书存储在
/srv/data/ca.crt文件中。
-
客户端密钥存储在
流程
将敏感变量存储在加密的文件中:
创建 vault :
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>在
ansible-vault create命令打开编辑器后,以<key>: <value>格式输入敏感数据:pwd: <password>- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml:--- - name: Configure a wifi connection with 802.1X authentication hosts: managed-node-01.example.com vars_files: - ~/vault.yml tasks: - name: Copy client key for 802.1X authentication ansible.builtin.copy: src: "/srv/data/client.key" dest: "/etc/pki/tls/private/client.key" mode: 0400 - name: Copy client certificate for 802.1X authentication ansible.builtin.copy: src: "/srv/data/client.crt" dest: "/etc/pki/tls/certs/client.crt" - name: Copy CA certificate for 802.1X authentication ansible.builtin.copy: src: "/srv/data/ca.crt" dest: "/etc/pki/ca-trust/source/anchors/ca.crt" - name: Wifi connection profile with dynamic IP address settings and 802.1X ansible.builtin.import_role: name: redhat.rhel_system_roles.network vars: network_connections: - name: Wifi connection profile with dynamic IP address settings and 802.1X interface_name: wlp1s0 state: up type: wireless autoconnect: yes ip: dhcp4: true auto6: true wireless: ssid: "Example-wifi" key_mgmt: "wpa-eap" ieee802_1x: identity: <user_name> eap: tls private_key: "/etc/pki/tls/private/client.key" private_key_password: "{{ pwd }}" private_key_password_flags: none client_cert: "/etc/pki/tls/certs/client.crt" ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt" domain_suffix_match: "example.com" network_allow_restart: true示例 playbook 中指定的设置包括如下:
ieee802_1x- 此变量包含与 802.1X 相关的设置。
eap: tls-
将配置文件配置为对可扩展身份验证协议(EAP)使用基于证书的
TLS身份验证方法。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.network/README.md文件。验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook.yml