第 4 章 使用系统角色配置网络连接

RHEL 上的 network 系统角色可让管理员使用 Ansible 自动执行与网络相关的配置和管理任务。

4.1. 配置以太网连接

这部分论述了如何使用静态和动态 IP 地址配置以太网连接的不同方法。

4.1.1. 使用 RHEL 系统角色配置静态以太网连接

此流程描述了如何通过运行 Ansible playbook 来使用 RHEL 系统角色远程为带有以下设置的 enp7s0 接口添加以太网连接:

  • 静态 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

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

先决条件

  • 在控制节点上安装 ansiblerhel-system-roles 软件包。
  • 如果您运行 playbook 时使用了与 root 不同的远程用户, 则此用户在受管节点上需要具有适当的sudo 权限。
  • 主机使用 NetworkManager 配置网络。

流程

  1. 如果要执行 playbook 中说明的主机尚未撤离,请将此主机的 IP 或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/ethernet-static-IP.yml playbook:

    ---
    - name: Configure an Ethernet connection with static IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              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
              state: up
  3. 运行 playbook:

    • root 用户身份连接到受管主机,输入:

      # ansible-playbook -u root ~/ethernet-static-IP.yml
    • 要以用户连接到受管主机,请输入:

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

      --ask-become-pass 选项可定义该 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户的 sudo 密码。

    如果没有指定 -u user_name 选项,请以当前登录到控制节点的用户 ansible-playbook 连接到受管主机。

其它资源

  • 有关使用的参数 network_connections 以及该 network 系统角色的额外信息,请查看该 /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件。
  • 有关该 ansible-playbook 命令的详情请参考 ansible-playbook(1) man page。

4.1.2. 使用 RHEL 系统角色配置动态以太网连接

此流程描述了如何使用 RHEL 系统角色通过运行 Ansible playbook 为 enp7s0 接口远程添加动态以太网连接。在这个设置中,网络连接从 DHCP 服务器请求这个连接的 IP 设置。在 Ansible 控制节点上运行此步骤。

先决条件

  • 网络中有 DHCP 服务器。
  • 在控制节点上安装 ansiblerhel-system-roles 软件包。
  • 如果您运行 playbook 时使用了与 root 不同的远程用户, 则此用户在受管节点上需要具有适当的sudo 权限。
  • 主机使用 NetworkManager 配置网络。

流程

  1. 如果要执行 playbook 中说明的主机尚未撤离,请将此主机的 IP 或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/ethernet-dynamic-IP.yml playbook:

    ---
    - name: Configure an Ethernet connection with dynamic IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                dhcp4: yes
                auto6: yes
              state: up
  3. 运行 playbook:

    • root 用户身份连接到受管主机,输入:

      # ansible-playbook -u root ~/ethernet-dynamic-IP.yml
    • 要以用户连接到受管主机,请输入:

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

      --ask-become-pass 选项可定义该 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户的 sudo 密码。

    如果没有指定 -u user_name 选项,请以当前登录到控制节点的用户 ansible-playbook 连接到受管主机。

其它资源

  • 有关使用的参数 network_connections 以及 network 系统角色的额外信息,请查看 /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件。
  • 有关 ansible-playbook 命令的详情,请参考 ansible-playbook(1) man page。

4.2. 使用 802.1X 标准向网络验证 RHEL 客户端

管理员通常使用基于 IEEE 802.1X 标准的基于端口的网络访问控制(NAC)来保护网络不受未授权 LAN 和 Wi-Fi 客户端的影响。本节中的步骤描述了配置网络身份验证的不同选项。

4.2.1. 使用 RHEL 系统角色通过 802.1X 网络身份验证配置静态以太网连接

使用 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
  • 802.1X 网络验证使用 TLS 可扩展验证协议(EAP)

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

先决条件

  • 在控制节点上安装 ansiblerhel-system-roles 软件包。
  • 如果您运行 playbook 时使用了与 root 不同的远程用户, 则此用户在受管节点上需要具有适当的 sudo 权限。
  • 网络支持 802.1X 网络身份验证。
  • 受管节点使用 NetworkManager。
  • control 节点上存在 TLS 身份验证所需的以下文件:

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

流程

  1. 如果要执行 playbook 中说明的主机尚未撤离,请将主机的 IP 地址或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/enable-802.1x.yml playbook:

    ---
    - 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. 运行 playbook:

    • root 用户身份连接到受管主机,输入:

      # ansible-playbook -u root ~/enable-802.1x.yml
    • 要以用户连接到受管主机,请输入:

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

      --ask-become-pass 选项可定义该 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户的 sudo 密码。

    如果没有指定 -u user_name 选项,请以当前登录到控制节点的用户 ansible-playbook 连接到受管主机。

其它资源

  • 有关使用的参数 network_connections 以及 network 系统角色的额外信息,请查看 /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件。
  • 有关 802.1X 参数的详情,请查看文件中的 ieee802_1x 章节 /usr/share/ansible/roles/rhel-system-roles.network/README.md
  • 有关 ansible-playbook 命令的详情请参考 ansible-playbook(1) man page。

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。