Red Hat Training

A Red Hat training course is available for RHEL 8

17.2. Configuración de una conexión Ethernet estática con autenticación de red 802.1X mediante RHEL System Roles

Utilizando RHEL System Roles, puede automatizar la creación de una conexión Ethernet que utilice el estándar 802.1X para autenticar al cliente. Este procedimiento describe cómo añadir remotamente una conexión Ethernet para la interfaz enp1s0 con la siguiente configuración mediante la ejecución de un playbook de Ansible:

  • Una dirección IPv4 estática - 192.0.2.1 con una máscara de subred /24
  • Una dirección IPv6 estática - 2001:db8:1::1 con una máscara de subred /64
  • Una pasarela por defecto IPv4 - 192.0.2.254
  • Una pasarela por defecto IPv6 - 2001:db8:1::fffe
  • Un servidor DNS IPv4 - 192.0.2.200
  • Un servidor DNS IPv6 - 2001:db8:1::ffbb
  • Un dominio de búsqueda DNS - example.com
  • 802.Autenticación de red 1X mediante el protocolo de autenticación extensible (EAP) TLS

Ejecute este procedimiento en el nodo de control de Ansible.

Requisitos previos

  • Los paquetes ansible y rhel-system-roles se instalan en el nodo de control.
  • Si utiliza un usuario remoto diferente a root cuando ejecuta el libro de jugadas, debe tener los permisos apropiados de sudo en el nodo gestionado.
  • La red es compatible con la autenticación de red 802.1X.
  • El nodo gestionado utiliza NetworkManager.
  • Los siguientes archivos necesarios para la autenticación TLS existen en el nodo de control:

    • La clave del cliente almacenada en el archivo /srv/data/client.key.
    • El certificado del cliente almacenado en el archivo /srv/data/client.crt.
    • El certificado de la Autoridad de Certificación (CA) almacenado en el archivo /srv/data/ca.crt.

Procedimiento

  1. Si el host en el que desea ejecutar las instrucciones del libro de jugadas aún no está inventariado, añada la IP o el nombre de este host al archivo de inventario de Ansible /etc/ansible/hosts:

    node.example.com
  2. Cree el libro de jugadas ~/enable-802.1x.yml con el siguiente contenido:

    ---
    - name: Configure an Ethernet connection with 802.1X authentication
      hosts: node.example.com
      become: true
      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: linux-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
  3. Ejecuta el libro de jugadas:

    • Para conectarse como usuario de root al host gestionado, introduzca:

      # ansible-playbook -u root ~/enable-802.1x.yml
    • Para conectarse como usuario al host gestionado, introduzca:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      La opción --ask-become-pass asegura que el comando ansible-playbook solicite la contraseña sudo del usuario definido en la opción -u user_name opción.

    Si no se especifica la opción -u user_name ansible-playbook se conecta al host gestionado como el usuario que ha iniciado la sesión en el nodo de control.

Recursos adicionales

  • Para obtener detalles sobre los parámetros utilizados en network_connections y para obtener información adicional sobre el rol del sistema network, consulte el archivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para más detalles sobre los parámetros 802.1X, consulte la sección ieee802_1x en el archivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obtener más información sobre el comando ansible-playbook, consulte la página de manual ansible-playbook(1).