5.13. RHEL 시스템 역할을 사용하여 IPsec으로 VPN 연결 구성


vpn 시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL 시스템에서 VPN 연결을 구성할 수 있습니다. 호스트 간, 네트워크 간, VPN 원격 액세스 서버 및 메시 구성을 설정하는 데 사용할 수 있습니다.

호스트 간 연결의 경우 역할은 필요에 따라 기본 매개 변수를 사용하여 vpn_connections 목록에 있는 각 호스트 쌍 간에 VPN 터널을 설정합니다. 또는 나열된 모든 호스트 간에 기회 메시 구성을 생성하도록 구성할 수 있습니다. 이 역할은 호스트에 있는 호스트의 이름이 Ansible 인벤토리에 사용되는 호스트의 이름과 동일하며, 이러한 이름을 사용하여 터널을 구성할 수 있다고 가정합니다.

참고

vpn RHEL 시스템 역할은 현재 IPsec 구현인 Libreswan만 VPN 공급자로 지원합니다.

5.13.1. vpn RHEL 시스템 역할을 사용하여 IPsec으로 호스트 간 VPN 생성

vpn 시스템 역할을 사용하여 제어 노드에서 Ansible 플레이북을 실행하여 인벤토리 파일에 나열된 모든 관리 노드를 구성하여 호스트 간 연결을 구성할 수 있습니다.

사전 요구 사항

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    - name: Host to host VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - hosts:
              managed-node-01.example.com:
              managed-node-02.example.com:
        vpn_manage_firewall: true
        vpn_manage_selinux: true

    이 플레이북은 시스템 역할에 의해 자동으로 생성되는 키와 함께 사전 공유 키 인증을 사용하여 managed-node-01.example.com-to-managed-node-02.example.com 연결을 구성합니다. vpn_manage_firewallvpn_manage_selinux 둘 다 true 로 설정되므로 vpn 역할은 firewallselinux 역할을 사용하여 vpn 역할에서 사용하는 포트를 관리합니다.

    인벤토리 파일에 나열되지 않은 외부 호스트로의 관리 호스트에서 연결을 구성하려면 다음 섹션을 호스트 vpn_connections 목록에 추가합니다.

        vpn_connections:
          - hosts:
              managed-node-01.example.com:
              <external_node>:
                hostname: <IP_address_or_hostname>

    그러면 하나의 추가 연결을 구성합니다 . managed-node-01.example.com-to-<external_node>

    참고

    연결은 외부 노드가 아닌 관리형 노드에서만 구성됩니다.

  2. 선택 사항: vpn_connections 내의 추가 섹션을 사용하여 관리 노드에 대해 여러 VPN 연결을 지정할 수 있습니다(예: 컨트롤 플레인 및 데이터 플레인).

    - name: Multiple VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - name: control_plane_vpn
            hosts:
              managed-node-01.example.com:
                hostname: 192.0.2.0 # IP for the control plane
              managed-node-02.example.com:
                hostname: 192.0.2.1
          - name: data_plane_vpn
            hosts:
              managed-node-01.example.com:
                hostname: 10.0.0.1 # IP for the data plane
              managed-node-02.example.com:
                hostname: 10.0.0.2
  3. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  4. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml

검증

  1. 관리형 노드에서 연결이 성공적으로 로드되었는지 확인합니다.

    # ipsec status | grep <connection_name>

    & lt;connection_name >을 이 노드의 연결 이름으로 바꿉니다(예: managed_node1-to-managed_node 2) .

    참고

    기본적으로 역할은 각 시스템의 관점에서 생성하는 각 연결에 대해 설명이 포함된 이름을 생성합니다. 예를 들어 managed_node1과 managed_node 2 간에 연결을 생성하는 경우 managed_node 1에서 이 연결의 설명이 managed_node 1-to-managed_node2이지만 managed_node2 의 경우 연결의 이름은 managed_node2-to-managed_node1 입니다.

  2. 관리형 노드에서 연결이 성공적으로 시작되었는지 확인합니다.

    # ipsec trafficstatus | grep <connection_name>
  3. 선택 사항: 연결이 성공적으로 로드되지 않으면 다음 명령을 입력하여 연결을 수동으로 추가합니다. 이렇게 하면 연결 설정 실패 이유를 나타내는 더 구체적인 정보가 제공됩니다.

    # ipsec auto --add <connection_name>
    참고

    연결을 로드하고 시작하는 동안 발생할 수 있는 오류는 /var/log/pluto.log 파일에 보고됩니다. 이러한 로그는 구문 분석하기 어렵기 때문에 대신 표준 출력에서 로그 메시지를 가져오는 데 수동으로 연결을 추가합니다.

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.vpn/README.md 파일
  • /usr/share/doc/rhel-system-roles/vpn/ directory

5.13.2. vpn RHEL 시스템 역할을 사용하여 IPsec을 통한 opportunistic 메시 VPN 연결 생성

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

사전 요구 사항

  • 제어 노드와 관리형 노드가 준비되어 있습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • /etc/ipsec.d/ 디렉터리의 NSS(Network Security Services) 암호화 라이브러리에는 필요한 인증서가 포함되어 있습니다.

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/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_firewallvpn_manage_selinux 둘 다 true 로 설정되므로 vpn 역할은 firewallselinux 역할을 사용하여 vpn 역할에서 사용하는 포트를 관리합니다.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.vpn/README.md 파일
  • /usr/share/doc/rhel-system-roles/vpn/ directory
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.