Red Hat Training

A Red Hat training course is available for RHEL 8

3.7. 使用 RHEL 系统角色使用 802.1X 网络身份验证配置 Wi-Fi 连接

使用 RHEL 系统角色,您可以自动创建 Wi-Fi 连接。例如,您可以使用 Ansible playbook 为 wlp1s0 接口远程添加无线连接配置集。创建的配置集使用 802.1X 标准将客户端验证到 Wi-Fi 网络。该 playbook 将连接配置集配置为使用 DHCP。要配置静态 IP 设置,相应地调整 ip 字典中的参数。

在 Ansible 控制节点上执行此步骤。

前提条件

  • 您已准备了控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接受管节点的帐户具有 sudo 权限。
  • 运行此 playbook 的主机或主机组列在 Ansible 清单文件中。
  • 网络支持 802.1X 网络身份验证。
  • 您已在受管节点上安装了 wpa_supplicant 软件包。
  • DHCP 位于受管节点的网络中。
  • control 节点上存在 TLS 身份验证所需的以下文件:

    • 客户端密钥存储在 /srv/data/client.key 文件中。
    • 客户端证书存储在 /srv/data/client.crt 文件中。
    • CA 证书存储在 /srv/data/ca.crt 文件中。

流程

  1. 创建包含以下内容的 playbook 文件,如 ~/enable-802.1x.yml

    ---
    - name: Configure a wifi connection with 802.1X authentication
      hosts: "managed-node-01.example.com"
      tasks:
        - name: Copy client key for 802.1X authentication
          copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0400
    
        - name: Copy client certificate for 802.1X authentication
          copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - block:
            - import_role:
                name: linux-system-roles.network
              vars:
                network_connections:
                  - name: Configure the Example-wifi profile
                    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/client.key"
                      private_key_password: "password"
                      private_key_password_flags: none
                      client_cert: "/etc/pki/tls/client.pem"
                      ca_cert: "/etc/pki/tls/cacert.pem"
                      domain_suffix_match: "example.com"
  2. 运行 playbook:

    # ansible-playbook ~/enable-802.1x.yml

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件