Identity Management에서 DNS 작업


Red Hat Enterprise Linux 10

RHEL IdM에 통합된 DNS 서비스 관리

Red Hat Customer Content Services

초록

DNS는 Red Hat IdM(Identity Management) 도메인에서 중요한 구성 요소입니다. 예를 들어 클라이언트는 DNS를 사용하여 서비스를 찾고 동일한 사이트에서 서버를 식별합니다. 명령줄, IdM 웹 UI 및 Ansible 플레이북을 사용하여 IdM에 통합된 DNS 서버에서 레코드, 영역, 위치, 전달을 관리할 수 있습니다.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (계정 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 바에서 생성을 클릭합니다.
  3. 요약 필드에 설명 제목을 입력합니다.
  4. 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. Ansible 플레이북을 사용하여 IdM의 글로벌 DNS 구성 관리

freeipa.ansible_freeipa.dnsconfig Ansible 모듈을 사용하면 RHEL IdM(Identity Management) DNS에 대한 글로벌 구성을 구성할 수 있습니다. 글로벌 DNS 구성에 정의된 설정은 모든 IdM DNS 서버에 적용됩니다. 그러나 글로벌 구성은 특정 IdM DNS 영역의 구성보다 우선 순위가 낮습니다.

dnsconfig 모듈은 다음 변수를 지원합니다.

  • 글로벌 전달자, 특히 IP 주소 및 통신에 사용되는 포트입니다.
  • 글로벌 전달 정책: only, first, or none. 이러한 유형의 DNS 전달 정책에 대한 자세한 내용은 IdM의 DNS 전달 정책을 참조하십시오.
  • 정방향 조회 및 역방향 조회 영역의 동기화입니다.

사전 요구 사항

 

통합 DNS를 사용하여 RHEL IdM(Identity Management)을 설치하면 127.0.0.1 localhost 주소를 가리키도록 /etc/resolv.conf 파일이 구성됩니다.

# Generated by NetworkManager
search idm.example.com
nameserver 127.0.0.1

DHCP( Dynamic Host Configuration Protocol )를 사용하는 네트워크와 같은 특정 환경에서는 NetworkManager 서비스가 /etc/resolv.conf 파일의 변경 사항을 되돌릴 수 있습니다. DNS 구성을 영구적으로 만들기 위해 IdM DNS 설치 프로세스도 다음과 같은 방식으로 NetworkManager 서비스를 구성합니다.

  1. DNS 설치 스크립트는 /etc/NetworkManager/conf.d/zzz-ipa.conf NetworkManager 구성 파일을 생성하여 검색 순서 및 DNS 서버 목록을 제어합니다.

    # auto-generated by IPA installer
    [main]
    dns=default
    
    [global-dns]
    searches=$DOMAIN
    
    [global-dns-domain-*]
    servers=127.0.0.1
  2. NetworkManager 서비스가 다시 로드됩니다. 이 파일은 항상 /etc/NetworkManager/conf.d/ 디렉터리에 있는 마지막 파일의 설정으로 /etc/resolv.conf 파일을 생성합니다. 이 경우 zzz-ipa.conf 파일입니다.
중요

/etc/resolv.conf 파일을 수동으로 수정하지 마십시오.

1.2. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인

Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서는 IdM 관리자가 인터넷 프로토콜(IP) v4 주소 7.7.9.9 및 포트 53 의 IP v6 주소 2001:db8::1:0 을 사용하여 DNS 서버에 DNS 글로벌 전달자가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 관련 collections 디렉터리에서 forwarders-absent.yml Ansible 플레이북 파일의 사본을 만들고 이름을 바꿉니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
  3. 편집을 위해 ensure-presence-of-global-forwarder.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS에 글로벌 전달자가 있는지 확인합니다.
    2. tasks 섹션에서 DNS 글로벌 전달자가 있는지 확인하도록 작업의 이름을 변경합니다. 포트 53의 7.7.9.9 및 2001:db8::1:0.
    3. freeipa.ansible_freeipa.ipadnsconfig 부분의 전달자 섹션에서 다음을 수행합니다.

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 7.7.9.9.
      2. 두 번째 ip_address 값을 글로벌 전달자 2001:db8::1:0 의 IPv6 주소로 변경합니다.
      3. port 값이 53 으로 설정되어 있는지 확인합니다.
    4. statepresent 로 변경합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to ensure the presence of a global forwarder in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53
        freeipa.ansible_freeipa.ipadnsconfig:
          forwarders:
            - ip_address: 7.7.9.9
            - ip_address: 2001:db8::1:0
              port: 53
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml

1.3. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인

Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서는 IdM 관리자가 인터넷 프로토콜(IP) v4 주소가 8.8.6.6 이고 IP v6 주소가 2001:4860:4860::8800 인 DNS 글로벌 전달자가 없는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 관련 collections 디렉터리에서 forwarders-absent.yml Ansible 플레이북 파일의 사본을 만들고 이름을 바꿉니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
  3. 편집을 위해 ensure-absence-of-global-forwarder.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. IdM DNS에 글로벌 전달자가 없는지 확인하기 위해 플레이북의 name 변수를 Playbook로 변경합니다.
    2. tasks 섹션에서 DNS 글로벌 전달자 가 없는지 확인하려면 포트 53의 DNS 글로벌 전달자가 8.8.6.6 및 2001:4860:4860::8800으로 변경되도록 작업 이름을 변경합니다.
    3. freeipa.ansible_freeipa.ipadnsconfig 부분의 전달자 섹션에서 다음을 수행합니다.

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 8.8.6.6.
      2. 두 번째 ip_address 값을 글로벌 전달자 2001:4860:4860::8800 의 IPv6 주소로 변경합니다.
      3. port 값이 53 으로 설정되어 있는지 확인합니다.
    4. action 변수를 member 로 설정합니다.
    5. 상태가 absent 로 설정되어 있는지 확인합니다.

    현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to ensure the absence of a global forwarder in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53
        freeipa.ansible_freeipa.ipadnsconfig:
          forwarders:
            - ip_address: 8.8.6.6
            - ip_address: 2001:4860:4860::8800
              port: 53
          action: member
          state: absent
    중요

    action: member 를 사용하지 않고 플레이북에서 state: absent 옵션만 사용하면 플레이북이 실패합니다.

  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml

1.4. ipadnsconfig ansible-freeipa 모듈의 action: member 옵션

ansible-freeipa ipadnsconfig 모듈을 사용하여 RHEL IdM(Identity Management)에서 글로벌 전달자를 제외하려면 state: absent 옵션 외에 action: member 옵션을 사용해야 합니다. action: member 를 사용하지 않고 플레이북에서 state: absent 만 사용하는 경우 플레이북이 실패합니다. 따라서 모든 글로벌 전달자를 제거하려면 플레이북에서 모든 전달자를 개별적으로 지정해야 합니다. 반대로 state: present 옵션은 action: member 를 필요로 하지 않습니다.

다음 표에서 는 action: member 옵션의 올바른 사용을 보여주는 DNS 글로벌 전달자 추가 및 제거에 대한 구성 예제를 제공합니다. 테이블은 각 줄에서 다음을 보여줍니다.

  • 플레이북을 실행하기 전에 구성된 글로벌 전달자
  • 플레이북에서 발췌한 내용
  • 플레이북을 실행한 후 구성된 글로벌 전달자
Expand
표 1.1. 글로벌 전달자의 ipadnsconfig 관리
이전 버전플레이북 발췌 내용이후 전달자

8.8.6.6

[...]
tasks:
- name: Ensure the presence of DNS global forwarder 8.8.6.7
  ipadnsconfig:
    forwarders:
      - ip_address: 8.8.6.7
    state: present

8.8.6.7

8.8.6.6

[...]
tasks:
- name: Ensure the presence of DNS global forwarder 8.8.6.7
  ipadnsconfig:
    forwarders:
      - ip_address: 8.8.6.7
    action: member
    state: present

8.8.6.6, 8.8.6.7

8.8.6.6, 8.8.6.7

[...]
tasks:
- name: Ensure the absence of DNS global forwarder 8.8.6.7
  ipadnsconfig:
    forwarders:
      - ip_address: 8.8.6.7
    state: absent

플레이북을 실행하려고 하면 오류가 발생합니다. 원래 구성 - 8.8.6.6, 8.8.6.7은 변경되지 않습니다.

8.8.6.6, 8.8.6.7

[...]
tasks:
- name: Ensure the absence of DNS global forwarder 8.8.6.7
  ipadnsconfig:
    forwarders:
      - ip_address: 8.8.6.7
    action: member
    state: absent

8.8.6.6

1.5. IdM의 DNS 전달 정책

IdM은 번째 및 표준 BIND 전달 정책과 none IdM 특정 전달 정책을 지원합니다.

정방향 첫 번째 (기본값)
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자에게 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND는 인터넷의 서버를 사용하여 재귀 확인으로 대체됩니다. forward 첫 번째 정책은 기본 정책이며 DNS 트래픽을 최적화하는 데 적합합니다.
앞으로만 해당
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자에게 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND에서 클라이언트에 오류를 반환합니다. 분할 DNS 구성이 있는 환경에만 forward only 정책을 사용하는 것이 좋습니다.
none (전달 비활성화)
DNS 쿼리는 none 전달 정책으로 전달되지 않습니다. 전달 비활성화는 글로벌 전달 구성에 대한 영역별 재정의로만 유용합니다. 이 옵션은 BIND 구성에 빈 전달자 목록을 지정하는 것과 동일한 IdM 옵션입니다.
참고

전달을 사용하여 IdM의 데이터를 다른 DNS 서버의 데이터와 결합할 수 없습니다. IdM DNS의 기본 영역의 특정 하위 영역에 대한 쿼리를 전달할 수 있습니다.

쿼리된 DNS 이름이 IdM 서버가 권한이 있는 영역에 속하는 경우 기본적으로 BIND 서비스는 쿼리를 다른 서버에 전달하지 않습니다. 이러한 상황에서 쿼리된 DNS 이름을 IdM 데이터베이스에서 찾을 수 없는 경우 NXDOMAIN 응답이 반환됩니다. 전달은 사용되지 않습니다.

예 1.1. 시나리오 예

IdM 서버는 test.example에 대한 권한이 있습니다. DNS 영역. BIND는 192.0.2.254 IP 주소를 사용하여 DNS 서버로 쿼리를 전달하도록 구성됩니다.

클라이언트에서 존재하지 않는.test.example에대한 쿼리를 전송하는 경우 DNS 이름, BIND는 IdM 서버가 test.example. 영역에 대한 권한이 있음을 감지하고 쿼리를 192.0.2.254. 서버로 전달하지 않습니다. 결과적으로 DNS 클라이언트는 NXDomain 오류 메시지를 수신하여 사용자에게 쿼리된 도메인이 존재하지 않음을 알립니다.

Ansible 플레이북을 사용하여 IdM DNS의 글로벌 전달 정책이 먼저 전달되도록 설정하려면 다음 절차를 따르십시오.

정방향 첫 번째 DNS 전달 정책을 사용하면 DNS 쿼리가 구성된 전달자로 전달됩니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND는 인터넷의 서버를 사용하여 재귀 확인으로 대체됩니다. forward 첫 번째 정책은 기본 정책입니다. 트래픽 최적화에 적합합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 관련 collections 디렉터리에서 set-configuration.yml Ansible 플레이북 파일의 사본을 만들고 이름을 바꿉니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/set-configuration.yml set-forward-policy-to-first.yml
  3. 편집할 set-forward-policy-to-first.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsconfig 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • forward_policy 변수를 번째로 설정합니다.

      관련 없는 원래 플레이북의 다른 모든 행을 삭제합니다. 현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to set global forwarding policy to first
      hosts: ipaserver
      become: true
    
      tasks:
      - name: Set global forwarding policy to first.
        freeipa.ansible_freeipa.ipadnsconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
          forward_policy: first
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.yml

Ansible 플레이북을 사용하여 IdM DNS에서 글로벌 전달자가 비활성화되었는지 확인하려면 다음 절차를 따르십시오. 비활성화는 forward_policy 변수를 none 으로 설정하여 수행됩니다.

글로벌 전달자를 비활성화하면 DNS 쿼리가 전달되지 않습니다. 전달 비활성화는 글로벌 전달 구성에 대한 영역별 재정의로만 유용합니다. 이 옵션은 BIND 구성에 빈 전달자 목록을 지정하는 것과 동일한 IdM 옵션입니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 관련 collections 디렉터리에서 disable-global-forwarders.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disable-global-forwarders.yml disable-global-forwarders-copy.yml
  3. 편집할 disable-global-forwarders-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsconfig 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • forward_policy 변수를 none 으로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to disable global DNS forwarders
      hosts: ipaserver
      become: true
    
      tasks:
      - name: Disable global forwarders.
        freeipa.ansible_freeipa.ipadnsconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
          forward_policy: none
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.yml

Ansible 플레이북을 사용하여 IdM DNS에서 정방향 및 역방향 조회 영역이 동기화되지 않도록 하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. 관련 collections 디렉터리에서 disallow-reverse-sync.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
  3. 편집할 disallow-reverse-sync-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsconfig 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • allow_sync_ptr 변수를 no 로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to disallow reverse record synchronization
      hosts: ipaserver
      become: true
    
      tasks:
      - name: Disallow reverse record synchronization.
        freeipa.ansible_freeipa.ipadnsconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
          allow_sync_ptr: no
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.yml

2장. IdM에서 DNS 영역 관리

RHEL IdM(Identity Management) DNS 영역을 IdM 관리자로 관리하는 방법을 알아봅니다.

사전 요구 사항

2.1. IdM 웹 UI에 기본 DNS 영역 추가

RHEL IdM(Identity Management) 웹 UI를 사용하여 기본 DNS 영역을 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.

    그림 2.1. IdM DNS 기본 영역 관리

    사용자가 Network Services 탭으로 이동하여 DNS 하위 메뉴에서 DNS 영역을 선택한 화면입니다.
  2. 모든 영역 목록의 맨 위에 있는 추가 를 클릭합니다.
  3. 영역 이름을 제공합니다.

    그림 2.2. 새 IdM 기본 영역 입력

    사용자가
  4. 추가 를 클릭합니다.

2.2. IdM CLI에서 기본 DNS 영역 추가

RHEL IdM(Identity Management) CLI(명령줄 인터페이스)를 사용하여 기본 DNS 영역을 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  • ipa dnszone-add 명령은 DNS 도메인에 새 영역을 추가합니다. 새 영역을 추가하려면 새 하위 도메인의 이름을 지정해야 합니다. 명령을 사용하여 하위 도메인 이름을 직접 전달할 수 있습니다.

    $ ipa dnszone-add newzone.idm.example.com

    ipa dnszone-add 에 이름을 전달하지 않으면 스크립트에서 자동으로 해당 이름을 입력하라는 메시지를 표시합니다.

2.3. IdM 웹 UI에서 기본 DNS 영역 제거

IdM 웹 UI를 사용하여 RHEL IdM(Identity Management)에서 기본 DNS 영역을 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.
  2. 영역 이름으로 확인란을 선택하고 삭제 를 클릭합니다.

    그림 2.3. 기본 DNS 영역 제거

  3. Remove DNS zones dialog 창에서 선택한 영역을 삭제하도록 확인합니다.

2.4. IdM CLI에서 기본 DNS 영역 제거

IdM CLI(명령줄 인터페이스)를 사용하여 RHEL IdM(Identity Management)에서 기본 DNS 영역을 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  • 기본 DNS 영역을 제거하려면 ipa dnszone-del 명령 다음에 제거할 영역의 이름을 입력합니다. 예를 들면 다음과 같습니다.

    $ ipa dnszone-del idm.example.com

2.5. DNS 구성 우선순위

다음 수준에서 많은 DNS 구성 옵션을 구성할 수 있습니다. 각 수준은 다른 우선 순위를 갖습니다.

영역별 구성
IdM에 정의된 특정 영역에 대한 구성 수준은 우선 순위가 가장 높습니다. ipa dnszone-*ipa dnsforwardzone-* 명령을 사용하여 영역별 구성을 관리할 수 있습니다.
서버별 구성
IdM 서버를 설치하는 동안 서버별 전달자를 정의해야 합니다. ipa dnsserver-* 명령을 사용하여 서버별 전달자를 관리할 수 있습니다. 복제본을 설치할 때 서버별 전달자를 설정하지 않으려면 --no-forwarder 옵션을 사용할 수 있습니다.
글로벌 DNS 구성
영역별 구성이 정의되지 않은 경우 IdM은 LDAP에 저장된 글로벌 DNS 구성을 사용합니다. ipa dnsconfig-* 명령을 사용하여 글로벌 DNS 구성을 관리할 수 있습니다. 글로벌 DNS 구성에 정의된 설정은 모든 IdM DNS 서버에 적용됩니다.
/etc/named.conf의 구성

각 IdM DNS 서버의 /etc/named.conf 파일에 정의된 구성의 우선 순위가 가장 낮습니다. 각 서버에 대해 고유하며 수동으로 편집해야 합니다.

/etc/named.conf 파일은 일반적으로 로컬 DNS 캐시로 DNS 전달을 지정하는 데만 사용됩니다. 기타 옵션은 위에서 언급한 영역별 및 글로벌 DNS 구성에 대해 명령을 사용하여 관리합니다.

동시에 여러 수준에서 DNS 옵션을 구성할 수 있습니다. 이러한 경우 우선 순위가 가장 높은 구성이 더 낮은 수준에서 정의된 구성보다 우선합니다.

2.6. 기본 IdM DNS 영역의 구성 속성

RHEL IdM(Identity Management)은 새로 고침 기간, 전송 설정 또는 캐시 설정과 같은 특정 기본 구성을 사용하여 새 영역을 생성합니다. IdM DNS 영역 속성에서 는 다음 옵션 중 하나를 사용하여 수정할 수 있는 기본 영역 구성의 속성을 찾을 수 있습니다.

영역에 대한 실제 정보를 설정하는 것과 함께 설정은 DNS 서버가 권한 시작 (SOA) 레코드 항목을 처리하는 방법과 DNS 이름 서버에서 레코드를 업데이트하는 방법을 정의합니다.

Expand
표 2.1. IdM DNS 영역 속성
속성명령줄 옵션설명

권한 있는 이름 서버

--name-server

SOA MNAME이라고도 하는 기본 DNS 이름 서버의 도메인 이름을 설정합니다.

기본적으로 각 IdM 서버는 SOA MNAME 필드에 자신을 알립니다. 결과적으로 --name-server 를 사용하여 LDAP에 저장된 값이 무시됩니다.

관리자 이메일 주소

--admin-email

영역 관리자에게 사용할 이메일 주소를 설정합니다. 기본값은 호스트의 root 계정입니다.

SOA 직렬

--serial

SOA 레코드에서 일련 번호를 설정합니다. IdM은 버전 번호를 자동으로 설정하고 사용자는 수정할 필요가 없습니다.

SOA 새로 고침

--refresh

보조 DNS 서버가 기본 DNS 서버에서 업데이트를 요청하기 전에 대기하는 간격(초)을 설정합니다.

SOA 재시도

--retry

실패한 새로 고침 작업을 다시 시도하기 전에 대기하는 시간(초)을 설정합니다.

SOA 만료

--expire

작업 시도를 종료하기 전에 보조 DNS 서버가 새로 고침 업데이트를 수행하려고 하는 시간(초)을 설정합니다.

SOA 최소

--minimum

RFC 2308 에 따른 음수 캐싱을 위해 time을 live(TTL) 값으로 설정합니다.

SOA 시간

--ttl

영역 apex에서 레코드에 대한 TTL을 초 단위로 설정합니다. 영역 example.com 에서 example.com이라는 이름의 모든 레코드(A, NS 또는 SOA)가 구성되지만 test.example.com 과 같은 다른 도메인 이름은 영향을 받지 않습니다.

기본 활성화 시간

--default-ttl

이전에 설정한 개별 TTL 값이 없는 영역의 모든 값에 대한 음수 캐싱의 경우 기본값을 live(TTL) 값으로 설정합니다.

BIND 업데이트 정책

--update-policy

DNS 영역에서 클라이언트에 허용되는 권한을 설정합니다.

동적 업데이트

--dynamic-update=TRUE|FALSE

클라이언트의 DNS 레코드에 대한 동적 업데이트를 활성화합니다.

이 값을 false로 설정하면 IdM 클라이언트 시스템에서 IP 주소를 추가하거나 업데이트할 수 없습니다.

전송 허용

--allow-transfer=string

지정된 영역(;)으로 구분된 지정된 영역을 전송할 수 있는 IP 주소 또는 네트워크 이름 목록을 지정합니다.

영역 전송은 기본적으로 비활성화되어 있습니다. 기본값 --allow-transfer 값은 none 입니다.

쿼리 허용

--allow-query

parameters(;)로 구분된 DNS 쿼리를 실행할 수 있는 IP 주소 또는 네트워크 이름 목록을 제공합니다.

PTR 동기화 허용

--allow-sync-ptr=1|0

영역의 A 또는 AAAA 레코드(전달 레코드)가 PTR(반복) 레코드와 자동으로 동기화되는지 여부를 설정합니다.

영역 전달자

--forwarder=IP_address

DNS 영역에 대해 특별히 구성된 전달자를 지정합니다. 이는 IdM 도메인에 사용된 글로벌 전달자와 다릅니다.

여러 전달자를 지정하려면 옵션을 여러 번 사용합니다.

전달 정책

--forward-policy=none|only|first

전달 정책을 지정합니다. 지원되는 정책에 대한 자세한 내용은 IdM의 DNS 전달 정책을 참조하십시오.

2.7. IdM 웹 UI에서 기본 DNS 영역의 구성 편집

IdM 웹 UI를 사용하여 기본 RHEL IdM(Identity Management) DNS의 구성 속성을 편집하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.

    그림 2.4. DNS 기본 영역 관리

    사용자가 Network Services 탭으로 이동하여 DNS 하위 메뉴에서 DNS 영역을 선택한 화면입니다.
  2. DNS 영역 섹션에서 모든 영역 목록에서 영역 이름을 클릭하여 DNS 영역 페이지를 엽니다.

    그림 2.5. 기본 영역 편집

    DNS 영역 페이지 왼쪽에 표시되는 DNS 영역의 항목을 강조 표시하는 스크린샷
  3. 설정을 클릭합니다.

    그림 2.6. 기본 영역 편집 페이지의 설정 탭

    기본 영역 편집 페이지의 설정 탭을 강조 표시하는 스크린샷
  4. 필요에 따라 영역 구성을 변경합니다.

    사용 가능한 설정에 대한 자세한 내용은 IdM DNS 영역 특성을 참조하십시오.

  5. 저장을 클릭하여 새 구성을 확인합니다.

    참고

    영역의 기본 시간 (TTL)을 변경하는 경우 모든 IdM DNS 서버에서 named 서비스를 다시 시작하여 변경 사항이 적용됩니다. 다른 모든 설정은 즉시 자동으로 활성화됩니다.

2.8. IdM CLI에서 기본 DNS 영역의 구성 편집

RHEL IdM(Identity Management) CLI(명령줄 인터페이스)를 사용하여 기본 DNS 영역의 구성을 편집하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  • 기존 기본 DNS 영역을 수정하려면 ipa dnszone-mod 명령을 사용합니다. 예를 들어 실패한 새로 고침 작업을 다시 시도하기 전에 대기할 시간을 1800초로 설정하려면 다음을 수행합니다.

    $ ipa dnszone-mod --retry 1800

    사용 가능한 설정 및 해당 CLI 옵션에 대한 자세한 내용은 IdM DNS 영역 속성을 참조하십시오.

    특정 설정에 수정 중인 DNS 영역 항목에 값이 없는 경우 ipa dnszone-mod 명령은 값을 추가합니다. 설정에 값이 없는 경우 명령은 현재 값을 지정된 값으로 덮어씁니다.

    참고

    영역의 기본 시간 (TTL)을 변경하는 경우 모든 IdM DNS 서버에서 named 서비스를 다시 시작하여 변경 사항이 적용됩니다. 다른 모든 설정은 즉시 자동으로 활성화됩니다.

2.9. IdM에서 영역 전송

통합된 DNS가 있는 RHEL IdM(Identity Management) 배포에서 영역 전송을 사용하여 한 이름 서버의 모든 리소스 레코드를 다른 이름으로 복사할 수 있습니다. 이름 서버는 해당 영역에 대한 신뢰할 수 있는 데이터를 유지합니다. 영역 A DNS 영역에 권한이 있는 DNS 서버의 영역을 변경하는 경우 영역 A 외부에 있는 IdM DNS 도메인의 다른 이름 서버에 변경 사항을 배포해야 합니다.

중요

IdM 통합 DNS는 다른 서버에서 동시에 작성할 수 있습니다. IdM 영역의 SOA(시작) 일련 번호는 개별 IdM DNS 서버 간에 동기화되지 않습니다. 이러한 이유로 to-be-transferred 영역 외부에 있는 DNS 서버를 to-be-transferred 영역 내에서 하나의 특정 DNS 서버만 사용하도록 구성합니다. 이렇게 하면 동기화되지 않은 SOA 일련 번호로 인한 영역 전송 오류가 발생하지 않습니다.

IdM은 RFC 5936 (AXFR) 및 RFC Cryostat(IXFR) 표준에 따른 영역 전송을 지원합니다.

2.10. IdM 웹 UI에서 영역 전송 활성화

IdM 웹 UI를 사용하는 RHEL IdM(Identity Management)에서 영역 전송을 활성화하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.
  2. 설정을 클릭합니다.
  3. Allow transfer 에서 영역 레코드를 전송할 이름 서버를 지정합니다.

    그림 2.7. 영역 전송 활성화

    각각 다른 IP 주소가 있는 서버에 대해 세 개의 필드가 있는
  4. DNS 영역 페이지 상단에 있는 저장을 클릭하여 새 구성을 확인합니다.

2.11. IdM CLI에서 영역 전송 활성화

IdM CLI(명령줄 인터페이스)를 사용하여 RHEL IdM(Identity Management)에서 영역 전송을 활성화하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.
  • 보조 DNS 서버에 대한 루트 액세스 권한이 있습니다.

프로세스

  • BIND 서비스에서 영역 전송을 활성화하려면 ipa dnszone-mod 명령을 입력하고 --allow-transfer 옵션을 사용하여 영역 레코드가 전송될 to-be-transferred 영역 외부에 있는 이름 서버 목록을 지정합니다. 예를 들면 다음과 같습니다.

    $ ipa dnszone-mod --allow-transfer=192.0.2.1;198.51.100.1;203.0.113.1 idm.example.com

검증

  1. 영역 전송이 활성화된 DNS 서버 중 하나에 SSH를 실행하십시오.

    $ ssh 192.0.2.1
  2. dig 유틸리티와 같은 툴을 사용하여 IdM DNS 영역을 전송합니다.

    # dig @ipa-server zone_name AXFR

명령에서 오류를 반환하지 않으면 zone_name 에 대한 영역 전송을 성공적으로 활성화했습니다.

3장. Ansible 플레이북을 사용하여 IdM DNS 영역 관리

RHEL IdM(Identity Management) 관리자는 ansible-freeipa 패키지에서 사용할 수 있는 dnszone 모듈을 사용하여 IdM DNS 영역이 작동하는 방법을 관리할 수 있습니다.

사전 요구 사항

3.1. 지원되는 DNS 영역 유형

RHEL IdM(Identity Management)은 기본전달 영역이라는 두 가지 유형의 DNS 영역을 지원합니다. DNS 전달 시나리오를 포함하여 이러한 두 가지 유형의 영역에 대해 설명합니다.

참고

이 가이드에서는 Microsoft Windows DNS에 사용되는 용어와 다른 영역 유형에 BIND 용어를 사용합니다. BIND의 기본 영역은 Microsoft Windows DNS의 정방향 조회 영역역방향 조회 영역 과 동일한 용도로 사용됩니다. BIND의 전달 영역은 Microsoft Windows DNS의 조건부 전달자 와 동일한 목적을 수행합니다.

기본 DNS 영역

기본 DNS 영역에는 권한 있는 DNS 데이터가 포함되어 있으며 동적 DNS 업데이트를 허용할 수 있습니다. 이 동작은 표준 BIND 구성의 유형 마스터 설정과 동일합니다. ipa dnszone-* 명령을 사용하여 기본 영역을 관리할 수 있습니다.

표준 DNS 규칙에 따라 모든 기본 영역에는 권한 시작 (SOA) 및 이름 서버 (NS) 레코드가 포함되어야 합니다. DNS 영역이 생성되면 IdM에서 이러한 레코드를 자동으로 생성하지만 적절한 위임을 생성하려면 NS 레코드를 상위 영역에 수동으로 복사해야 합니다.

표준 BIND 동작에 따라 서버가 권한이 없는 이름에 대한 쿼리는 다른 DNS 서버로 전달됩니다. 전달자라고 하는 이러한 DNS 서버는 쿼리에 대해 권한이 없을 수도 있습니다.

예 3.1. DNS 전달 시나리오 예

IdM 서버에는 test.example. 기본 영역이 포함되어 있습니다. 이 영역에는 하위.test.example. 이름에 대한 NS 위임 레코드가 포함되어 있습니다. 또한 test.example. 영역은 sub.text.example 하위 영역의 192.0.2.254 전달자 IP 주소로 구성됩니다.

존재하지 않는.test.example 이라는 이름을 쿼리하는 클라이언트는 NXDomain 응답을 수신하고 IdM 서버가 이 이름에 대해 권한이 있기 때문에 전달이 발생하지 않습니다.

반면 IdM 서버는 이 이름에 대해 권한이 없으므로 host1.sub.test.example. 이름을 쿼리하는 것이 구성된 forwarder 192.0.2.254 로 전달됩니다.

정방향 DNS 영역

IdM의 관점에서 전달 DNS 영역에는 권한 있는 데이터가 포함되어 있지 않습니다. 사실, forward "zone"은 일반적으로 다음 두 가지 정보만 포함합니다.

  • 도메인 이름
  • 도메인과 연결된 DNS 서버의 IP 주소

정의된 도메인에 속하는 이름에 대한 모든 쿼리는 지정된 IP 주소로 전달됩니다. 이 동작은 표준 BIND 구성의 type forward 설정과 동일합니다. ipa dnsforwardzone-* 명령을 사용하여 전달 영역을 관리할 수 있습니다.

정방향 DNS 영역은 IdM-Active Directory(AD) 신뢰 컨텍스트에서 특히 유용합니다. IdM DNS 서버가 idm.example.com 영역에 권한이 있고 AD DNS 서버가 ad.example.com 영역에 권한이 있는 경우 ad.example.comidm.example.com 기본 영역에 대한 DNS 전달 영역입니다. 즉, somehost.ad.example.com 의 IP 주소에 대한 IdM 클라이언트에서 쿼리가 제공되면 ad.example.com IdM DNS 전달 영역에 지정된 AD 도메인 컨트롤러로 쿼리가 전달됩니다.

3.2. Ansible을 사용할 때 기본 IdM DNS 영역의 구성 속성

RHEL IdM(Identity Management)은 새로 고침 기간, 전송 설정 또는 캐시 설정과 같은 특정 기본 구성을 사용하여 새 영역을 생성합니다. IdM DNS 영역 속성에서는 ipadnszone 모듈을 사용하는 Ansible 플레이북을 사용하여 수정할 수 있는 기본 영역 구성의 속성을 찾을 수 있습니다.

영역에 대한 실제 정보를 설정하는 것과 함께 설정은 DNS 서버가 권한 시작 (SOA) 레코드 항목을 처리하는 방법과 DNS 이름 서버에서 레코드를 업데이트하는 방법을 정의합니다.

Expand
표 3.1. IdM DNS 영역 속성
속성ansible-freeipa 변수설명

권한 있는 이름 서버

name_server

SOA MNAME이라고도 하는 기본 DNS 이름 서버의 도메인 이름을 설정합니다.

기본적으로 각 IdM 서버는 SOA MNAME 필드에 자신을 알립니다. 결과적으로 --name-server 를 사용하여 LDAP에 저장된 값이 무시됩니다.

관리자 이메일 주소

admin_email

영역 관리자에게 사용할 이메일 주소를 설정합니다. 기본값은 호스트의 root 계정입니다.

SOA 직렬

직렬

SOA 레코드에서 일련 번호를 설정합니다. IdM은 버전 번호를 자동으로 설정하고 사용자는 수정할 필요가 없습니다.

SOA 새로 고침

새로고침

보조 DNS 서버가 기본 DNS 서버에서 업데이트를 요청하기 전에 대기하는 간격(초)을 설정합니다.

SOA 재시도

retry

실패한 새로 고침 작업을 다시 시도하기 전에 대기하는 시간(초)을 설정합니다.

SOA 만료

만료

작업 시도를 종료하기 전에 보조 DNS 서버가 새로 고침 업데이트를 수행하려고 하는 시간(초)을 설정합니다.

SOA 최소

최소

RFC 2308 에 따른 음수 캐싱을 위해 time을 live(TTL) 값으로 설정합니다.

SOA 시간

ttl

영역 apex에서 레코드에 대한 TTL을 초 단위로 설정합니다. 영역 example.com 에서 example.com이라는 이름의 모든 레코드(A, NS 또는 SOA)가 구성되지만 test.example.com 과 같은 다른 도메인 이름은 영향을 받지 않습니다.

기본 활성화 시간

default_ttl

이전에 설정한 개별 TTL 값이 없는 영역의 모든 값에 대한 음수 캐싱의 경우 기본값을 live(TTL) 값으로 설정합니다.

BIND 업데이트 정책

update_policy

DNS 영역에서 클라이언트에 허용되는 권한을 설정합니다.

동적 업데이트

dynamic_update=TRUE|FALSE

클라이언트의 DNS 레코드에 대한 동적 업데이트를 활성화합니다.

이 값을 false로 설정하면 IdM 클라이언트 시스템에서 IP 주소를 추가하거나 업데이트할 수 없습니다.

전송 허용

allow_transfer=string

지정된 영역(;)으로 구분된 지정된 영역을 전송할 수 있는 IP 주소 또는 네트워크 이름 목록을 지정합니다.

영역 전송은 기본적으로 비활성화되어 있습니다. 기본 allow_transfer 값은 none 입니다.

쿼리 허용

allow_query

parameters(;)로 구분된 DNS 쿼리를 실행할 수 있는 IP 주소 또는 네트워크 이름 목록을 제공합니다.

PTR 동기화 허용

allow_sync_ptr=1|0

영역의 A 또는 AAAA 레코드(전달 레코드)가 PTR(반복) 레코드와 자동으로 동기화되는지 여부를 설정합니다.

영역 전달자

forwarder=IP_address

DNS 영역에 대해 특별히 구성된 전달자를 지정합니다. 이는 IdM 도메인에 사용된 글로벌 전달자와 다릅니다.

여러 전달자를 지정하려면 옵션을 여러 번 사용합니다.

전달 정책

forward_policy=none|only|first

전달 정책을 지정합니다. 지원되는 정책에 대한 자세한 내용은 IdM의 DNS 전달 정책을 참조하십시오.

3.3. Ansible을 사용하여 IdM DNS에 기본 영역 생성

Ansible 플레이북을 사용하여 기본 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서는 zone.idm.example.com DNS 영역이 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM 관리자 암호를 알고 있습니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone 디렉터리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
  2. 인벤토리 파일을 열고 구성할 IdM 서버가 [ipaserver] 섹션에 나열되어 있는지 확인합니다. 예를 들어, Ansible에 server.idm.example.com 을 구성하도록 지시하려면 다음을 입력합니다.

    [ipaserver]
    server.idm.example.com
  3. dnszone-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp dnszone-present.yml dnszone-present-copy.yml
  4. 편집을 위해 dnszone-present-copy.yml 파일을 엽니다.
  5. ipadnszone 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • zone_name 변수를 zone.idm.example.com 으로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Ensure dnszone present
      hosts: ipaserver
      become: true
    
      tasks:
      - name: Ensure zone is present.
        ipadnszone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          zone_name: zone.idm.example.com
          state: present
  6. 파일을 저장합니다.
  7. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.yml

Ansible 플레이북을 사용하여 기본 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예제에서 IdM 관리자는 zone.idm.example.com DNS 영역이 있는지 확인합니다. Ansible 플레이북은 영역의 여러 매개 변수를 구성합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone 디렉터리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
  2. dnszone-all-params.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp dnszone-all-params.yml dnszone-all-params-copy.yml
  3. 편집을 위해 dnszone-all-params-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnszone 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • zone_name 변수를 zone.idm.example.com 으로 설정합니다.
    • 정방향 및 역방향 레코드 동기화, 즉 PTR 레코드와 AAAA 레코드의 동기화를 허용하려면 allow_sync_ptr 변수를 true로 설정합니다.
    • IdM 클라이언트 시스템이 IP 주소를 추가하거나 업데이트할 수 있도록 dynamic_update 변수를 true로 설정합니다.
    • 영역에 있는 레코드 인라인 DNSSEC 서명을 허용하려면 dnssec 변수를 true로 설정합니다.
    • allow_transfer 변수를 영역에 있는 보조 이름 서버의 IP 주소로 설정합니다.
    • allow_query 변수를 쿼리를 발행할 수 있는 IP 주소 또는 네트워크로 설정합니다.
    • forwarders 변수를 글로벌 전달자의 IP 주소로 설정합니다.
    • serial 변수를 SOA 레코드 일련 번호로 설정합니다.
    • 영역의 DNS 레코드에 대한 새로 고침,재시도,만료,최소,ttldefault_ttl 값을 정의합니다.
    • nsec3param_rec 변수를 사용하여 영역의 NSEC3PARAM 레코드를 정의합니다.
    • skip_overlap_check 변수를 true로 설정하여 기존 영역과 겹치는 경우에도 DNS 생성을 강제 적용합니다.
    • 이름 서버를 확인할 수 없는 경우에도 skip_nameserver_check 를 true로 설정하여 DNS 영역 생성을 강제 적용합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Ensure dnszone present
      hosts: ipaserver
      become: true
    
      tasks:
      - name: Ensure zone is present.
        freeipa.ansible_freeipa.ipadnszone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          zone_name: zone.idm.example.com
          allow_sync_ptr: true
          dynamic_update: true
          dnssec: true
          allow_transfer:
            - 1.1.1.1
            - 2.2.2.2
          allow_query:
            - 1.1.1.1
            - 2.2.2.2
          forwarders:
            - ip_address: 8.8.8.8
            - ip_address: 8.8.4.4
              port: 52
          serial: 1234
          refresh: 3600
          retry: 900
          expire: 1209600
          minimum: 3600
          ttl: 60
          default_ttl: 90
          name_server: server.idm.example.com.
          admin_email: admin.admin@idm.example.com
          nsec3param_rec: "1 7 100 0123456789abcdef"
          skip_overlap_check: true
          skip_nameserver_check: true
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.yml

Ansible 플레이북을 사용하여 역방향 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 IdM 관리자는 IdM 호스트의 IP 주소 및 접두사 길이를 사용하여 역방향 DNS 조회 영역이 있는지 확인합니다.

name_from_ip 변수를 사용하여 DNS 서버의 IP 주소 접두사 길이를 제공하면 영역 이름을 제어할 수 있습니다. 접두사 길이를 지정하지 않으면 시스템은 DNS 서버에 영역 및 name_from_ip 값을 기반으로 DNS 서버를 쿼리하지 않으면 쿼리에서 다음 DNS 영역 중 하나를 반환할 수 있습니다.

  • 1.168.192.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 192.in-addr.arpa.

쿼리에서 반환된 영역이 예상하지 않을 수 있으므로 name_from_ip 는 영역의 실수로 제거되지 않도록 state 옵션 집합에서만 사용할 수 있습니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone 디렉터리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
  2. dnszone-reverse-from-ip.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml
  3. 편집을 위해 dnszone-reverse-from-ip-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnszone 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • name_from_ip 변수를 IdM 이름 서버의 IP로 설정하고 접두사 길이를 제공합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

      ---
      - name: Ensure dnszone present
        hosts: ipaserver
        become: true
      
        tasks:
        - name: Ensure zone for reverse DNS lookup is present.
          freeipa.ansible_freeipa.ipadnszone:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name_from_ip: 192.168.1.2/24
            state: present
          register: result
        - name: Display inferred zone name.
          debug:
            msg: "Zone name: {{ result.dnszone.name }}"

    플레이북은 192.168.1.2 IP 주소 및 접두사 길이 24에서 역방향 DNS 조회를 위한 영역을 생성합니다. 다음으로 플레이북에 결과 영역 이름이 표시됩니다.

  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.yml

4장. IdM에서 DNS 위치 관리

IdM 웹 UI 및 IdM CLI(명령줄 인터페이스)를 사용하여 RHEL IdM(Identity Management) DNS 위치 관리에 대해 알아봅니다.

사전 요구 사항

4.1. IdM 웹 UI를 사용하여 DNS 위치 생성

DNS 위치를 사용하여 RHEL IdM(Identity Management) 클라이언트와 서버 간의 통신 속도를 높일 수 있습니다. IdM 웹 UI를 사용하여 DNS 위치를 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 배포에는 통합 DNS가 있습니다.
  • IdM에서 DNS 위치를 생성할 수 있는 권한이 있습니다. 예를 들어 IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IPA 서버 탭을 엽니다.
  2. Topology 를 선택합니다.
  3. 탐색 모음 에서 IPA 위치를 클릭합니다.
  4. 위치 목록의 맨 위에 있는 추가 를 클릭합니다.
  5. 위치 이름을 입력합니다.
  6. 추가 버튼을 클릭하여 위치를 저장합니다.
  7. 선택 사항: 단계를 반복하여 추가 위치를 추가합니다.

4.2. IdM CLI를 사용하여 DNS 위치 생성

DNS 위치를 사용하여 RHEL IdM(Identity Management) 클라이언트와 서버 간의 통신 속도를 높일 수 있습니다. 다음 절차에 따라 IdM CLI(명령줄 인터페이스)에서 ipa location-add 명령을 사용하여 DNS 위치를 생성합니다.

사전 요구 사항

  • IdM 배포에는 통합 DNS가 있습니다.
  • IdM에서 DNS 위치를 생성할 수 있는 권한이 있습니다. 예를 들어 IdM 관리자로 로그인되어 있습니다.

프로세스

  1. 예를 들어 새 위치 germany 를 생성하려면 다음을 입력합니다.

    $ ipa location-add germany
    ----------------------------
    Added IPA location "germany"
    ----------------------------
      Location name: germany
  2. 선택 사항: 단계를 반복하여 추가 위치를 추가합니다.

4.3. IdM 웹 UI를 사용하여 DNS 위치에 IdM 서버 할당

RHEL IdM(Identity Management) DNS 위치를 사용하여 IdM 클라이언트와 서버 간 통신 속도를 높일 수 있습니다. IdM 웹 UI를 사용하여 DNS 위치에 IdM 서버를 할당하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 배포에는 통합 DNS가 있습니다.
  • DNS 위치에 서버를 할당할 수 있는 권한이 있는 사용자로 로그인했습니다(예: IdM 관리자).
  • DNS 위치를 할당할 호스트에 대한 루트 액세스 권한이 있습니다.
  • 서버 를 할당하려는 IdM DNS 위치를 생성 했습니다.

프로세스

  1. IPA 서버 탭을 엽니다.
  2. Topology 를 선택합니다.
  3. 탐색에서 IPA 서버 를 클릭합니다.
  4. IdM 서버 이름을 클릭합니다.
  5. DNS 위치를 선택하고 선택적으로 서비스 가중치를 설정합니다.

    그림 4.1. DNS 위치에 서버 할당

    DNS 위치 할당 서버
  6. 저장을 클릭합니다.
  7. 이전 단계에서 할당한 호스트의 CLI(명령줄)에서 에 대한 DNS 위치를 다시 시작하여 이름이 지정된 서비스를 다시 시작합니다.

    [root@idmserver-01 ~]# systemctl restart named
  8. 선택 사항: 추가 IdM 서버에 DNS 위치를 할당하는 단계를 반복합니다.

4.4. IdM CLI를 사용하여 DNS 위치에 IdM 서버 할당

RHEL IdM(Identity Management) DNS 위치를 사용하여 IdM 클라이언트와 서버 간 통신 속도를 높일 수 있습니다. IdM CLI(명령줄 인터페이스)를 사용하여 DNS 위치에 IdM 서버를 할당하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 배포에는 통합 DNS가 있습니다.
  • DNS 위치에 서버를 할당할 수 있는 권한이 있는 사용자로 로그인했습니다(예: IdM 관리자).
  • DNS 위치를 할당할 호스트에 대한 루트 액세스 권한이 있습니다.
  • 서버 를 할당하려는 IdM DNS 위치를 생성 했습니다.

프로세스

  1. 선택 사항: 구성된 모든 DNS 위치를 나열합니다.

    [root@server ~]# ipa location-find
    -----------------------
    2 IPA locations matched
    -----------------------
    Location name: australia
    Location name: germany
    -----------------------------
    Number of entries returned: 2
    -----------------------------
  2. 서버를 DNS 위치에 할당합니다. 예를 들어 서버 idmserver-01.idm.example.com 에 위치 germany 를 할당하려면 다음을 실행합니다.

    # ipa server-mod idmserver-01.idm.example.com --location=germany
    [...]
    --------------------------------------------------
    Modified IPA server "idmserver-01.idm.example.com"
    --------------------------------------------------
    Servername: idmserver-01.idm.example.com
    Min domain level: 0
    Max domain level: 1
    Location: germany
    Enabled server roles: DNS server, NTP server
  3. 이전 단계에서 할당한 호스트에서 named 서비스를 다시 시작하십시오. DNS 위치는 다음과 같습니다.

    # systemctl restart named
  4. 선택 사항: 추가 IdM 서버에 DNS 위치를 할당하는 단계를 반복합니다.

4.5. 동일한 위치에서 IdM 서버를 사용하도록 IdM 클라이언트 구성

RHEL IdM(Identity Management) 서버는 IdM 웹 UI를 사용하여 DNS 위치에 IdM 서버 할당에 설명된 대로 DNS 위치에 할당됩니다. 이제 IdM 서버와 동일한 위치에 있는 DNS 서버를 사용하도록 클라이언트를 구성할 수 있습니다.

  • DHCP 서버가 DNS 서버 IP 주소를 클라이언트에 할당하는 경우 DHCP 서비스를 구성합니다. DHCP 서비스에서 DNS 서버를 할당하는 방법에 대한 자세한 내용은 DHCP 서비스 설명서를 참조하십시오.
  • 클라이언트에서 DHCP 서버에서 DNS 서버 IP 주소를 수신하지 않으면 클라이언트의 네트워크 구성에서 IP를 수동으로 설정합니다. Red Hat Enterprise Linux에서 네트워크를 구성하는 방법에 대한 자세한 내용은 Red Hat Enterprise Linux 네트워킹 가이드의 네트워크 연결 설정 구성 섹션을 참조하십시오.
참고

다른 위치에 할당된 DNS 서버를 사용하도록 클라이언트를 구성하는 경우 클라이언트는 두 위치의 IdM 서버에 연결합니다.

예 4.1. 클라이언트의 위치에 따라 다른 이름 서버 항목

다음 예제에서는 다른 위치에 있는 클라이언트의 /etc/resolv.conf 파일의 다른 이름 서버 항목을 보여줍니다.

프라하의 고객:

nameserver 10.10.0.1
nameserver 10.10.0.2

파키스탄의 고객:

nameserver 10.50.0.1
nameserver 10.50.0.3

Oslo의 고객:

nameserver 10.30.0.1

원래의 고객:

nameserver 10.30.0.1

각 DNS 서버가 IdM의 위치에 할당되면 클라이언트는 해당 위치에서 IdM 서버를 사용합니다.

5장. Ansible을 사용하여 IdM의 DNS 위치 관리

IdM(Identity Management) 관리자는 ansible-freeipa 패키지에서 사용할 수 있는 location 모듈을 사용하여 IdM DNS 위치를 관리할 수 있습니다.

5.1. DNS 기반 서비스 검색

DNS 기반 서비스 검색은 클라이언트가 DNS 프로토콜을 사용하여 LDAP 또는 Kerberos 와 같은 특정 서비스를 제공하는 네트워크에서 서버를 찾는 프로세스입니다. 일반적인 작업 유형 중 하나는 클라이언트가 더 높은 처리량과 네트워크 대기 시간을 줄여 전체 비용을 낮추기 때문에 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 하는 것입니다.

서비스 검색의 주요 이점은 다음과 같습니다.

  • 가까운 서버의 이름으로 클라이언트를 명시적으로 구성할 필요가 없습니다.
  • DNS 서버는 정책의 중앙 공급자로 사용됩니다. 동일한 DNS 서버를 사용하는 클라이언트는 서비스 공급자 및 선호하는 순서에 대한 동일한 정책에 액세스할 수 있습니다.

RHEL IdM(Identity Management) 도메인에는 LDAP,Kerberos 및 기타 서비스에 대한 DNS 서비스 레코드(SRV 레코드)가 있습니다. 예를 들어 다음 명령은 IdM DNS 도메인에 TCP 기반 Kerberos 서비스를 제공하는 호스트의 DNS 서버를 쿼리합니다.

예 5.1. DNS 위치 독립적인 결과

$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.

출력에는 다음 정보가 포함됩니다.

  • 0 (우선 순위): 대상 호스트의 우선 순위입니다. 더 낮은 값이 우선합니다.
  • 100 (중량). 우선순위가 동일한 항목의 상대적 가중치를 지정합니다. 자세한 내용은 RFC 2782, section 3 에서 참조하십시오.
  • 88 (포트 번호): 서비스 포트 번호.
  • 서비스를 제공하는 호스트의 표준 이름입니다.

이 예제에서는 반환된 두 호스트 이름의 우선순위와 weight가 동일합니다. 이 경우 클라이언트는 결과 목록의 임의의 항목을 사용합니다.

클라이언트가 DNS 위치에 구성된 DNS 서버를 쿼리하도록 구성된 대신 출력은 다릅니다. 위치에 할당된 IdM 서버의 경우 맞춤형 값이 반환됩니다. 아래 예제에서 클라이언트는 germany 위치에서 DNS 서버를 쿼리하도록 구성되어 있습니다.

예 5.2. DNS 위치 기반 결과

$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.

IdM DNS 서버는 로컬 서버를 선호하는 DNS 위치별 SRV 레코드를 가리키는 CNAME(DNS 별칭)을 자동으로 반환합니다. 이 CNAME 레코드는 출력의 첫 번째 행에 표시됩니다. 이 예에서 호스트 idmserver-01.idm.example.com 은 가장 낮은 우선순위 값을 가지므로 선호됩니다. idmserver-02.idm.example.com 은 우선 순위가 높으므로 기본 호스트를 사용할 수 없는 경우 백업으로만 사용됩니다.

5.2. DNS 위치에 대한 배포 고려 사항

RHEL IdM(Identity Management)은 통합 DNS를 사용할 때 위치별 서비스(SRV) 레코드를 생성할 수 있습니다. 각 IdM DNS 서버는 위치별 SRV 레코드를 생성하므로 각 DNS 위치에 하나 이상의 IdM DNS 서버를 설치해야 합니다.

DNS 위치에 대한 클라이언트의 선호도는 클라이언트에서 수신한 DNS 레코드에 의해서만 정의됩니다. 이러한 이유로 DNS 서비스 검색을 수행하는 클라이언트가 IdM DNS 서버에서 위치별 레코드를 확인하는 경우 IdM DNS 서버와 IdM DNS 소비자 서버를 결합하고 반복기를 결합할 수 있습니다.

대부분의 배포에서는 IdM 및 비 IdM DNS 서비스가 포함된 대부분의 배포에서 DNS 재귀자가 라운드트립 시간 지표를 사용하여 가장 가까운 IdM DNS 서버를 자동으로 선택합니다. 일반적으로 IdM이 아닌 DNS 서버를 사용하는 클라이언트가 가장 가까운 DNS 위치에 대한 레코드를 가져오고, 따라서 최적의 IdM 서버 세트를 사용합니다.

5.3. 라이브 DNS 시간 (TTL)

클라이언트는 영역 구성에 설정된 시간 동안 DNS 리소스 레코드를 캐시할 수 있습니다. 이 캐싱으로 인해 TTL(TTL) 값이 만료될 때까지 클라이언트는 변경 사항을 수신하지 못할 수 있습니다. RHEL IdM(Identity Management)의 기본 TTL 값은 1일 입니다.

클라이언트 컴퓨터가 사이트 간 로밍하는 경우 IdM DNS 영역의 TTL 값을 조정해야 합니다. 클라이언트가 사이트 간에 로밍하는 데 필요한 시간보다 낮은 값으로 값을 설정합니다. 이렇게 하면 클라이언트에서 캐시된 DNS 항목이 다른 사이트에 다시 연결되기 전에 만료되므로 DNS 서버를 쿼리하여 위치별 SRV 레코드를 새로 고칩니다.

5.4. Ansible을 사용하여 IdM 위치가 있는지 확인

RHEL IdM(Identity Management)의 시스템 관리자는 클라이언트가 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 IdM DNS 위치를 구성할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 DNS 위치가 IdM에 있는지 확인하는 방법을 설명합니다. 이 예제에서는 IdM에 germany DNS 위치가 있는지 확인하는 방법을 설명합니다. 결과적으로 로컬 IdM 클라이언트가 서버 응답 시간을 단축하는 데 사용할 수 있도록 특정 IdM 서버를 이 위치에 할당할 수 있습니다.

사전 요구 사항

  • 제어 노드에서 다음을 수행합니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • DNS 위치에 대한 배포 고려 사항을 이해하십시오.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/ 디렉터리에 있는 location-present.yml 파일의 사본을 만듭니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-present.yml location-present-copy.yml
  3. 편집할 location-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipalocation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 맞게 작업 이름을 조정합니다.
    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • name 변수를 위치 이름으로 설정합니다.

    현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: location present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "germany" location is present
        freeipa.ansible_freeipa.ipalocation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: germany
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. 플레이북 파일을 지정하고 secret.yml 파일을 보호하는 암호를 저장하는 파일 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.yml

5.5. Ansible을 사용하여 IdM 위치가 없는지 확인

RHEL IdM(Identity Management)의 시스템 관리자는 클라이언트가 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 IdM DNS 위치를 구성할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 DNS 위치가 없는지 확인하는 방법을 설명합니다. 이 예제에서는 IdM에 germany DNS 위치가 없는지 확인하는 방법을 설명합니다. 결과적으로 특정 IdM 서버를 이 위치에 할당할 수 없으며 로컬 IdM 클라이언트는 이를 사용할 수 없습니다.

사전 요구 사항

  • 많은 DNS 위치에 IdM 서버가 할당되지 않습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • 이 예제에서는 ~/MyPlaybooks/ 디렉터리를 샘플 플레이북의 복사본을 저장할 중앙 위치로 생성 및 구성 했다고 가정합니다.

프로세스

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  2. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/ 디렉터리에 있는 location-absent.yml 파일의 사본을 만듭니다.

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-absent.yml location-absent-copy.yml
  3. 편집할 location-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipalocation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 맞게 작업 이름을 조정합니다.
    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • name 변수를 DNS 위치의 이름으로 설정합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.

    현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: location absent example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "germany" location is absent
        freeipa.ansible_freeipa.ipalocation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: germany
          state: absent
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. 플레이북 파일을 지정하고 secret.yml 파일을 보호하는 암호를 저장하는 파일 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.yml

6장. IdM에서 DNS 전달 관리

IdM(Identity Management) 웹 UI, IdM CLI 및 Ansible 사용에서 DNS 글로벌 전달자 및 DNS 전달 영역을 구성하는 방법을 알아봅니다.

6.1. IdM DNS 서버의 두 가지 역할

DNS 전달은 DNS 서비스에서 DNS 쿼리에 응답하는 방법에 영향을 미칩니다. 기본적으로 IdM과 통합된 Berkeley Internet Name Domain(BIND) 서비스는 권한 있는 DNS 서버 및 재귀 DNS 서버 역할을 합니다.

권한 있는 DNS 서버
DNS 클라이언트가 IdM 서버가 권한이 있는 DNS 영역에 속하는 이름을 쿼리하면 BIND는 구성된 영역에 포함된 데이터로 응답합니다. 권한 있는 데이터는 항상 다른 데이터보다 우선합니다.
재귀 DNS 서버
DNS 클라이언트에서 IdM 서버가 권한이 없는 이름을 쿼리하면 BIND에서 다른 DNS 서버를 사용하여 쿼리를 확인하려고 합니다. 전달자가 정의되지 않은 경우 BIND에서 인터넷의 루트 서버를 요청하고 재귀 확인 알고리즘을 사용하여 DNS 쿼리에 응답합니다.

경우에 따라 BIND에서 다른 DNS 서버에 직접 연결하고 인터넷에서 사용 가능한 데이터를 기반으로 재귀를 수행하는 것이 바람직하지 않습니다. 쿼리를 확인하기 위해 다른 DNS 서버인 전달자 를 사용하도록 BIND를 구성할 수 있습니다.

전달자를 사용하도록 BIND를 구성할 때 IdM 서버와 전달자 간에 쿼리 및 응답이 전달되고 IdM 서버는 인증되지 않은 데이터에 대한 DNS 캐시 역할을 합니다.

6.2. IdM 웹 UI에 글로벌 전달자 추가

IdM(Identity Management) 웹 UI에 글로벌 DNS 전달자를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 IdM WebUI에 로그인되어 있습니다.
  • 쿼리를 전달할 DNS 서버의 인터넷 프로토콜(IP) 주소를 알고 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNS 글로벌 구성 → DNS 를 선택합니다.

    DNS 메뉴에서 DNS 전달 영역 선택
  2. DNS 글로벌 구성 섹션에서 추가 를 클릭합니다.

    추가 버튼 선택
  3. 전달된 DNS 쿼리를 수신할 DNS 서버의 IP 주소를 지정합니다.

    글로벌 전달자의 IP 주소 입력
  4. Forward 정책을 선택합니다.

    DNS 전달 정책 선택 및 DNS 글로벌 구성 저장
  5. 창 상단에서 저장을 클릭합니다.

검증

  1. 네트워크 서비스DNS 글로벌 구성DNS 를 선택합니다.

    IdM 웹 UI에서 DNS 글로벌 구성 선택
  2. 지정한 전달 정책이 있고 IdM 웹 UI에 활성화되어 있는 글로벌 전달자가 있는지 확인합니다.

    글로벌 전달자의 존재 확인

6.3. CLI에서 글로벌 전달자 추가

CLI(명령줄)를 사용하여 글로벌 DNS 전달자를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.
  • 쿼리를 전달할 DNS 서버의 인터넷 프로토콜(IP) 주소를 알고 있습니다.

프로세스

  • ipa dnsconfig-mod 명령을 사용하여 새 글로벌 전달자를 추가합니다. --forwarder 옵션을 사용하여 DNS 전달자의 IP 주소를 지정합니다.

    [user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1
    Server will check DNS forwarder(s).
    This may take some time, please wait ...
      Global forwarders: 10.10.0.1
      IPA DNS servers: server.example.com

검증

  • dnsconfig-show 명령을 사용하여 글로벌 전달자를 표시합니다.

    [user@server ~]$ ipa dnsconfig-show
      Global forwarders: 10.10.0.1
      IPA DNS servers: server.example.com

6.4. IdM 웹 UI에 DNS 전달 영역 추가

IdM(Identity Management) 웹 UI에 DNS 전달 영역을 추가하려면 다음 절차를 따르십시오.

중요

전혀 필요하지 않은 한 전도 영역을 사용하지 마십시오. 전달 영역은 표준 솔루션이 아니며 이를 사용하면 예기치 않고 문제가 발생할 수 있습니다. 전달 영역을 사용해야 하는 경우 글로벌 전달 구성을 재정의하는 데 사용을 제한합니다.

새 DNS 영역을 생성할 때 Red Hat은 항상 이름 서버(NS) 레코드를 사용하여 표준 DNS 위임을 사용하고 전달 영역을 방지하는 것이 좋습니다. 대부분의 경우 글로벌 전달자를 사용하는 것으로 충분하며 전달 영역이 필요하지 않습니다.

사전 요구 사항

  • IdM 관리자로 IdM WebUI에 로그인되어 있습니다.
  • 쿼리를 전달할 DNS 서버의 인터넷 프로토콜(IP) 주소를 알고 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNS 전달 영역 → DNS 를 선택합니다.

    DNS 메뉴에서 DNS 전달 영역 선택
  2. DNS 전달 영역 섹션에서 추가 를 클릭합니다.

    추가 버튼 선택
  3. Add DNS forward zone 창에서 forward zone name을 지정합니다.

    새 전달 영역의 이름 입력
  4. 추가 버튼을 클릭하고 전달 요청을 수신할 DNS 서버의 IP 주소를 지정합니다. 전달 영역당 여러 전달자를 지정할 수 있습니다.

    전달자 DNS 서버의 IP 주소 지정
  5. Forward 정책을 선택합니다.

    Forward Policy 선택
  6. 창 하단에서 추가 를 클릭하여 새 전달 영역을 추가합니다.

검증

  1. IdM 웹 UI에서 네트워크 서비스DNS 전달 영역 → DNS 를 선택합니다.

    DNS 메뉴에서 DNS 전달 영역 선택
  2. 지정한 전달자 및 전달 정책을 사용하여 생성한 전달 영역이 IdM 웹 UI에 있고 활성화되어 있는지 확인합니다.

    새 정방향 영역이 있는지 확인

6.5. CLI에서 DNS 전달 영역 추가

CLI(명령줄)를 사용하여 DNS 전달 영역을 추가하려면 다음 절차를 따르십시오.

중요

전혀 필요하지 않은 한 전도 영역을 사용하지 마십시오. 전달 영역은 표준 솔루션이 아니며 이를 사용하면 예기치 않고 문제가 발생할 수 있습니다. 전달 영역을 사용해야 하는 경우 글로벌 전달 구성을 재정의하는 데 사용을 제한합니다.

새 DNS 영역을 생성할 때 Red Hat은 항상 이름 서버(NS) 레코드를 사용하여 표준 DNS 위임을 사용하고 전달 영역을 방지하는 것이 좋습니다. 대부분의 경우 글로벌 전달자를 사용하는 것으로 충분하며 전달 영역이 필요하지 않습니다.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.
  • 쿼리를 전달할 DNS 서버의 인터넷 프로토콜(IP) 주소를 알고 있습니다.

프로세스

  • dnsforwardzone-add 명령을 사용하여 새 forward 영역을 추가합니다. forward 정책이 none 이 아닌 경우 --forwarder 옵션을 사용하여 하나 이상의 전달자를 지정하고 --forward-policy 옵션을 사용하여 전달 정책을 지정합니다.

    [user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first
    
    Zone name: forward.example.com.
    Zone forwarders: 10.10.0.14, 10.10.1.15
    Forward policy: first

검증

  • dnsforwardzone-show 명령을 사용하여 방금 생성한 DNS 전달 영역을 표시합니다.

    [user@server ~]$ ipa dnsforwardzone-show forward.example.com.
    
    Zone name: forward.example.com.
    Zone forwarders: 10.10.0.14, 10.10.1.15
    Forward policy: first

6.6. Ansible을 사용하여 IdM에 DNS 글로벌 전달자 설정

Ansible 플레이북을 사용하여 IdM에서 DNS 글로벌 전달자를 설정하려면 다음 절차를 따르십시오.

아래 예제 절차에서 IdM 관리자는 IP(Internet Protocol) v4 주소 8.8.6.6 및 포트 53 의 IPv6 주소 2001:4860:4860::8800 을 사용하여 DNS 서버에 대한 DNS 글로벌 전달자를 생성합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. set-configuration.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp set-configuration.yml establish-global-forwarder.yml
  3. 편집을 위해 establish-global-forwarder.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS에서 글로벌 전달자를 설정합니다.
    2. tasks 섹션에서 DNS 글로벌 전달자를 8.8.6.6 및 2001:4860:4860::8800으로 생성하도록 작업의 이름을 변경합니다.
    3. freeipa.ansible_freeipa.ipadnsconfig 부분의 전달자 섹션에서 다음을 수행합니다.

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 8.8.6.6.
      2. 두 번째 ip_address 값을 글로벌 전달자 2001:4860:4860::8800 의 IPv6 주소로 변경합니다.
      3. port 값이 53 으로 설정되어 있는지 확인합니다.
    4. forward_policy 번째로 변경합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to establish a global forwarder in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Create a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800
        freeipa.ansible_freeipa.ipadnsconfig:
          forwarders:
            - ip_address: 8.8.6.6
            - ip_address: 2001:4860:4860::8800
              port: 53
          forward_policy: first
          allow_sync_ptr: true
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.yml

다음 절차에 따라 Ansible 플레이북을 사용하여 IdM에서 DNS 글로벌 전달자가 비활성화되었는지 확인합니다. 아래 예제 절차에서는 IdM 관리자가 글로벌 전달자의 전달 정책이 none 으로 설정되어 글로벌 전달자를 효과적으로 비활성화합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. 모든 DNS 글로벌 전달자를 비활성화하도록 이미 구성된 disable-global-forwarders.yml Ansible 플레이북 파일의 내용을 확인합니다. 예를 들면 다음과 같습니다.

    $ cat disable-global-forwarders.yml
    ---
    - name: Playbook to disable global DNS forwarders
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Disable global forwarders.
        freeipa.ansible_freeipa.ipadnsconfig:
          forward_policy: none
  3. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.yml

6.8. Ansible을 사용하여 IdM에 DNS 전달 영역이 있는지 확인

Ansible 플레이북을 사용하여 IdM에 DNS 전달 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 IP(Internet Protocol) 주소가 8.8.8.8 인 DNS 서버로 example.com 의 DNS 전달 영역이 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. forwarders-absent.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp forwarders-absent.yml ensure-presence-forwardzone.yml
  3. 편집을 위해 ensure-presence-forwardzone.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS에 dnsforwardzone이 있는지 확인합니다.
    2. tasks 섹션에서 작업 이름을 example.com의 dnsforwardzone이 있는지 확인하도록 8.8.8.8로 변경합니다.
    3. tasks 섹션에서 freeipa.ansible_freeipa.ipadnsconfig 제목을 freeipa.ansible_freeipa.ipadnsforwardzone 로 변경합니다.
    4. freeipa.ansible_freeipa.ipadnsforwardzone 섹션에서 다음을 수행합니다.

      1. ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. forwarders 섹션에서 다음을 수행합니다.

        1. ip_addressport 행을 제거합니다.
        2. 대시 후에 전달된 요청을 수신할 DNS 서버의 IP 주소를 추가합니다.

          - 8.8.8.8
      4. forwardpolicy 변수를 추가하고 먼저 설정합니다.
      5. skip_overlap_check 변수를 추가하고 true 로 설정합니다.
      6. state 변수를 present 로 변경합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to ensure the presence of a dnsforwardzone in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure the presence of a dnsforwardzone for example.com to 8.8.8.8
      freeipa.ansible_freeipa.ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: example.com
          forwarders:
              - 8.8.8.8
          forwardpolicy: first
          skip_overlap_check: true
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.yml

Ansible 플레이북을 사용하여 IdM의 DNS 전달 영역에 여러 전달자가 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서는 IdM 관리자가 example.com 의 DNS 전달 영역이 8.8.8.84.4.4.4 로 전달되는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. forwarders-absent.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml
  3. 편집을 위해 ensure-presence-multiple-forwarders.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS의 dnsforwardzone에 여러 전달자가 있는지 확인합니다.
    2. tasks 섹션에서 작업 이름을 dnsforwardzone의 8.8.8.8 및 4.4.4.4 전달자가 있는지 확인하도록 변경합니다.
    3. tasks 섹션에서 freeipa.ansible_freeipa.ipadnsconfig 제목을 freeipa.ansible_freeipa.ipadnsforwardzone 로 변경합니다.
    4. freeipa.ansible_freeipa.ipadnsforwardzone 섹션에서 다음을 수행합니다.

      1. ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. forwarders 섹션에서 다음을 수행합니다.

        1. ip_addressport 행을 제거합니다.
        2. 확인하려는 DNS 서버의 IP 주소를 추가합니다. 대시 앞에 대시를 추가합니다.

          - 8.8.8.8
          - 4.4.4.4
      4. state 변수를 present로 변경합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: name: Playbook to ensure the presence of multiple forwarders in a dnsforwardzone in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure presence of 8.8.8.8 and 4.4.4.4 forwarders in dnsforwardzone for example.com
      freeipa.ansible_freeipa.ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
         name: example.com
          forwarders:
              - 8.8.8.8
              - 4.4.4.4
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.yml

IdM에서 DNS 전달 영역이 비활성화되어 있는지 확인하려면 Ansible 플레이북을 사용하려면 다음 절차를 따르십시오. 아래 예제 절차에서는 IdM 관리자가 example.com 의 DNS 전달 영역이 비활성화되어 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. forwarders-absent.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp forwarders-absent.yml ensure-disabled-forwardzone.yml
  3. 편집할 ensure-disabled-forwardzone.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS에서 dnsforwardzone이 비활성화되었는지 확인합니다.
    2. tasks 섹션에서 작업 이름을 Ensure a dnsforwardzone for example.com is disabled 로 변경합니다.
    3. tasks 섹션에서 freeipa.ansible_freeipa.ipadnsconfig 제목을 freeipa.ansible_freeipa.ipadnsforwardzone 로 변경합니다.
    4. freeipa.ansible_freeipa.ipadnsforwardzone 섹션에서 다음을 수행합니다.

      1. ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전체 forwarders 섹션을 제거하십시오.
      4. state 변수를 disabled 로 변경합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to ensure a dnsforwardzone is disabled in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure a dnsforwardzone for example.com is disabled
      freeipa.ansible_freeipa.ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: example.com
          state: disabled
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.yml

6.11. Ansible을 사용하여 IdM에 DNS 전달 영역이 없는지 확인

다음 절차에 따라 Ansible 플레이북을 사용하여 IdM에 DNS 전달 영역이 없는지 확인합니다. 아래 예제 절차에서는 IdM 관리자가 example.com 의 DNS 전달 영역이 없는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
  2. forwarders-absent.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp forwarders-absent.yml ensure-absence-forwardzone.yml
  3. 편집을 위해 ensure-absence-forwardzone.yml 파일을 엽니다.
  4. 다음 변수를 설정하여 파일을 조정합니다.

    1. 플레이북의 name 변수를 Playbook으로 변경하여 IdM DNS에 dnsforwardzone이 없는지 확인합니다.
    2. tasks 섹션에서 작업의 이름을 변경하여 example.com에 대한 dnsforwardzone이 없는지 확인합니다.
    3. tasks 섹션에서 freeipa.ansible_freeipa.ipadnsconfig 제목을 freeipa.ansible_freeipa.ipadnsforwardzone 로 변경합니다.
    4. freeipa.ansible_freeipa.ipadnsforwardzone 섹션에서 다음을 수행합니다.

      1. ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전체 forwarders 섹션을 제거하십시오.
      4. state 변수를 absent 로 둡니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to ensure the absence of a dnsforwardzone in IdM DNS
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure the absence of a dnsforwardzone for example.com
        freeipa.ansible_freeipa.ipadnsforwardzone:
           ipaadmin_password: "{{ ipaadmin_password }}"
           name: example.com
           state: absent
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.yml

7장. IdM에서 DNS 레코드 관리

이 장에서는 RHEL IdM(Identity Management)에서 DNS 레코드를 관리하는 방법을 설명합니다. IdM 관리자는 IdM에서 DNS 레코드를 추가, 수정 및 삭제할 수 있습니다.

사전 요구 사항

7.1. IdM 웹 UI에 DNS 리소스 레코드 추가

RHEL IdM(Identity Management) 웹 UI에 DNS 리소스 레코드를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • DNS 레코드를 추가하려는 DNS 영역이 존재하며 IdM에서 관리합니다. IdM DNS에서 DNS 영역을 생성하는 방법에 대한 자세한 내용은 IdM의 DNS 영역 관리를 참조하십시오.
  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.
  2. DNS 레코드를 추가할 DNS 영역을 클릭합니다.
  3. DNS 리소스 레코드 섹션에서 추가 를 클릭하여 새 레코드를 추가합니다.

    그림 7.1. 새 DNS 리소스 레코드 추가

    영역 zone.example.com의 DNS 리소스 레코드 페이지의 스크린샷은 여러 DNS 레코드를 표시합니다. 페이지 오른쪽 상단에 있는
  4. 생성할 레코드 유형을 선택하고 필요에 따라 다른 필드를 작성합니다.

    그림 7.2. 새 DNS 리소스 레코드 정의

  5. Add 를 클릭하여 새 레코드를 확인합니다.

7.2. IdM CLI에서 DNS 리소스 레코드 추가

CLI(명령줄)에서 모든 유형의 DNS 리소스 레코드를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • DNS 레코드를 추가할 DNS 영역이 있습니다. IdM DNS에서 DNS 영역을 생성하는 방법에 대한 자세한 내용은 IdM의 DNS 영역 관리를 참조하십시오.
  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. DNS 리소스 레코드를 추가하려면 ipa dnsrecord-add 명령을 사용합니다. 명령은 다음 구문을 따릅니다.

    $ ipa dnsrecord-add zone_name record_name --record_type_option=data

    위의 명령에서 다음을 수행합니다.

    • zone_name 은 레코드가 추가되는 DNS 영역의 이름입니다.
    • record_name 은 새 DNS 리소스 레코드의 식별자입니다.

    예를 들어 host1 의 A 유형 DNS 레코드를 idm.example.com 영역에 추가하려면 다음을 입력합니다.

    $ ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123

7.3. IdM 웹 UI에서 DNS 레코드 삭제

IdM 웹 UI를 사용하는 RHEL IdM(Identity Management)에서 DNS 레코드를 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.
  2. DNS 레코드를 삭제할 영역을 클릭합니다(예: example.com ).
  3. DNS 리소스 레코드 섹션에서 리소스 레코드의 이름을 클릭합니다.

    그림 7.3. DNS 리소스 레코드 선택

    zone.example.com 영역에 대한 정보를 표시하는
  4. 삭제할 레코드 유형의 이름으로 확인란을 선택합니다.
  5. 삭제를 클릭합니다.

    그림 7.4. DNS 리소스 레코드 삭제

선택한 레코드 유형이 삭제됩니다. 리소스 레코드의 다른 구성은 그대로 유지됩니다.

7.4. IdM 웹 UI에서 전체 DNS 레코드 삭제

RHEL IdM(Identity Management) 웹 UI를 사용하여 영역의 특정 리소스에 대한 모든 레코드를 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  1. IdM 웹 UI에서 네트워크 서비스DNSDNS 영역을 클릭합니다.
  2. DNS 레코드를 삭제할 영역을 클릭합니다(예: zone.example.com. ).
  3. DNS 리소스 레코드 섹션에서 삭제할 리소스 레코드의 확인란을 선택합니다.
  4. 삭제를 클릭합니다.

    그림 7.5. 전체 리소스 레코드 삭제

    zone.example.com 영역에 대한 정보를 표시하는

이제 전체 리소스 레코드가 삭제됩니다.

7.5. IdM CLI에서 DNS 레코드 삭제

RHEL IdM(Identity Management) DNS에서 관리하는 영역에서 DNS 레코드를 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자로 로그인되어 있습니다.

프로세스

  • 영역에서 레코드를 제거하려면 ipa dnsrecord-del 명령을 사용하고 레코드 값과 함께 --recordType-rec 옵션을 추가합니다. 예를 들어 A 유형 레코드를 제거하려면 다음을 수행합니다.

    $ ipa dnsrecord-del example.com www --a-rec 192.0.2.1

    옵션 없이 ipa dnsrecord-del 을 실행하는 경우 명령에서 삭제할 레코드에 대한 정보를 입력하라는 메시지를 표시합니다. 명령과 함께 --del-all 옵션을 전달하면 영역의 연결된 모든 레코드가 제거됩니다.

8장. Ansible을 사용하여 IdM에서 DNS 레코드 관리

이 장에서는 Ansible 플레이북을 사용하여 RHEL IdM(Identity Management)에서 DNS 레코드를 관리하는 방법을 설명합니다. IdM 관리자는 IdM에서 DNS 레코드를 추가, 수정, 삭제할 수 있습니다.

8.1. IdM의 DNS 레코드

RHEL IdM(Identity Management)은 다양한 DNS 레코드 유형을 지원합니다. 다음의 4가지가 가장 자주 사용됩니다:

A

호스트 이름과 IPv4 주소에 대한 기본 맵입니다. A 레코드의 레코드 이름은 호스트 이름(예: WWW) 입니다. A 레코드의 IP 주소 값은 192.0.2.1 과 같은 IPv4 주소입니다.

A 레코드에 대한 자세한 내용은 RFC 1035 를 참조하십시오.

AAAA

호스트 이름과 IPv6 주소에 대한 기본 맵입니다. AAAA 레코드의 레코드 이름은 WWW 과 같은 호스트 이름입니다. IP Address 값은 2001:DB8::1111 과 같은 IPv6 주소입니다.

AAAA 레코드에 대한 자세한 내용은 RFC 3596 을 참조하십시오.

SRV

서비스(SRV) 리소스 레코드 는 서비스 이름을 특정 서비스를 제공하는 서버의 DNS 이름에 매핑합니다. 예를 들어 이 레코드 유형은 LDAP 디렉터리와 같은 서비스를 관리하는 서버에 매핑할 수 있습니다.

SRV 레코드의 레코드 이름은 _service._protocol(예: _ldap. _tcp ) 형식을 갖습니다. SRV 레코드에 대한 구성 옵션에는 대상 서비스의 우선순위, 가중치, 포트 번호, 호스트 이름이 포함됩니다.

SRV 레코드에 대한 자세한 내용은 RFC 2782 를 참조하십시오.

PTR

포인터 레코드(PTR)는 IP 주소를 도메인 이름에 매핑하는 역방향 DNS 레코드를 추가합니다.

참고

IPv4 주소에 대한 모든 역방향 DNS 조회는 in-addr.arpa. 도메인에 정의된 역방향 항목을 사용합니다. 사람이 읽을 수 있는 형식의 역방향 주소는 일반 IP 주소의 정확한 역방향이며 in-addr.arpa. 도메인이 추가됩니다. 예를 들어 네트워크 주소 192.0.2.0/24 의 경우 역방향 영역은 2.0.192.in-addr.arpa 입니다.

PTR의 레코드 이름은 RFC 1035 에 지정된 표준 형식이어야 하며 RFC 2317RFC 3596 이어야 합니다. 호스트 이름 값은 레코드를 생성할 호스트의 정식 호스트 이름이어야 합니다.

참고

역방향 영역은 .ip6.arpa. 도메인에 영역을 사용하여 IPv6 주소에 대해 구성할 수도 있습니다. IPv6 역방향 영역에 대한 자세한 내용은 RFC 3596 을 참조하십시오.

DNS 리소스 레코드를 추가할 때 많은 레코드에는 다른 데이터가 필요합니다. 예를 들어 CNAME 레코드에는 호스트 이름이 필요하지만 A 레코드에는 IP 주소가 필요합니다. IdM 웹 UI에서 현재 선택한 레코드 유형에 필요한 데이터를 반영하도록 새 레코드를 추가하기 위한 양식의 필드가 자동으로 업데이트됩니다.

8.2. 일반적인 ipa dnsrecord-* 옵션

RHEL IdM(Identity Management)에서 가장 일반적인 DNS 리소스 레코드 유형을 추가, 수정 및 삭제할 때 다음 옵션을 사용할 수 있습니다.

  • A (IPv4)
  • AAAA (IPv6)
  • SRV
  • PTR

Bash 에서는 --val1,val2,val3} 과 같은 중괄호 내에 쉼표로 구분된 목록에 값을 나열하여 여러 항목을 정의할 수 있습니다.

Expand
표 8.1. 일반 레코드 옵션
옵션설명

--TTL=number

기록에 대한 라이브 시간을 설정합니다.

--structured

원시 DNS 레코드를 구문 분석하고 구조화된 형식으로 반환합니다.

Expand
표 8.2. "a" 레코드 옵션
옵션설명

--a-rec=ARECORD

단일 A 레코드 또는 A 레코드 목록을 전달합니다.

ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123

지정된 IP 주소를 사용하여 와일드카드 A 레코드를 생성할 수 있습니다.

ipa dnsrecord-add idm.example.com "*" --a-rec=192.168.122.123 [a]

--a-ip-address=string

레코드의 IP 주소를 지정합니다. 레코드를 만들 때 A 레코드 값을 지정하는 옵션은 --a-rec 입니다. 그러나 A 레코드를 수정할 때 --a-rec 옵션은 A 레코드의 현재 값을 지정하는 데 사용됩니다. 새 값은 --a-ip-address 옵션을 사용하여 설정됩니다.

ipa dnsrecord-mod idm.example.com --a-rec 192.168.122.123 --a-ip-address 192.168.122.124

[a] 이 예제에서는 IP 주소가 192.0.2.123인 와일드카드 A 레코드를 생성합니다.
Expand
표 8.3. "AAAA" 레코드 옵션
옵션설명

--aaaa-rec=AAAARECORD

단일 AAAA(IPv6) 레코드 또는 AAAA 레코드 목록을 전달합니다.

ipa dnsrecord-add idm.example.com www --aaaa-rec 2001:db8::1231:5675

--aaaa-ip-address=string

레코드에 IPv6 주소를 지정합니다. 레코드를 만들 때 A 레코드 값을 지정하는 옵션은 --aaa-rec 입니다. 그러나 A 레코드를 수정할 때 --aaaa-rec 옵션은 A 레코드의 현재 값을 지정하는 데 사용됩니다. 새 값은 --a-ip-address 옵션을 사용하여 설정됩니다.

IPA dnsrecord-mod idm.example.com --aaaa-rec 2001:db8::1231:5675 --aaaa-ip-address 2001:db8::1231:5676

Expand
표 8.4. "PTR" 레코드 옵션
옵션설명

--ptr-rec=PTRRECORD

단일 PTR 레코드 또는 PTR 레코드 목록을 전달합니다. 역방향 DNS 레코드를 추가할 때 ipa dnsrecord-add 명령과 함께 사용되는 영역 이름은 다른 DNS 레코드를 추가하는 사용법과 비교됩니다. 일반적으로 호스트 IP 주소는 지정된 네트워크에서 IP 주소의 마지막 옥텟입니다. 오른쪽의 첫 번째 예제에서는 IPv4 주소가 192.168.122.4인 server4.idm.example.com 에 대한 PTR 레코드를 추가합니다. 두 번째 예제는 역방향 DNS 항목을 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa에 추가합니다. IP 주소 2001:DB8::1111 이 있는 호스트 server2.example.com 의 IPv6 역방향 영역입니다.

ipa dnsrecord-add 122.168.192.in-addr.arpa 4 --ptr-rec server4.idm.example.com.

$ ipa dnsrecord-add 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. 1.1.1.0.0.0.0.0.0.0.0.0.0.0.0 --ptr-rec server2.idm.example.com.

--ptr-hostname=string

레코드의 호스트 이름을 지정합니다.

 
Expand
표 8.5. "SRV" 레코드 옵션
옵션설명

--srv-rec=SRVRECORD

단일 SRV 레코드 또는 SRV 레코드 목록을 전달합니다. 오른쪽에 있는 예제에서 _ldap._tcp 는 SRV 레코드에 대한 서비스 유형 및 연결 프로토콜을 정의합니다. --srv-rec 옵션은 우선순위, 가중치, 포트, 대상 값을 정의합니다. 예에서 51 및 49의 가중치 값은 최대 100을 추가하고 특정 레코드가 사용되는 확률을 백분율로 나타냅니다.

# ipa dnsrecord-add idm.example.com _ldap._tcp --srv-rec="0 51 389 server1.idm.example.com."

# IPA dnsrecord-add server.idm.example.com _ldap._tcp --srv-rec="1 49 389 server2.idm.example.com."

--srv-priority=number

레코드의 우선 순위를 설정합니다. 서비스 유형에 대한 SRV 레코드가 여러 개 있을 수 있습니다. 우선순위 (0 - 65535)는 레코드의 순위를 설정합니다. 숫자가 낮고 우선 순위가 높습니다. 서비스는 우선 순위가 가장 높은 레코드를 먼저 사용해야 합니다.

# IPA dnsrecord-mod server.idm.example.com _ldap._tcp --srv-rec="1 49 389 server2.idm.example.com." --srv-priority=0

--srv-weight=number

레코드의 가중치를 설정합니다. 이렇게 하면 우선 순위가 동일한 SRV 레코드 순서를 결정하는 데 도움이 됩니다. 설정 가중치는 특정 레코드가 사용되는 확률(%)을 나타내는 최대 100개를 추가해야 합니다.

# IPA dnsrecord-mod server.idm.example.com _ldap._tcp --srv-rec="0 49 389 server2.idm.example.com." --srv-weight=60

--srv-port=number

대상 호스트에서 서비스의 포트를 제공합니다.

# IPA dnsrecord-mod server.idm.example.com _ldap._tcp --srv-rec="0 60 389 server2.idm.example.com." --srv-port=636

--srv-target=string

대상 호스트의 도메인 이름을 지정합니다. 이는 도메인에서 서비스를 사용할 수 없는 경우 단일 기간(.)일 수 있습니다.

 

8.3. Ansible을 사용하여 IdM에 A 및 AAAA DNS 레코드가 있는지 확인

Ansible 플레이북을 사용하여 특정 IdM 호스트의 A 및 AAAA 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 IdM 관리자는 idm.example.com DNS 영역에 host1 에 대한 A 및 AAAA 레코드가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
  2. ensure-A-and-AAAA-records-are-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml
  3. 편집을 위해 ensure-A-and-AAAA-records-are-present-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsrecord 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.
    • records 변수에서 name 변수를 host1 로 설정하고 a_ip_address 변수를 192.168.122.123 로 설정합니다.
    • records 변수에서 name 변수를 host1 로, aaaa_ip_address 변수를 ::1 로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Ensure A and AAAA records are present
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      # Ensure A and AAAA records are present
      - name: Ensure that 'host1' has A and AAAA records.
        freeipa.ansible_freeipa.ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          zone_name: idm.example.com
          records:
          - name: host1
            a_ip_address: 192.168.122.123
          - name: host1
            aaaa_ip_address: ::1
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.yml

8.4. Ansible을 사용하여 IdM에 A 및 PTR DNS 레코드가 있는지 확인

Ansible 플레이북을 사용하여 특정 IdM 호스트의 A 레코드가 해당 PTR 레코드와 함께 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 IdM 관리자는 idm.example.com 영역에 IP 주소가 192.168.122.45host1 의 A 및 PTR 레코드가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • idm.example.com DNS 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
  2. ensure-dnsrecord-with-reverse-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml
  3. 편집을 위해 ensure-dnsrecord-with-reverse-is-present-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsrecord 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • name 변수를 host1 로 설정합니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.
    • ip_address 변수를 192.168.122.45 로 설정합니다.
    • create_reverse 변수를 true 로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Ensure DNS Record is present.
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      # Ensure that dns record is present
      - freeipa.ansible_freeipa.ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: host1
          zone_name: idm.example.com
          ip_address: 192.168.122.45
          create_reverse: true
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.yml

8.5. Ansible을 사용하여 IdM에 여러 DNS 레코드가 있는지 확인

Ansible 플레이북을 사용하여 여러 값이 특정 IdM DNS 레코드와 연결되어 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 IdM 관리자는 idm.example.com DNS 영역에 host1 에 대한 여러 A 레코드가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
  2. ensure-presence-multiple-records.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml
  3. 편집을 위해 ensure-presence-multiple-records-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsrecord 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • records 섹션에서 name 변수를 host1 로 설정합니다.
    • records 섹션에서 zone_name 변수를 idm.example.com 으로 설정합니다.
    • records 섹션에서 a_rec 변수를 192.168.122.112 로 설정하고 192.168.122.122.
    • records 섹션에서 두 번째 레코드를 정의합니다.

      • name 변수를 host1 로 설정합니다.
      • zone_name 변수를 idm.example.com 으로 설정합니다.
      • aaaa_rec 변수를 ::1 로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Test multiple DNS Records are present.
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      # Ensure that multiple dns records are present
      - freeipa.ansible_freeipa.ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          records:
            - name: host1
              zone_name: idm.example.com
              a_rec: 192.168.122.112
              a_rec: 192.168.122.122
            - name: host1
              zone_name: idm.example.com
              aaaa_rec: ::1
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.yml

8.6. Ansible을 사용하여 IdM에 CNAME 레코드가 여러 개 있는지 확인

Canonical Name record(CNAME 레코드)는 하나의 도메인 이름, 별칭을 다른 이름, 표준 이름에 매핑하는 DNS(Domain Name System)의 리소스 레코드 유형입니다.

단일 IP 주소(예: FTP 서비스 및 웹 서비스)에서 여러 서비스를 실행할 때 CNAME 레코드가 유용할 수 있습니다. 각각 다른 포트에서 실행됩니다.

Ansible 플레이북을 사용하여 IdM DNS에 여러 CNAME 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용되는 예제에서 host03 은 HTTP 서버와 FTP 서버입니다. IdM 관리자는 idm.example.com 영역에 host03 A 레코드에 대한 Cryostat 및 ftp CNAME 레코드가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.
  • host03 A 레코드는 idm.example.com 영역에 있습니다.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
  2. ensure-CNAME-record-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml
  3. 편집을 위해 ensure-CNAME-record-is-present-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsrecord 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 선택 사항: 플레이 이름으로 제공된 설명을 조정합니다.
    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.
    • records 변수 섹션에서 다음 변수와 값을 설정합니다.

      • name 변수를 Cryostat로 설정합니다.
      • cname_hostname 변수를 host03 으로 설정합니다.
      • name 변수를 ftp 로 설정합니다.
      • cname_hostname 변수를 host03 으로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Ensure that 'www.idm.example.com' and 'ftp.idm.example.com' CNAME records point to 'host03.idm.example.com'.
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      - freeipa.ansible_freeipa.ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          zone_name: idm.example.com
          records:
          - name: www
            cname_hostname: host03
          - name: ftp
            cname_hostname: host03
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml

8.7. Ansible을 사용하여 IdM에 SRV 레코드가 있는지 확인

DNS 서비스(SRV) 레코드는 도메인에서 사용할 수 있는 서비스의 호스트 이름, 포트 번호, 전송 프로토콜, 우선 순위 및 가중치를 정의합니다. RHEL IdM(Identity Management)에서는 SRV 레코드를 사용하여 IdM 서버 및 복제본을 찾을 수 있습니다.

Ansible 플레이북을 사용하여 IdM DNS에 SRV 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 IdM 관리자는 값이 10 50 88 idm.example.com_kerberos._udp.idm.example.example.com SRV 레코드가 있는지 확인합니다. 이렇게 하면 다음 값이 설정됩니다.

  • 서비스의 우선 순위를 10으로 설정합니다.
  • 서비스의 weight를 50으로 설정합니다.
  • 서비스에서 사용할 포트를 88으로 설정합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.15 이상을 사용하고 있습니다.
    • freeipa.ansible_freeipa 컬렉션을 설치했습니다.
    • 이 예제에서는 ~/MyPlaybooks/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible vault가 ipaadmin_password 를 저장하고 secret.yml 파일을 보호하는 암호를 저장하는 파일에 대한 액세스 권한이 있다고 가정합니다.
  • freeipa.ansible_freeipa 모듈이 실행되는 대상 노드인 대상 노드는 IdM 도메인의 일부입니다. IdM 클라이언트, 서버 또는 복제본입니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

프로세스

  1. /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord 디렉토리로 이동합니다.

    $ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
  2. ensure-SRV-record-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml
  3. 편집을 위해 ensure-SRV-record-is-present-copy.yml 파일을 엽니다.
  4. freeipa.ansible_freeipa.ipadnsrecord 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수 값이 secret.yml Ansible vault 파일에 정의되어 있음을 나타냅니다.
    • name 변수를 _kerberos._udp.idm.example.com 으로 설정합니다.
    • srv_rec 변수를 '10 50 88 idm.example.com' 로 설정합니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.

      현재 예에 대해 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Test multiple DNS Records are present.
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      # Ensure a SRV record is present
      - freeipa.ansible_freeipa.ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: _kerberos._udp.idm.example.com
          srv_rec: '10 50 88 idm.example.com'
          zone_name: idm.example.com
          state: present
  5. 파일을 저장합니다.
  6. Playbook을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.yml

9장. IdM에서 표준 DNS 호스트 이름 사용

잠재적인 보안 위험을 방지하기 위해 IdM(Identity Management) 클라이언트에서 DNS canonicalization은 기본적으로 비활성화되어 있습니다. 예를 들어 공격자가 DNS 서버와 도메인의 호스트를 제어하는 경우 공격자는 데모 와 같은 짧은 호스트 이름을 유발하여 악의적인.example.com 과 같은 손상된 호스트로 확인할 수 있습니다. 이 경우 사용자는 예상과 다른 서버에 연결합니다.

다음 절차에서는 IdM 클라이언트에서 표준 호스트 이름을 사용하는 방법을 설명합니다.

9.1. 호스트 주체에 별칭 추가

기본적으로 ipa-client-install 명령을 사용하여 등록한 IdM(Identity Management) 클라이언트는 서비스 주체에 짧은 호스트 이름을 사용할 수 없습니다. 예를 들어 사용자는 서비스에 액세스할 때 host/demo@EXAMPLE.COM 대신 host/demo.example.com@EXAMPLE.COM만 사용할 수 있습니다.

Kerberos 주체에 별칭을 추가하려면 다음 절차를 따르십시오. 또는 /etc/krb5.conf 파일에서 호스트 이름의 canonicalization을 활성화할 수도 있습니다. 자세한 내용은 클라이언트의 서비스 주체의 호스트 이름 활성화를 참조하십시오.

사전 요구 사항

  • IdM 클라이언트가 설치되어 있어야 합니다.
  • 호스트 이름은 네트워크에서 고유합니다.

프로세스

  1. admin 사용자로 IdM에 인증합니다.

    $ kinit admin
  2. 호스트 주체에 별칭을 추가합니다. 예를 들어 demo. Cryostat le.com 호스트 주체에 데모 별칭을 추가하려면 다음을 수행합니다.

    $ ipa host-add-principal demo.example.com --principal=demo

9.2. 클라이언트의 서비스 주체에서 호스트 이름 활성화

클라이언트의 서비스 주체에서 호스트 이름을 사용할 수 있도록 하려면 다음 절차를 따르십시오.

참고

호스트 주체에 별칭 추가에 설명된 대로 호스트 주체 별칭을 사용하는 경우 canonicalization을 활성화할 필요가 없습니다.If you use host principal aliases, as described in Adding an alias to a host principal, you do not need to enable canonicalization.

사전 요구 사항

  • IdM(Identity Management) 클라이언트가 설치되어 있습니다.
  • root 사용자로 IdM 클라이언트에 로그인되어 있습니다.
  • 호스트 이름은 네트워크에서 고유합니다.

프로세스

  1. /etc/krb5.conf 파일의 [libdefaults] 섹션에서 dns_canonicalize_hostname 매개변수를 false:로 설정합니다.

    [libdefaults]
    ...
    dns_canonicalize_hostname = true

클라이언트의 서비스 주체에서 호스트 이름 활성화에 설명된 대로 /etc/krb5.conf 파일에 dns_canonicalize_hostname = true 를 설정하면 서비스 주체에서 호스트 이름을 사용할 때 다음 옵션이 있습니다.

  • IdM(Identity Management) 환경에서는 호스트 /demo.example.com@EXAMPLE.COM와 같은 서비스 주체에서 전체 호스트 이름을 사용할 수 있습니다.
  • IdM이 없는 환경에서는 RHEL 호스트가 AD(Active Directory) 도메인의 멤버인 경우 AD 도메인 컨트롤러(DC)가 AD에 등록된 시스템의 NetBIOS 이름에 대한 서비스 주체를 자동으로 생성하므로 추가 고려 사항이 필요하지 않습니다.

10장. BIND 로깅 사용자 정의

IdM(Identity Management) 관리자는 BIND에서 로그를 쓰는 위치를 사용자 지정하고 SELinux가 해당 사용자 지정 경로에 액세스할 수 있도록 하여 가시성을 개선하고 보안을 유지 관리할 수 있습니다.

10.1. BIND 로그 경로 사용자 정의

ipa-logging-ext.conf 파일을 사용하여 BIND 로그의 경로를 사용자 지정할 수 있습니다.

프로세스

  1. /etc/named/ 디렉토리에서 ipa-logging-ext.conf 파일을 열고 파일 경로로 로깅 채널을 추가하거나 수정합니다.

    logging {
    channel ipa_custom_log {
    file "/var/log/named/ipa_dns_queries.log" versions 3 size 10m;
    severity info;
    print-time yes;
    print-severity yes;
    print-category yes;
    };
    
    category queries { ipa_custom_log; };
    category update { ipa_custom_log; };
    category update-security { ipa_custom_log; };
    };
  2. BIND 서버를 다시 시작합니다.

    # systemctl restart named

10.2. BIND 사용자 지정 로깅을 위한 SELinux 정책 확장

SELinux 정책을 확장하여 BIND 로그를 포함할 수 있습니다.

프로세스

  1. 로그 디렉토리를 생성합니다.

    # mkdir -p /var/log/named
    # chown named:named /var/log/named
    # chmod 750 /var/log/named
  2. named_log_t SELinux 컨텍스트를 새 디렉터리 및 로그 파일에 할당합니다.

    # semanage fcontext -a -t named_log_t "/var/log/named(/.)?"*
    # restorecon -Rv /var/log/named
  3. BIND 서버를 다시 시작합니다.

    # systemctl restart named

검증

  • 사용자 정의 로그 파일을 표시합니다.

    $ tail -f /var/log/named/ipa_dns_queries.log

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동