6.12. RHEL 시스템 역할을 사용하여 IPsec VPN 연결 구성
신뢰할 수 없는 네트워크를 통해 암호화된 터널을 설정하고 전송 중 데이터의 무결성을 보장하도록 IPsec VPN 연결을 구성합니다. RHEL 시스템 역할을 사용하면 지사 사무실을 본사에 연결하는 것과 같은 사용 사례에 맞게 설정을 자동화할 수 있습니다.
vpn RHEL 시스템 역할은 PSK(사전 공유 키) 또는 인증서를 사용하여 피어를 서로 인증하는 VPN 구성만 생성할 수 있습니다.
6.12.1. vpn RHEL 시스템 역할을 사용하여 PSK 인증을 사용하여 IPsec 호스트 대 호스트 VPN 구성 링크 복사링크가 클립보드에 복사되었습니다!
호스트 간 VPN은 두 장치 간에 암호화된 연결을 설정하여 애플리케이션이 안전하지 않은 네트워크를 통해 안전하게 통신할 수 있도록 합니다. vpn RHEL 시스템 역할을 사용하면 IPsec 호스트 간 연결 생성 프로세스를 자동화할 수 있습니다.
인증을 위해 PSK(사전 공유 키)는 두 피어에만 알려진 공유 시크릿을 사용하는 간단한 방법입니다. 이 접근 방식은 쉽게 배포가 가능한 우선 순위인 기본 설정에 적합합니다. 그러나 키를 엄격하게 기밀로 유지해야 합니다. 키에 대한 액세스 권한이 있는 공격자는 연결을 손상시킬 수 있습니다.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는 이러한 노드에 대한
sudo권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml)을 생성합니다.--- - name: Configuring VPN hosts: managed-node-01.example.com, managed-node-02.example.com tasks: - name: IPsec VPN with PSK authentication ansible.builtin.include_role: name: redhat.rhel_system_roles.vpn vars: vpn_connections: - hosts: managed-node-01.example.com: managed-node-02.example.com: auth_method: psk auto: start vpn_manage_firewall: true vpn_manage_selinux: true예제 플레이북에 지정된 설정은 다음과 같습니다.
호스트: < ;list>VPN을 구성하려는 피어를 사용하여 YAML 사전을 정의합니다. 항목이 Ansible 관리형 노드가 아닌 경우
hostname매개변수에서 FQDN(정규화된 도메인 이름) 또는 IP 주소를 지정해야 합니다. 예를 들면 다음과 같습니다.... - hosts: ... external-host.example.com: hostname: 192.0.2.1역할은 각 관리 노드에서 VPN 연결을 구성합니다. 연결 이름은 <
peer_A> -to- <peer_B>입니다(예:managed-node-01.example.com-to-managed-node-02.example.com). 역할은 외부(관리되지 않음) 노드에 Libreswan을 구성할 수 없습니다. 이러한 피어에 구성을 수동으로 생성해야 합니다.auth_method: psk-
피어 간 PSK 인증을 활성화합니다. 역할은 제어 노드에서
openssl을 사용하여 PSK를 생성합니다. auto: <startup_method>-
연결의 시작 메서드를 지정합니다. 유효한 값은
add,ondemand,start및ignore입니다. 자세한 내용은 Libreswan이 설치된 시스템의ipsec.conf(5)도움말 페이지를 참조하십시오. 이 변수의 기본값은 null이며 자동 시작 작업이 없음을 의미합니다. vpn_manage_firewall: true-
역할이 관리 노드의
firewalld서비스에서 필요한 포트를 열도록 정의합니다. vpn_manage_selinux: true- 역할이 IPsec 포트에 필요한 SELinux 포트 유형을 설정하도록 정의합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.vpn/README.md파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
연결이 성공적으로 시작되었는지 확인합니다. 예를 들면 다음과 같습니다.
# ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'이 명령은 VPN 연결이 활성화된 경우에만 성공합니다. 플레이북의
auto변수를start이외의 값으로 설정하는 경우 먼저 관리 노드에서 연결을 수동으로 활성화해야 할 수 있습니다.