Red Hat Training

A Red Hat training course is available for RHEL 8

18.3. 使用 RHEL 系统角色配置带有 802.1X 网络身份验证的静态以太网连接

使用 network RHEL 系统角色,您可以自动创建使用 802.1X 标准的以太网连接来验证客户端。例如,通过运行 Ansible playbook 为 enp1s0 接口远程添加以太网连接:

  • 静态 IPv4 地址 - 192.0.2.1/24 子网掩码
  • 静态 IPv6 地址 - 2001:db8:1::1/64 子网掩码
  • IPv4 默认网关 - 192.0.2.254
  • IPv6 默认网关 - 2001:db8:1::fffe
  • IPv4 DNS 服务器 - 192.0.2.200
  • IPv6 DNS 服务器 - 2001:db8:1::ffbb
  • DNS 搜索域 - example.com
  • 使用 TLS 可扩展身份验证协议(EAP)进行 802.1X 网络身份验证.

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

前提条件

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

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

步骤

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

    ---
    - name: Configure an Ethernet 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: 0600
    
        - 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"
    
        - include_role:
            name: rhel-system-roles.network
    
          vars:
            network_connections:
              - name: enp1s0
                type: ethernet
                autoconnect: yes
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                  gateway4: 192.0.2.254
                  gateway6: 2001:db8:1::fffe
                  dns:
                    - 192.0.2.200
                    - 2001:db8:1::ffbb
                  dns_search:
                    - example.com
                ieee802_1x:
                  identity: user_name
                  eap: tls
                  private_key: "/etc/pki/tls/private/client.key"
                  private_key_password: "password"
                  client_cert: "/etc/pki/tls/certs/client.crt"
                  ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt"
                  domain_suffix_match: example.com
                state: up
  2. 运行 playbook:

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

其他资源

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