13.2. vpn 시스템 역할을 사용하여 IPsec과 opportunistic mesh VPN 연결 생성

vpn System Role을 사용하여 제어 노드에서 Ansible 플레이북을 실행하여 인증에 인증서를 사용하는 opportunistic 메시 VPN 연결을 구성할 수 있습니다. 그러면 인벤토리 파일에 나열된 모든 관리형 노드를 구성할 수 있습니다.

인증서를 사용한 인증은 플레이북에 auth_method: cert 매개변수를 정의하여 구성됩니다. vpn 시스템 역할은 /etc/ipsec.d 디렉터리에 정의된 IPsec 네트워크 보안 서비스(NSS) 암호화 라이브러리에 필요한 인증서가 포함되어 있다고 가정합니다. 기본적으로 노드 이름은 인증서 닉네임으로 사용됩니다. 이 예제에서는 managed_node1 입니다. 인벤토리의 cert_name 특성을 사용하여 다른 인증서 이름을 정의할 수 있습니다.

다음 예제 절차에서 Ansible 플레이북을 실행하는 시스템인 제어 노드는 관리형 노드(192.0.2.0/24)와 동일한 클래스의 도메인 간 라우팅(CIDR) 번호를 공유하며, IP 주소 192.0.2.7이 있습니다. 따라서 제어 노드는 CIDR 192.0.2.0/24에 대해 자동으로 생성되는 개인 정책에 속합니다.

플레이 중에 SSH 연결 손실을 방지하기 위해 제어 노드에 대한 명확한 정책이 정책 목록에 포함됩니다. CIDR이 기본값과 같은 정책 목록에도 항목이 있습니다. 이 플레이북은 기본 정책의 규칙을 재정의하여 private-or-clear 대신 비공개로 만들기 때문입니다.

사전 요구 사항

  • vpn 시스템 역할로 구성하려는 시스템인 하나 이상의 관리형 노드에 액세스하고 권한을 부여합니다.

    • 모든 관리형 노드에서 /etc/ipsec.d 디렉터리의 NSS 데이터베이스에는 피어 인증에 필요한 모든 인증서가 포함되어 있습니다. 기본적으로 노드 이름은 인증서 닉네임으로 사용됩니다.
  • Red Hat Ansible Core가 기타 시스템을 구성하는 시스템인 제어 노드 액세스 및 사용 권한.

    제어 노드에서 다음이 있어야 합니다.

    • ansible-corerhel-system-roles 패키지가 설치됩니다.
중요

RHEL 8.0-8.5는 Ansible 기반 자동화를 위해 Ansible Engine 2.9가 포함된 별도의 Ansible 리포지토리에 대한 액세스를 제공했습니다. Ansible Engine에는 ansible , ansible -playbook, dockerpodman 과 같은 커넥터, 여러 플러그인 및 모듈과 같은 명령줄 유틸리티가 포함되어 있습니다. Ansible Engine을 확보하고 설치하는 방법에 대한 자세한 내용은 Red Hat Ansible Engine 지식베이스를 다운로드하고 설치하는 방법 문서를 참조하십시오.

RHEL 8.6 및 9.0에서는 Ansible 명령줄 유틸리티, 명령 및 소규모의 기본 제공 Ansible 플러그인 세트가 포함된 Ansible Core( ansible-core 패키지로 제공)를 도입했습니다. RHEL은 AppStream 리포지토리를 통해 이 패키지를 제공하며 제한된 지원 범위를 제공합니다. 자세한 내용은 RHEL 9 및 RHEL 8.6 이상 AppStream 리포지토리 지식 베이스에 포함된 Ansible Core 패키지에 대한 지원 범위를 참조하십시오.

  • 관리 노드를 나열하는 인벤토리 파일.

절차

  1. 다음 내용으로 새 playbook.yml 파일을 생성합니다.

    - name: Mesh VPN
      hosts: managed_node1, managed_node2, managed_node3
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - opportunistic: true
            auth_method: cert
            policies:
              - policy: private
                cidr: default
              - policy: private-or-clear
                cidr: 198.51.100.0/24
              - policy: private
                cidr: 192.0.2.0/24
              - policy: clear
                cidr: 192.0.2.7/32
  2. 선택 사항: 환경 설정에 따라 변수를 수정할 수 있습니다. 자세한 내용은 /usr/share/doc/rhel-system-roles/vpn/README.md 파일을 참조하십시오.
  3. 선택 사항: 플레이북 구문을 확인합니다.

    # ansible-playbook --syntax-check playbook.yml
  4. 인벤토리 파일에서 플레이북을 실행합니다.

    # ansible-playbook -i inventory_file /path/to/file/playbook.yml