16.2. vpn 시스템 역할을 사용하여 IPsec과 opportunistic 메시 VPN 연결 생성
vpn
시스템 역할을 사용하여 제어 노드에서 Ansible 플레이북을 실행하여 인증에 대한 인증서를 사용하는 운영 체제 메시 VPN 연결을 구성할 수 있습니다. 이 연결은 인벤토리 파일에 나열된 모든 관리형 노드를 구성합니다.
인증서를 사용한 인증은 플레이북에서 auth_method: cert
매개 변수를 정의하여 구성됩니다. vpn
시스템 역할은 /etc/ipsec.d
디렉터리에 정의된 IPsec 네트워크 보안 서비스(NSS) 암호화 라이브러리에 필요한 인증서가 포함되어 있다고 가정합니다. 기본적으로 노드 이름은 인증서 닉네임으로 사용됩니다. 이 예에서는 managed_node1
입니다. 인벤토리의 cert_name
특성을 사용하여 다른 인증서 이름을 정의할 수 있습니다.
다음 예제 프로세스에서는 Ansible 플레이북을 실행할 시스템인 제어 노드는 관리 노드(1922.0.2.0/24)와 동일한 CIDR(Classless inter-domain routing) 번호를 공유하며 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-core
및rhel-system-roles
패키지가 설치됩니다.
-
RHEL 8.0-8.5는 Ansible 기반 자동화를 위해 Ansible Engine 2.9가 포함된 별도의 Ansible 리포지토리에 대한 액세스를 제공했습니다. Ansible Engine에는 ansible
, ansible-playbook
, docker
및 podman
과 같은 커넥터, 여러 플러그인 및 모듈과 같은 명령줄 유틸리티가 포함되어 있습니다. 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 패키지에 대한 지원 범위에 대한 지식베이스 문서를 참조하십시오.
- 관리 노드를 나열하는 인벤토리 파일.
절차
다음 내용으로 새
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 vpn_manage_firewall: true vpn_manage_selinux: true
참고vpn_manage_firewall
및vpn_manage_selinux
둘 다true
로 설정되므로vpn
역할은firewall
및selinux
역할을 사용하여vpn
역할에서 사용하는 포트를 관리합니다.-
선택 사항: 환경 설정에 따라 변수를 수정할 수 있습니다. 자세한 내용은
/usr/share/doc/rhel-system-roles/vpn/README.md
파일을 참조하십시오. 선택사항: 플레이북 구문 확인.
# ansible-playbook --syntax-check playbook.yml
인벤토리 파일에서 플레이북을 실행합니다.
# ansible-playbook -i inventory_file /path/to/file/playbook.yml