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


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

참고

머신 구성을 적용한 후 Machine Config Operator가 클러스터의 영향을 받는 노드를 재부팅하여 새 머신 구성을 롤아웃합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 로컬 컴퓨터에 butane 유틸리티를 설치했습니다.
  • NMState Operator가 클러스터에 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인했습니다.
  • 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 [Subject Alternate Name] 과 일치해야 합니다.
      4
      host.example.com 과 같은 외부 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [Subject Alternate Name] 과 일치해야 합니다.
      5
      10.1.2.3/32 와 같은 외부 호스트의 IP 주소를 지정합니다.

      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 [Subject Alternate Name] 과 일치해야 합니다.
      4
      host.example.com 과 같은 외부 호스트 이름을 지정합니다. 이름은 제공된 PKCS#12 인증서의 SAN [Subject Alternate Name] 과 일치해야 합니다.
      5
      10.1.2.3/32 와 같은 외부 호스트의 IP 주소를 지정합니다.
    3. IPsec 인터페이스를 구성하려면 다음 명령을 입력합니다.

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

    • left_server.p12: IPsec 엔드포인트의 인증서 번들
    • ca.pem: 인증서에 서명한 인증 기관
  3. 클러스터에 인증서를 추가할 머신 구성을 생성합니다.

    1. 컨트롤 플레인 및 작업자 노드에 대한 Butane 구성 파일을 생성하려면 다음 명령을 입력합니다.

      참고

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

      $ for role in master worker; do
        cat >> "99-ipsec-${role}-endpoint-config.bu" <<-EOF
        variant: openshift
        version: 4.18.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(Machine Config Operator)는 각 머신 구성 풀에서 머신을 업데이트하므로 각 노드를 하나씩 재부팅합니다. 외부 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