16장. vpn RHEL 시스템 역할을 사용하여 IPsec과 VPN 연결 구성
vpn 시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL 시스템에서 VPN 연결을 구성할 수 있습니다. 이를 사용하여 호스트 간, 네트워크-네트워크, VPN 원격 액세스 서버 및 메시 구성을 설정할 수 있습니다.
호스트 간 연결의 경우 역할은 필요에 따라 키 생성을 포함하여 vpn_connections 목록에 있는 각 호스트 쌍 간에 VPN 터널을 설정합니다. 또는 나열된 모든 호스트 간에 opportunistic 메시 구성을 생성하도록 구성할 수 있습니다. 이 역할은 호스트에 있는 호스트의 이름이 Ansible 인벤토리에 사용된 호스트의 이름과 동일하고 해당 이름을 사용하여 터널을 구성할 수 있다고 가정합니다.
vpn RHEL 시스템 역할은 현재 IPsec 구현인 Libreswan만 VPN 공급자로 지원합니다.
16.1. vpn 시스템 역할을 사용하여 IPsec을 사용하여 호스트 간 VPN 생성 링크 복사링크가 클립보드에 복사되었습니다!
vpn 시스템 역할을 사용하여 제어 노드에서 Ansible 플레이북을 실행하여 인벤토리 파일에 나열된 모든 관리 노드를 구성하여 호스트 간 연결을 구성할 수 있습니다.
사전 요구 사항
-
vpn시스템 역할로 구성하려는 시스템인 하나 이상의 관리형 노드에 대한 액세스 및 권한. 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파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 플레이북은 시스템 역할에서 자동으로 생성된 키와 사전 공유 키 인증을 사용하여
managed_node1-to-managed_node2연결을 구성합니다.vpn_manage_firewall및vpn_manage_selinux둘 다true로 설정되므로vpn역할은firewall및selinux역할을 사용하여vpn역할에서 사용하는 포트를 관리합니다.선택 사항: 호스트
vpn_connections목록에 다음 섹션을 추가하여 인벤토리 파일에 나열되지 않은 외부 호스트로의 연결을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 두 개의 추가 연결(
managed_node1-to-external_node및managed_node2-to-external_node)이 구성됩니다.참고연결은 관리형 노드에서만 구성되며 외부 노드에는 구성되어 있지 않습니다.
선택 사항:
vpn_connections내의 추가 섹션을 사용하여 관리 노드에 대해 여러 VPN 연결을 지정할 수 있습니다(예: 컨트롤 플레인 및 데이터 플레인).Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
선택 사항: 환경 설정에 따라 변수를 수정할 수 있습니다. 자세한 내용은
/usr/share/doc/rhel-system-roles/vpn/README.md파일을 참조하십시오. 선택사항: 플레이북 구문 확인.
ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
# ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인벤토리 파일에서 플레이북을 실행합니다.
ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
# ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
관리형 노드에서 연결이 성공적으로 로드되었는지 확인합니다.
ipsec status | grep connection.name
# ipsec status | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow connection.name을 이 노드의 연결 이름으로 교체합니다(예:
managed_node1-to-managed_node2).참고기본적으로 역할은 각 시스템의 관점에서 생성하는 각 연결에 대해 설명이 포함된 이름을 생성합니다. 예를 들어
managed_node1과managed_node2간의 연결을 생성할 때managed_node1에 대한 이 연결의 설명 이름은managed_node1-to-managed_node2이지만managed_node2의 설명 이름은managed_node2-to-managed_node1입니다.관리형 노드에서 연결이 성공적으로 시작되었는지 확인합니다.
ipsec trafficstatus | grep connection.name
# ipsec trafficstatus | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 연결이 성공적으로 로드되지 않으면 다음 명령을 입력하여 연결을 수동으로 추가합니다. 이렇게 하면 연결 설정 실패 이유를 나타내는 더 구체적인 정보가 제공됩니다.
ipsec auto --add connection.name
# ipsec auto --add connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고연결을 로드하고 시작하는 동안 발생할 수 있는 오류는
/var/log/pluto.log파일에 보고됩니다. 이러한 로그는 구문 분석하기 어렵기 때문에 대신 표준 출력에서 로그 메시지를 가져오는 데 수동으로 연결을 추가합니다.