16.2. vpn 시스템 역할을 사용하여 IPsec과 opportunistic 메시 VPN 연결 생성
vpn
시스템 역할을 사용하여 제어 노드에서 Ansible 플레이북을 실행하여 인증에 대한 인증서를 사용하는 운영 체제 메시 VPN 연결을 구성할 수 있습니다. 이 연결은 인벤토리 파일에 나열된 모든 관리형 노드를 구성합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되었습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다./etc/ipsec.d/
디렉터리의 NSS(Network Security Services) 암호화 라이브러리에는 필요한 인증서가 포함되어 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.- name: Mesh VPN hosts: managed-node-01.example.com, managed-node-02.example.com, managed-node-03.example.com 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
인증서를 사용한 인증은 플레이북에서
auth_method: cert
매개 변수를 정의하여 구성됩니다. 기본적으로 노드 이름은 인증서 닉네임으로 사용됩니다. 이 예에서는managed-node-01.example.com
입니다. 인벤토리에서cert_name
속성을 사용하여 다른 인증서 이름을 정의할 수 있습니다.이 예제 절차에서는 Ansible 플레이북을 실행하는 시스템인 제어 노드에서 관리 노드(192.0.2.0/24)와 동일한 classless inter-domain routing (CIDR) 번호를 공유하며 IP 주소 192.0.2.7을 갖습니다. 따라서 제어 노드는 CIDR 192.0.2.0/24에 대해 자동으로 생성되는 개인 정책에 따릅니다.
플레이 중에 SSH 연결 손실을 방지하기 위해 제어 노드에 대한 명확한 정책이 정책 목록에 포함됩니다. CIDR이 기본값과 같은 정책 목록에도 항목이 있습니다. 이는 이 플레이북이 private-or-clear 대신 비공개로 만들기 위해 기본 정책의 규칙을 재정의하기 때문입니다.
vpn_manage_firewall
및vpn_manage_selinux
둘 다true
로 설정되므로vpn
역할은firewall
및selinux
역할을 사용하여vpn
역할에서 사용하는 포트를 관리합니다.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.vpn/README.md
파일 -
/usr/share/doc/rhel-system-roles/vpn/
directory