6.7. 외부 트래픽에 대한 IPsec 암호화 구성


클러스터 관리자로서 IPsec을 사용하여 외부 트래픽을 암호화하려면 PKCS#12 인증서 제공을 포함하여 네트워크 인프라에 대한 IPsec을 구성해야 합니다. 이 절차에서는 Butane을 사용하여 머신 구성을 생성하므로 butane 명령이 설치되어 있어야 합니다.

참고

머신 구성을 적용한 후, 머신 구성 운영자는 클러스터에서 영향을 받은 노드를 재부팅하여 새로운 머신 구성을 롤아웃합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 로컬 컴퓨터에 부탄 가스 공급 시설을 설치했습니다.
  • 클러스터에 NMState Operator를 설치했습니다.
  • 클러스터 관리자 권한이 있는 사용자로 클러스터에 로그인했습니다.
  • IPsec 엔드포인트에 대한 기존 PKCS#12 인증서와 PEM 형식의 CA 인증서가 있습니다.
  • 클러스터에서 전체 모드 또는 외부 모드로 IPsec을 활성화했습니다.
  • OVN-Kubernetes 네트워크 플러그인은 로컬 게이트웨이 모드에서 구성되어야 하며, 여기서 ovnKubernetesConfig.gatewayConfig.routingViaHost=true 입니다 .

프로세스

  1. NMState Operator 노드 네트워크 구성 정책으로 IPsec 구성을 만듭니다. 자세한 내용은 IPsec VPN 구현으로서의 Libreswan을 참조하세요.

    1. IPsec 엔드포인트인 클러스터 노드의 IP 주소를 식별하려면 다음 명령을 입력하세요.

      $ oc get nodes
      Copy to Clipboard Toggle word wrap
    2. 다음 예와 같이 NMState Operator에 대한 노드 네트워크 구성 정책이 포함된 ipsec-config.yaml 이라는 파일을 만듭니다. NodeNetworkConfigurationPolicy 객체에 대한 개요는 Kubernetes NMState 프로젝트를 참조하세요.

      NMState IPsec 전송 구성 예

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: ipsec-config
      spec:
        nodeSelector:
          kubernetes.io/hostname: "<hostname>" 
      1
      
        desiredState:
          interfaces:
          - name: <interface_name> 
      2
      
            type: ipsec
            libreswan:
              left: <cluster_node> 
      3
      
              leftid: '%fromcert'
              leftrsasigkey: '%cert'
              leftcert: left_server
              leftmodecfgclient: false
              right: <external_host> 
      4
      
              rightid: '%fromcert'
              rightrsasigkey: '%cert'
              rightsubnet: <external_address>/32 
      5
      
              ikev2: insist
              type: transport
      Copy to Clipboard Toggle word wrap

      1 1
      정책을 적용할 호스트 이름을 지정합니다. 이 호스트는 IPsec 구성에서 왼쪽 호스트 역할을 합니다.
      2
      호스트에 생성할 인터페이스의 이름을 지정합니다.
      3
      클러스터 측에서 IPsec 터널을 종료하는 클러스터 노드의 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [주체 대체 이름] 과 일치해야 합니다.
      4
      host.example.com 과 같은 외부 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [주체 대체 이름] 과 일치해야 합니다.
      5
      외부 호스트의 IP 주소(예: 10.1.2.3/32) 를 지정합니다.

      NMState IPsec 터널 구성 예

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: ipsec-config
      spec:
        nodeSelector:
          kubernetes.io/hostname: "<hostname>" 
      1
      
        desiredState:
          interfaces:
          - name: <interface_name> 
      2
      
            type: ipsec
            libreswan:
              left: <cluster_node> 
      3
      
              leftid: '%fromcert'
              leftmodecfgclient: false
              leftrsasigkey: '%cert'
              leftcert: left_server
              right: <external_host> 
      4
      
              rightid: '%fromcert'
              rightrsasigkey: '%cert'
              rightsubnet: <external_address>/32 
      5
      
              ikev2: insist
              type: tunnel
      Copy to Clipboard Toggle word wrap

      1
      정책을 적용할 호스트 이름을 지정합니다. 이 호스트는 IPsec 구성에서 왼쪽 호스트 역할을 합니다.
      2
      호스트에 생성할 인터페이스의 이름을 지정합니다.
      3
      클러스터 측에서 IPsec 터널을 종료하는 클러스터 노드의 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [주체 대체 이름] 과 일치해야 합니다.
      4
      host.example.com 과 같은 외부 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [주체 대체 이름] 과 일치해야 합니다.
      5
      외부 호스트의 IP 주소(예: 10.1.2.3/32) 를 지정합니다.
    3. IPsec 인터페이스를 구성하려면 다음 명령을 입력하세요.

      $ oc create -f ipsec-config.yaml
      Copy to Clipboard Toggle word wrap
  2. 각 호스트의 네트워크 보안 서비스(NSS) 데이터베이스에 추가할 다음 인증서 파일을 제공합니다. 이러한 파일은 이후 단계에서 부탄 구성의 일부로 가져옵니다.

    • left_server.p12 : IPsec 엔드포인트에 대한 인증서 번들
    • ca.pem : 인증서에 서명한 인증 기관
  3. 클러스터에 인증서를 추가하려면 머신 구성을 생성하세요.

    1. 제어 평면과 작업자 노드에 대한 Butane 구성 파일을 만들려면 다음 명령을 입력하세요.

      참고

      구성 파일에서 지정하는 Butane 버전은 OpenShift Container Platform 버전과 일치해야 하며 항상 0 으로 끝나야 합니다. 예를 들어, 4.19.0입니다. Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.

      $ for role in master worker; do
        cat >> "99-ipsec-${role}-endpoint-config.bu" <<-EOF
        variant: openshift
        version: 4.19.0
        metadata:
          name: 99-${role}-import-certs
          labels:
            machineconfiguration.openshift.io/role: $role
        systemd:
          units:
          - name: ipsec-import.service
            enabled: true
            contents: |
              [Unit]
              Description=Import external certs into ipsec NSS
              Before=ipsec.service
      
              [Service]
              Type=oneshot
              ExecStart=/usr/local/bin/ipsec-addcert.sh
              RemainAfterExit=false
              StandardOutput=journal
      
              [Install]
              WantedBy=multi-user.target
        storage:
          files:
          - path: /etc/pki/certs/ca.pem
            mode: 0400
            overwrite: true
            contents:
              local: ca.pem
          - path: /etc/pki/certs/left_server.p12
            mode: 0400
            overwrite: true
            contents:
              local: left_server.p12
          - path: /usr/local/bin/ipsec-addcert.sh
            mode: 0740
            overwrite: true
            contents:
              inline: |
                #!/bin/bash -e
                echo "importing cert to NSS"
                certutil -A -n "CA" -t "CT,C,C" -d /var/lib/ipsec/nss/ -i /etc/pki/certs/ca.pem
                pk12util -W "" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/
                certutil -M -n "left_server" -t "u,u,u" -d /var/lib/ipsec/nss/
      EOF
      done
      Copy to Clipboard Toggle word wrap
    2. 이전 단계에서 만든 Butane 파일을 머신 구성으로 변환하려면 다음 명령을 입력하세요.

      $ for role in master worker; do
        butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml
      done
      Copy to Clipboard Toggle word wrap
  4. 클러스터에 머신 구성을 적용하려면 다음 명령을 입력하세요.

    $ for role in master worker; do
      oc apply -f 99-ipsec-${role}-endpoint-config.yaml
    done
    Copy to Clipboard Toggle word wrap
    중요

    MCO(머신 구성 운영자)가 각 머신 구성 풀의 머신을 업데이트하면서 각 노드를 하나씩 재부팅합니다. 외부 IPsec 연결을 사용할 수 있으려면 모든 노드가 업데이트될 때까지 기다려야 합니다.

  5. 다음 명령을 입력하여 머신 구성 풀 상태를 확인합니다.

    $ oc get mcp
    Copy to Clipboard Toggle word wrap

    업데이트된 노드의 상태가 UPDATED=true, UPDATING=false,DEGRADED=false입니다.

    참고

    기본적으로 MCO는 풀당 한 번에 하나의 시스템을 업데이트하므로 클러스터 크기에 따라 마이그레이션에 걸리는 총 시간이 증가합니다.

  6. IPsec 머신 구성이 성공적으로 롤아웃되었는지 확인하려면 다음 명령을 입력하세요.

    1. IPsec 머신 구성 생성을 확인하세요.

      $ oc get mc | grep ipsec
      Copy to Clipboard Toggle word wrap

      출력 예

      80-ipsec-master-extensions        3.2.0        6d15h
      80-ipsec-worker-extensions        3.2.0        6d15h
      Copy to Clipboard Toggle word wrap

    2. 제어 평면 노드에 IPsec 확장이 적용되었는지 확인합니다. 출력 예시는 2를 보여줍니다.

      $ oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
      Copy to Clipboard Toggle word wrap
    3. IPsec 확장이 컴퓨팅 노드에 적용되었는지 확인합니다. 출력 예시는 2를 보여줍니다.

      $ oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -c
      Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat