ID 관리에서 DNS 작업

Red Hat Enterprise Linux 8

IdM 통합 DNS 서비스 관리

Red Hat Customer Content Services

초록

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

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

Red Hat은 코드, 문서 및 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

ID 관리에서 계획된 용어 교체는 다음과 같습니다.

  • 차단 목록 블랙리스트대체
  • 허용 목록 대체 허용 목록
  • 슬레이브 교체
  • 마스터 라는 단어는 컨텍스트에 따라 보다 정확한 언어로 교체되고 있습니다.

    • IdM 서버가 IdM 마스터교체
    • CA 갱신 마스터를 대체하는 CA 갱신서버
    • CRL 게시자 서버는 CRL 마스터교체
    • 다중 마스터교체

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

문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

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

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

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

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

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

사전 요구 사항

 

이 장에서는 다음 섹션이 포함되어 있습니다.

1.1. IdM을 통해 NetworkManager에서 /etc/resolv.conf의 글로벌 전달자가 제거되지 않도록 하는 방법

통합된 DNS를 사용하여 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 구성 파일을 생성하여 검색 순서 및 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 이고 IP v6 주소가 2001:db8::1:0 인 DNS 서버에 대한 DNS 글로벌 전달자가 있는지 확인합니다.

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    1. IdM DNS에 글로벌 전달자가 있는지 확인하기 위해 플레이북의 name 변수를 Playbook으로 변경합니다.
    2. tasks 섹션에서 작업 이름을 변경하여 DNS 전역 전달자가 7.7.9.9로, 2001:db8::1:0으로 있는지 확인합니다.
    3. ipadnsconfig 부분의 forwarders 섹션에서 다음을 수행합니다.

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

      현재 예에 대해 수정된 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
        ipadnsconfig:
          forwarders:
            - ip_address: 7.7.9.9
            - ip_address: 2001:db8::1:0
              port: 53
          state: present
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.

1.3. Ansible을 사용하여 IdM에서 DNS 글로벌 전달자가 없음을 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    1. IdM DNS에서 글로벌 전달자가 없는지 확인하기 위해 플레이북의 name 변수를 Playbook으로 변경합니다.
    2. tasks 섹션에서 작업 이름을 변경하여 DNS 글로벌 전달기가 8.8.6.6으로, 2001:4860:4860::8800 on port 53 으로 변경합니다.
    3. ipadnsconfig 부분의 forwarders 섹션에서 다음을 수행합니다.

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 8.8.6.6.
      2. 두 번째 ip_address 값을 글로벌 전달자의 IPv6 주소로 변경합니다. 2001:4860:4860::8800.
      3. 포트 값이 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
        ipadnsconfig:
          forwarders:
            - ip_address: 8.8.6.6
            - ip_address: 2001:4860:4860::8800
              port: 53
          action: member
          state: absent
    중요

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

  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

    $ 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 모듈을 사용하여 IdM(Identity Management)에서 글로벌 전달자를 제외하려면 state: absent 옵션 외에 action: member 옵션을 사용해야 합니다. action: member 를 사용하지 않고 플레이북에서 state: absent 만 사용하면 플레이북이 실패합니다. 결과적으로 모든 글로벌 전달자를 제거하려면 플레이북에서 모두 개별적으로 지정해야 합니다. 반면 state: 현재 옵션에는 action: member 가 필요하지 않습니다.

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

  • 플레이북을 실행하기 전에 구성된 글로벌 전달자
  • 플레이북의 발췌 내용
  • 플레이북을 실행한 후 구성된 글로벌 전달자

표 1.1. 글로벌 전달자의 ipadnsconfig 관리

이전 버전과의 전달자플레이북 발췌 내용이후의 forwarders

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 전달 정책과 IdM 관련 전달 정책을 지원합니다.

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

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

쿼리된 DNS 이름이 IdM 서버가 권한이 있는 영역에 속하는 경우 BIND 서비스는 쿼리를 다른 서버로 전달하지 않습니다. 이러한 상황에서 IdM 데이터베이스에서 쿼리된 DNS 이름을 찾을 수 없는 경우 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 오류 메시지를 수신하여 사용자에게 쿼리된 도메인이 없음을 알립니다.

1.6. Ansible 플레이북을 사용하여 앞으로 첫 번째 정책이 IdM DNS 글로벌 구성에 설정되어 있는지 확인합니다.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • IdM 환경에는 통합 DNS 서버가 포함되어 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. set-configuration.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp set-configuration.yml set-forward-policy-to-first.yml
  4. 편집을 위해 set-forward-policy-to-first.yml 파일을 엽니다.
  5. ipadnsconfig 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • forward_policy 변수를 첫 번째 로 설정합니다.

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

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

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

추가 리소스

  • IdM의 DNS 전달 정책을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.
  • 자세한 샘플 플레이북은 /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리를 참조하십시오.

1.7. Ansible 플레이북을 사용하여 IdM DNS에서 글로벌 전달자가 비활성화되었는지 확인합니다.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • IdM 환경에는 통합 DNS 서버가 포함되어 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. disable-global-forwarders.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • forward_policy 변수를 none 으로 설정합니다.

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

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

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

추가 리소스

  • IdM의 DNS 전달 정책을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리에서 더 많은 샘플 플레이북을 참조하십시오.

1.8. Ansible 플레이북을 사용하여 IdM DNS에서 정방향 및 역방향 조회 영역 동기화가 비활성화되었는지 확인합니다.

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • IdM 환경에는 통합 DNS 서버가 포함되어 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. disallow-reverse-sync.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

    $ cp disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
  4. 편집할 disallow-reverse-sync-copy.yml 파일을 엽니다.
  5. ipadnsconfig 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • allow_sync_ptr 변수를 no 로 설정합니다.

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

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

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.
  • 자세한 샘플 플레이북은 /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리를 참조하십시오.

2장. IdM에서 DNS 영역 관리

IdM(Identity Management) 관리자는 IdM DNS 영역의 작동 방식을 관리할 수 있습니다. 이 장에서는 다음 주제 및 절차를 설명합니다.

사전 요구 사항

2.1. 지원되는 DNS 영역 유형

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

참고

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

기본 DNS 영역

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

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

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

예 2.1. DNS 전달 시나리오 예

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

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

반면, IdM 서버가 이 이름에 대해 권한이 없기 때문에 host1.sub.test.example. 이름을 쿼리하는 것은 구성된 전달자 192.0.2.254 로 전달됩니다.

전달 DNS 영역

IdM의 관점에서 forward DNS 영역에는 권한 있는 데이터가 포함되어 있지 않습니다. 실제로 "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 도메인 컨트롤러로 전달됩니다.

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

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

사전 요구 사항

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

절차

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

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

    사용자가 Network Services 탭으로 이동하여 DNS 하위 메뉴에서 선택한 DNS 영역을 있음을 보여주는 스크린샷입니다.
  2. 모든 영역 목록의 맨 위에 있는 추가 를 클릭합니다.
  3. 영역 이름을 입력합니다.

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

    사용자가 "DNS 영역 추가" 팝업 창의 영역 이름 필드에 zone.example.com.과 같은 영역 이름을 입력했음을 보여주는 스크린샷입니다.
  4. 추가를 클릭합니다.

2.3. IdM CLI에 기본 DNS 영역 추가

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

사전 요구 사항

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

절차

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

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

    이름을 ipa dnszone-add 에 전달하지 않으면 스크립트가 자동으로 메시지를 표시합니다.

추가 리소스

  • ipa dnszone-add --help 를 참조하십시오.

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

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

사전 요구 사항

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

절차

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

    그림 2.3. 기본 DNS 영역 제거

    "DNS 영역" 페이지의 스크린샷입니다. 테이블에는 "Zone name" 및 "Status"에 의해 구성된 DNS 영역이 표시됩니다. "zone.example.com."의 두 번째 항목 옆에 있는 확인란을 선택하고 맨 위에 있는 "Delete" 버튼이 강조 표시됩니다.
  3. DNS 영역 제거 대화 상자에서 선택한 영역을 삭제하도록 확인합니다.

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

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

사전 요구 사항

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

절차

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

    $ ipa dnszone-del idm.example.com

2.6. 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.7. 기본 IdM DNS 영역의 구성 속성

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

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

표 2.1. IdM DNS 영역 속성

속성명령줄 옵션설명

권한 있는 이름 서버

--name-server

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

기본적으로 각 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 에 따라 음수 캐싱에 대해 TTL(TTL) 값을 초 단위로 설정합니다.

실시간 SOA 시간

--ttl

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

라이브 기본 시간

--default-ttl

이전에 별도의 TTL 값이 설정되지 않은 영역의 모든 값에 대해 음수 캐싱에 대해 음수 캐싱에 대한 기본 TTL(TTL) 값을 초 단위로 설정합니다. 변경 사항을 적용한 후 모든 IdM DNS 서버에서 named-pkcs11 서비스를 다시 시작해야 합니다.

BIND 업데이트 정책

--update-policy

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

동적 업데이트

--dynamic-update=TRUE|FALSE

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

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

전송 허용

--allow-transfer=string

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

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

쿼리 허용

--allow-query

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

PTR 동기화 허용

--allow-sync-ptr=1|0

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

영역 전달자

--forwarder=IP_address

DNS 영역에 대해 구체적으로 구성된 전달자를 지정합니다. 이는 IdM 도메인에 사용된 모든 글로벌 전달자와는 별개입니다.

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

전달 정책

--forward-policy=none|only|first

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

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

IdM 웹 UI를 사용하여 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. 기본 영역의 설정 탭의 편집 페이지

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

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

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

    참고

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

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

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-pkcs11 서비스를 다시 시작하여 변경 사항을 적용합니다. 다른 모든 설정은 즉시 활성화됩니다.

추가 리소스

  • ipa dnszone-mod --help 를 참조하십시오.

2.10. IdM의 영역 전송

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

중요

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

IdM은 RFC 5936 (AXFR) 및 IXFR(IXFR) 표준에 따라 영역 전송을 지원합니다. https://tools.ietf.org/html/rfc1995

추가 리소스

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

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

사전 요구 사항

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

절차

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

    그림 2.7. 영역 전송 활성화

    각각 다른 IP 주소가 있는 서버에 대해 세 개의 필드가 있는 "전송 허용" 팝업 창의 스크린샷입니다. "추가" 버튼은 창 하단에 있습니다.
  4. DNS 영역 페이지 상단에 있는 저장을 클릭하여 새 구성을 확인합니다.

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

IdM CLI(명령줄 인터페이스)를 사용하여 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 에 대해 성공적으로 활성화된 영역 전송이 있습니다.

2.13. 추가 리소스

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

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

사전 요구 사항

  • DNS 서비스가 IdM 서버에 설치되어 있습니다. 통합된 DNS로 IdM 서버를 설치하는 데 Red Hat Ansible Engine을 사용하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 ID 관리 서버 설치를 참조하십시오.

3.1. 지원되는 DNS 영역 유형

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

참고

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

기본 DNS 영역

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

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

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

예 3.1. DNS 전달 시나리오 예

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

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

반면, IdM 서버가 이 이름에 대해 권한이 없기 때문에 host1.sub.test.example. 이름을 쿼리하는 것은 구성된 전달자 192.0.2.254 로 전달됩니다.

전달 DNS 영역

IdM의 관점에서 forward DNS 영역에는 권한 있는 데이터가 포함되어 있지 않습니다. 실제로 "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. 기본 IdM DNS 영역의 구성 속성

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

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

표 3.1. IdM DNS 영역 속성

속성ansible-freeipa 변수설명

권한 있는 이름 서버

name_server

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

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

관리자 이메일 주소

admin_email

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

SOA 직렬

serial

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

SOA 새로 고침

새로 고침

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

SOA 재시도

Retry

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

SOA 만료

expire

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

SOA 최소

최소

RFC 2308 에 따라 음수 캐싱에 대해 TTL(TTL) 값을 초 단위로 설정합니다.

실시간 SOA 시간

ttl

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

라이브 기본 시간

default_ttl

이전에 별도의 TTL 값이 설정되지 않은 영역의 모든 값에 대해 음수 캐싱에 대해 음수 캐싱에 대한 기본 TTL(TTL) 값을 초 단위로 설정합니다. 변경 사항을 적용한 후 모든 IdM DNS 서버에서 named-pkcs11 서비스를 다시 시작해야 합니다.

BIND 업데이트 정책

update_policy

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

동적 업데이트

dynamic_update=TRUE|FALSE

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

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

전송 허용

allow_transfer=string

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

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

쿼리 허용

allow_query

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

PTR 동기화 허용

allow_sync_ptr=1|0

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

영역 전달자

forwarder=IP_address

DNS 영역에 대해 구체적으로 구성된 전달자를 지정합니다. 이는 IdM 도메인에 사용된 모든 글로벌 전달자와는 별개입니다.

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

전달 정책

forward_policy=none|only|first

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnszone.md 파일을 참조하십시오.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnszone 디렉터리로 이동합니다.

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

    [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. 플레이북을 실행합니다.

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

추가 리소스

  • 지원되는 DNS 영역 유형을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnszone.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnszone 디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.

3.4. Ansible 플레이북을 사용하여 여러 변수가 있는 IdM의 기본 DNS 영역이 있는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnszone 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. dnszone-all-params.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • zone_name 변수를 zone.idm.example.com 으로 설정합니다.
    • 정방향 및 역방향 레코드의 동기화를 허용하려면 allow_sync_ptr 변수를 true로 설정합니다. 즉 PTR 레코드와 A 및 AAAA 레코드 동기화입니다.
    • IdM 클라이언트 시스템을 활성화하여 IP 주소를 추가하거나 업데이트할 수 있도록 dynamic_update 변수를 true로 설정합니다.
    • 영역에 있는 레코드의 인라인 DNSSEC 서명을 허용하려면 dnssec 변수를 true로 설정합니다.
    • allow_transfer 변수를 영역의 보조 이름 서버의 IP 주소로 설정합니다.
    • allow_query 변수를 쿼리를 실행하도록 허용된 IP 주소 또는 네트워크로 설정합니다.
    • forwarders 변수를 전역 전달자의 IP 주소로 설정합니다.
    • serial 변수를 SOA 레코드 일련 번호로 설정합니다.
    • 영역의 DNS 레코드에 대한 refresh,retry,expire,minimum,ttl, default_ttl 값을 정의합니다.
    • nsec3param_rec 변수를 사용하여 영역의 NSEC3PARAM 레코드를 정의합니다.
    • skip_overlap_check 변수를 true로 설정하여 기존 영역과 겹치는 경우에도 DNS 생성을 강제 적용합니다.
    • 이름 서버를 확인할 수 없는 경우에도 DNS 영역 생성을 강제 적용하려면 skip_nameserver_check 를 true로 설정합니다.

      현재 예에 대해 수정된 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
          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
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

3.5. Ansible 플레이북을 사용하여 IP 주소가 지정될 때 역방향 DNS 조회 영역이 있는지 확인합니다.

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

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

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnszone 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. dnszone-reverse-from-ip.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • name_from_ip 변수를 IdM 이름 서버의 IP로 설정하고 접두사 길이를 제공합니다.

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

      ---
      - name: Ensure dnszone present
        hosts: ipaserver
        become: true
      
        tasks:
        - name: Ensure zone for reverse DNS lookup is present.
          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 }}"

    Playbook은 192.168.1.2 IP 주소 및 해당 접두사 길이가 24인 역방향 DNS 조회 영역을 생성합니다. 다음으로, 플레이북은 결과 영역 이름을 표시합니다.

  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • 지원되는 DNS 영역 유형을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnszone.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnszone 디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.

4장. IdM에서 DNS 위치 관리

IdM 웹 UI 및 IdM CLI(명령줄 인터페이스)를 사용하여 IdM(Identity Management) DNS 위치 관리에 대한 자세한 내용은 다음 주제 및 절차를 참조하십시오.

4.1. DNS 기반 서비스 검색

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

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

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

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

예 4.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 (weight). 우선 순위가 동일한 항목에 대한 상대적 가중치를 지정합니다. 자세한 내용은 RFC 2782, 섹션 3 을 참조하십시오.
  • 88 (포트 번호): 서비스의 포트 번호입니다.
  • 서비스를 제공하는 호스트의 정식 이름입니다.

이 예에서 반환된 두 호스트 이름은 동일한 우선 순위 및 가중치를 갖습니다. 이 경우 클라이언트는 결과 목록의 임의의 항목을 사용합니다.

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

예 4.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 레코드를 가리키는 DNS 별칭(CNAME)을 자동으로 반환합니다. 이 CNAME 레코드는 출력의 첫 번째 줄에 표시됩니다. 이 예에서 호스트 idmserver-01.idm.example.com 이 우선순위 값이 가장 낮기 때문에 우선합니다. idmserver-02.idm.example.com 은 우선 순위가 높기 때문에 기본 호스트를 사용할 수 없는 경우 백업으로만 사용됩니다.

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

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

DNS 위치에 대한 클라이언트 선호도는 클라이언트에서 수신한 DNS 레코드에서만 정의됩니다. 따라서 DNS 서비스를 실행하는 클라이언트가 IdM DNS 서버의 위치별 레코드를 확인하면 IdM DNS 서버를 IdM DNS 소비자 서버와 결합하고 반복할 수 있습니다.

IdM 및 비 IdM DNS 서비스가 혼합된 대부분의 배포에서 DNS recursors는 왕복 시간 메트릭을 사용하여 자동으로 가장 가까운 IdM DNS 서버를 선택합니다. 일반적으로 IdM이 아닌 DNS 서버를 사용하는 클라이언트는 가장 가까운 DNS 위치에 대한 레코드를 수신하므로 최적의 IdM 서버 세트를 사용합니다.

4.3. DNS 라이브 시간 (TTL)

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

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

추가 리소스

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

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

사전 요구 사항

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

절차

  1. IPA 서버 탭을 엽니다.
  2. 토폴로지 하위 탭을 선택합니다.
  3. 네비게이션 바에서 IPA Locations (IPA 위치)를 클릭합니다.
  4. 위치 목록의 맨 위에 있는 추가 를 클릭합니다.
  5. 위치 이름을 입력합니다.
  6. Add 버튼을 클릭하여 위치를 저장합니다.
  7. 선택 사항: 단계를 반복하여 다른 위치를 추가합니다.

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

DNS 위치를 사용하여 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.6. IdM 웹 UI를 사용하여 DNS 위치에 IdM 서버 할당

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

사전 요구 사항

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

절차

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

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

    DNS 위치 할당 서버
  6. 저장을 클릭합니다.
  7. 이전 단계에서 할당한 호스트의 CLI(명령줄 인터페이스)에서 DNS 위치를 에 추가한 후 named-pkcs11 서비스를 다시 시작합니다.

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

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

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 위치에 할당합니다. 예를 들어 위치 germany 을 서버 idmserver-01.idm.example.com 에 할당하려면 다음을 실행합니다.

    # ipa server-mod idmserver-01.idm.example.com --location=germany
    ipa: WARNING: Service named-pkcs11.service requires restart on IPA server
    idmserver-01.idm.example.com to apply configuration changes.
    --------------------------------------------------
    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-pkcs11 서비스를 다시 시작합니다.

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

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

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.3. 클라이언트 위치에 따라 다른 이름 서버 항목

다음 예제에서는 다른 위치에 있는 클라이언트에 대해 /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

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

4.9. 추가 리소스

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

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

5.1. DNS 기반 서비스 검색

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

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

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

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 (weight). 우선 순위가 동일한 항목에 대한 상대적 가중치를 지정합니다. 자세한 내용은 RFC 2782, 섹션 3 을 참조하십시오.
  • 88 (포트 번호): 서비스의 포트 번호입니다.
  • 서비스를 제공하는 호스트의 정식 이름입니다.

이 예에서 반환된 두 호스트 이름은 동일한 우선 순위 및 가중치를 갖습니다. 이 경우 클라이언트는 결과 목록의 임의의 항목을 사용합니다.

대신 클라이언트가 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 레코드를 가리키는 DNS 별칭(CNAME)을 자동으로 반환합니다. 이 CNAME 레코드는 출력의 첫 번째 줄에 표시됩니다. 이 예에서 호스트 idmserver-01.idm.example.com 이 우선순위 값이 가장 낮기 때문에 우선합니다. idmserver-02.idm.example.com 은 우선 순위가 높기 때문에 기본 호스트를 사용할 수 없는 경우 백업으로만 사용됩니다.

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

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

DNS 위치에 대한 클라이언트 선호도는 클라이언트에서 수신한 DNS 레코드에서만 정의됩니다. 따라서 DNS 서비스를 실행하는 클라이언트가 IdM DNS 서버의 위치별 레코드를 확인하면 IdM DNS 서버를 IdM DNS 소비자 서버와 결합하고 반복할 수 있습니다.

IdM 및 비 IdM DNS 서비스가 혼합된 대부분의 배포에서 DNS recursors는 왕복 시간 메트릭을 사용하여 자동으로 가장 가까운 IdM DNS 서버를 선택합니다. 일반적으로 IdM이 아닌 DNS 서버를 사용하는 클라이언트는 가장 가까운 DNS 위치에 대한 레코드를 수신하므로 최적의 IdM 서버 세트를 사용합니다.

5.3. DNS 라이브 시간 (TTL)

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

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

추가 리소스

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

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

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

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • DNS 위치에 대한 배포 고려 사항을 이해할 수 있습니다.

절차

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

    $ cd ~/MyPlaybooks/
  2. /usr/share/doc/ansible-freeipa/playbooks/location/ 디렉터리에 있는 location-present.yml 파일을 복사합니다.

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

    • 사용 사례에 맞게 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 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
        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 위치가 없는지 확인

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

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

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • germany DNS 위치에 IdM 서버가 할당되지 않습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • 예제에서는 ~/MyPlaybooks/ 디렉터리를 샘플 플레이북의 복사본을 저장하기 위한 중앙 위치로 생성 및 구성 했다고 가정합니다.

절차

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

    $ cd ~/MyPlaybooks/
  2. /usr/share/doc/ansible-freeipa/playbooks/location/ 디렉터리에 있는 location-absent.yml 파일을 복사합니다.

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

    • 사용 사례에 맞게 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 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
        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

5.6. 추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리에 있는 README-location.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/location 디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.

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 서버인 forwarder 를 사용하여 쿼리를 확인하도록 BIND를 구성할 수 있습니다.

전달자를 사용하도록 BIND를 구성하면 IdM 서버와 전달자 간에 쿼리 및 응답이 다시 전달되며, IdM 서버는 권한 없는 데이터에 대한 DNS 캐시 역할을 합니다.

6.2. IdM의 DNS 전달 정책

IdM은 번째 및 유일한 표준 BIND 전달 정책과 IdM 관련 전달 정책을 지원합니다.

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

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

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

예 6.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 오류 메시지를 수신하여 사용자에게 쿼리된 도메인이 없음을 알립니다.

6.3. 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 policy 를 선택합니다.

    DNS 전달 정책 선택 및 DNS 글로벌 구성 저장
  5. 창 위쪽에서 저장을 클릭합니다.Click Save at the top of the window.

검증 단계

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

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

    글로벌 전달자의 존재 확인

6.4. 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.5. IdM 웹 UI에 DNS 전달 영역 추가

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

중요

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

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

사전 요구 사항

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

절차

  1. IdM 웹 UI에서 Network ServicesDNS Forward ZonesDNS 를 선택합니다.

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

    추가 버튼 선택
  3. DNS 전달 영역 추가 창에서 전달 영역 이름을 지정합니다.

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

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

    전달 정책 선택
  6. 창 하단에 있는 Add (추가)를 클릭하여 새 전달 영역을 추가합니다.

검증 단계

  1. IdM 웹 UI에서 Network ServicesDNS Forward ZonesDNS 를 선택합니다.

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

    새 forward zone이 있는지 확인

6.6. CLI에 DNS 전달 영역 추가

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

중요

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

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

사전 요구 사항

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

절차

  • dnsforwardzone-add 명령을 사용하여 새 전달 영역을 추가합니다. 전달 정책이 none 이 아닌 경우 --forwarder 옵션을 사용하여 하나 이상의 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.7. Ansible을 사용하여 IdM에서 DNS Global Forwarder 설정

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. set-configuration.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

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

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 8.8.6.6.
      2. 두 번째 ip_address 값을 글로벌 전달자의 IPv6 주소로 변경합니다. 2001:4860:4860::8800.
      3. 포트 값이 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
        ipadnsconfig:
          forwarders:
            - ip_address: 8.8.6.6
            - ip_address: 2001:4860:4860::8800
              port: 53
          forward_policy: first
          allow_sync_ptr: yes
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    1. IdM DNS에 글로벌 전달자가 있는지 확인하기 위해 플레이북의 name 변수를 Playbook으로 변경합니다.
    2. tasks 섹션에서 작업 이름을 변경하여 DNS 전역 전달자가 7.7.9.9로, 2001:db8::1:0으로 있는지 확인합니다.
    3. ipadnsconfig 부분의 forwarders 섹션에서 다음을 수행합니다.

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

      현재 예에 대해 수정된 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
        ipadnsconfig:
          forwarders:
            - ip_address: 7.7.9.9
            - ip_address: 2001:db8::1:0
              port: 53
          state: present
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.

6.9. Ansible을 사용하여 IdM에서 DNS 글로벌 전달자가 없음을 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    1. IdM DNS에서 글로벌 전달자가 없는지 확인하기 위해 플레이북의 name 변수를 Playbook으로 변경합니다.
    2. tasks 섹션에서 작업 이름을 변경하여 DNS 글로벌 전달기가 8.8.6.6으로, 2001:4860:4860::8800 on port 53 으로 변경합니다.
    3. ipadnsconfig 부분의 forwarders 섹션에서 다음을 수행합니다.

      1. 첫 번째 ip_address 값을 글로벌 전달자의 IPv4 주소로 변경합니다. 8.8.6.6.
      2. 두 번째 ip_address 값을 글로벌 전달자의 IPv6 주소로 변경합니다. 2001:4860:4860::8800.
      3. 포트 값이 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
        ipadnsconfig:
          forwarders:
            - ip_address: 8.8.6.6
            - ip_address: 2001:4860:4860::8800
              port: 53
          action: member
          state: absent
    중요

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

  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

6.10. Ansible을 사용하여 IdM에서 DNS Global Forwarder가 비활성화되었는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. 모든 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.
        ipadnsconfig:
          forward_policy: none
  4. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리의 README-dnsconfig.md 파일을 참조하십시오.

6.11. Ansible을 사용하여 IdM에 DNS Forward Zone이 있는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

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

      1. ipaadmin_password 변수를 추가하고 IdM 관리자 암호로 설정합니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전달자 섹션에서 다음을 수행합니다.

        1. ip_address포트 행을 제거합니다.
        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
      ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: example.com
          forwarders:
              - 8.8.8.8
          forwardpolicy: first
          skip_overlap_check: true
          state: present
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리에서 README-dnsforwardzone.md 파일을 참조하십시오.

6.12. Ansible을 사용하여 DNS Forward Zone에 여러 forwarder가 있는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

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

      1. ipaadmin_password 변수를 추가하고 IdM 관리자 암호로 설정합니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전달자 섹션에서 다음을 수행합니다.

        1. ip_address포트 행을 제거합니다.
        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
      ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
         name: example.com
          forwarders:
              - 8.8.8.8
              - 4.4.4.4
          state: present
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리에서 README-dnsforwardzone.md 파일을 참조하십시오.

6.13. Ansible을 사용하여 IdM에서 DNS 전달 영역이 비활성화되었는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

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

      1. ipaadmin_password 변수를 추가하고 IdM 관리자 암호로 설정합니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전체 전달자 섹션을 제거합니다.
      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
      ipadnsforwardzone:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: example.com
          state: disabled
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리에서 README-dnsforwardzone.md 파일을 참조하십시오.

6.14. Ansible을 사용하여 IdM에서 DNS Forward Zone이 없는지 확인

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dnsconfig 디렉터리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. forwarders-absent.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

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

      1. ipaadmin_password 변수를 추가하고 IdM 관리자 암호로 설정합니다.
      2. name 변수를 추가하고 example.com 으로 설정합니다.
      3. 전체 전달자 섹션을 제거합니다.
      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
        ipadnsforwardzone:
           ipaadmin_password: "{{ ipaadmin_password }}"
           name: example.com
           state: absent
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible-freeipa/ 디렉토리에서 README-dnsforwardzone.md 파일을 참조하십시오.

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

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

사전 요구 사항

7.1. IdM의 DNS 레코드

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

A

호스트 이름과 IPv4 주소에 대한 기본 맵입니다. A 레코드의 레코드 이름은 www 와 같은 호스트 이름입니다. A 레코드의 IP Address 값은 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 2317, RFC 3596 에 지정된 표준 형식이어야 합니다. 호스트 이름 값은 레코드를 생성할 호스트의 정식 호스트 이름이어야 합니다.

참고

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

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

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

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 리소스 레코드 정의

    "DNS 리소스 레코드 추가" 팝업 창의 스크린샷입니다. "Record name" 및 "Hostname" 필드는 들어 있으며 드롭다운 메뉴에서 "Record Type"이 선택되었습니다. "추가" 버튼은 창 하단에 있습니다.
  5. Add 를 클릭하여 새 레코드를 확인합니다.

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

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

사전 요구 사항

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

절차

  1. DNS 리소스 레코드를 추가하려면 ipa dns record-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.4. 일반적인 ipa dns records-* 옵션

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

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

Bash 에서는 여러 개의 항목을 정의할 수 있습니다. . . . . . . . . . . . . . . . . ..

표 7.1. 일반 레코드 옵션

옵션설명

--ttl=number

레코드가 유지되는 시간을 설정합니다.

--structured

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

표 7.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 레코드를 생성합니다.

표 7.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 레코드를 수정할 때 --aaa-rec 옵션은 A 레코드의 현재 값을 지정하는 데 사용됩니다. 새 값은 --a-ip-address 옵션으로 설정됩니다.

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

표 7.4. "PTR" 레코드 옵션

옵션설명예제

--ptr-rec=PTRRECORD

단일 PTR 레코드 또는 PTR 레코드 목록을 전달합니다. 역방향 DNS 레코드를 추가할 때 ipa dns record-add 명령과 함께 사용되는 영역 이름은 다른 DNS 레코드를 추가하는 사용과 비교되어 있습니다. 일반적으로 호스트 IP 주소는 지정된 네트워크에 있는 IP 주소의 마지막 8진수입니다. 오른쪽에 있는 첫 번째 예제에서는 IPv4 주소가 192.168.122.4인 server4.idm.example.com 에 대한 PTR 레코드를 추가합니다. 두 번째 예제에서는 reverse 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

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

 

표 7.5. "SRV" 레코드 옵션

옵션설명예제

--srv-rec=SRVRECORD

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

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

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

--srv-priority=number

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

# IPA dns records-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 dns records-mod server.idm.example.com _ldap._tcp --srv-rec="0 49 389 server2.idm.example.com." --srv-weight=60

--srv-port=number

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

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

--srv-target=string

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

 

추가 리소스

  • ipa dnsrecord-add --help 를 실행합니다.

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

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

사전 요구 사항

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

절차

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

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

    zone.example.com 영역에 대한 정보를 표시하는 "DNS 리소스 레코드" 페이지의 스크린샷입니다. "dns" 레코드 이름에 대한 항목이 강조 표시됩니다.
  4. 삭제할 레코드 유형의 이름으로 확인란을 선택합니다.
  5. 삭제를 클릭합니다.

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

    "A"AAAA" 및 "CNAME" 레코드에 대한 항목을 표시하는 "Replicas 레코드 유형" 페이지의 스크린샷입니다. dns.example.com 항목의 CNAME 테이블에 있는 확인란이 확인되었으며 CNAME 항목과 관련된 "Delete" 버튼이 강조 표시됩니다.

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

추가 리소스

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

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

사전 요구 사항

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

절차

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

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

    zone.example.com 영역에 대한 정보를 표시하는 "DNS 리소스 레코드" 페이지의 스크린샷입니다. "dns" 레코드 이름 항목이 선택되었으며 오른쪽 상단에 있는 "Delete" 버튼이 강조 표시됩니다.

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

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

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

사전 요구 사항

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

절차

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

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

    옵션 없이 ipa dns record-del 을 실행하면 명령에서 삭제할 레코드에 대한 정보를 묻는 메시지를 표시합니다. 명령을 사용하여 --del-all 옵션을 전달하면 영역에 연결된 모든 레코드가 제거됩니다.

추가 리소스

  • ipa dns history-del --help 명령을 실행합니다.

7.8. 추가 리소스

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

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

8.1. IdM의 DNS 레코드

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

A

호스트 이름과 IPv4 주소에 대한 기본 맵입니다. A 레코드의 레코드 이름은 www 와 같은 호스트 이름입니다. A 레코드의 IP Address 값은 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 2317, RFC 3596 에 지정된 표준 형식이어야 합니다. 호스트 이름 값은 레코드를 생성할 호스트의 정식 호스트 이름이어야 합니다.

참고

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

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

8.2. 일반적인 ipa dns records-* 옵션

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

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

Bash 에서는 여러 개의 항목을 정의할 수 있습니다. . . . . . . . . . . . . . . . . ..

표 8.1. 일반 레코드 옵션

옵션설명

--ttl=number

레코드가 유지되는 시간을 설정합니다.

--structured

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

표 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 레코드를 생성합니다.

표 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 레코드를 수정할 때 --aaa-rec 옵션은 A 레코드의 현재 값을 지정하는 데 사용됩니다. 새 값은 --a-ip-address 옵션으로 설정됩니다.

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

표 8.4. "PTR" 레코드 옵션

옵션설명예제

--ptr-rec=PTRRECORD

단일 PTR 레코드 또는 PTR 레코드 목록을 전달합니다. 역방향 DNS 레코드를 추가할 때 ipa dns record-add 명령과 함께 사용되는 영역 이름은 다른 DNS 레코드를 추가하는 사용과 비교되어 있습니다. 일반적으로 호스트 IP 주소는 지정된 네트워크에 있는 IP 주소의 마지막 8진수입니다. 오른쪽에 있는 첫 번째 예제에서는 IPv4 주소가 192.168.122.4인 server4.idm.example.com 에 대한 PTR 레코드를 추가합니다. 두 번째 예제에서는 reverse 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

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

 

표 8.5. "SRV" 레코드 옵션

옵션설명예제

--srv-rec=SRVRECORD

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

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

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

--srv-priority=number

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

# IPA dns records-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 dns records-mod server.idm.example.com _ldap._tcp --srv-rec="0 49 389 server2.idm.example.com." --srv-weight=60

--srv-port=number

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

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

--srv-target=string

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

 

추가 리소스

  • ipa dnsrecord-add --help 를 실행합니다.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dns record 디렉토리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. 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
  4. 편집을 위해 ensure-A-and-AAAA- records-present-copy.yml 파일을 엽니다.
  5. ipadns record 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • 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.
        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
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • IdM의 DNS 레코드를 참조하십시오.
  • /usr/share/doc/ansible -freeipa/ 디렉토리의 README-dns history.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsrecord 디렉터리의 샘플 Ansible 플레이북을 참조하십시오.

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.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • idm.example.com DNS 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dns record 디렉토리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. ensure-dns record-with-reverse-is-present.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • name 변수를 host1 로 설정합니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.
    • ip_address 변수를 192.168.122.45 로 설정합니다.
    • create_reverse 변수를 yes 로 설정합니다.

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

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

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

추가 리소스

  • IdM의 DNS 레코드를 참조하십시오.
  • /usr/share/doc/ansible -freeipa/ 디렉토리의 README-dns history.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsrecord 디렉터리의 샘플 Ansible 플레이북을 참조하십시오.

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible Playbook을 사용하여 IdM DNS 영역을 관리하는 방법을 참조하십시오.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dns record 디렉토리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. ensure-presence-multiple- records.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • 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 으로 설정합니다.
      • aaa_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
      - 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
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • IdM의 DNS 레코드를 참조하십시오.
  • /usr/share/doc/ansible -freeipa/ 디렉토리의 README-dns history.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsrecord 디렉터리의 샘플 Ansible 플레이북을 참조하십시오.

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

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

단일 IP 주소에서 여러 서비스를 실행할 때 유용한 CNAME 레코드를 찾을 수 있습니다. 예를 들어 FTP 서비스 및 웹 서비스는 각각 다른 포트에서 실행됩니다.

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible Playbook을 사용하여 IdM DNS 영역을 관리하는 방법을 참조하십시오.
  • host03 A 레코드는 idm.example.com 영역에 있습니다.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dns record 디렉토리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. ensure-CNAME- record-is-present.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • (선택 사항) 플레이 이름에서 제공하는 설명을 선택합니다.
    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • zone_name 변수를 idm.example.com 으로 설정합니다.
    • records 변수 섹션에서 다음 변수 및 값을 설정합니다.

      • name 변수를 www 로 설정합니다.
      • 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:
      - ipadnsrecord:
          ipaadmin_password: "{{ ipaadmin_password }}"
          zone_name: idm.example.com
          records:
          - name: www
            cname_hostname: host03
          - name: ftp
            cname_hostname: host03
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • /usr/share/doc/ansible -freeipa/ 디렉토리의 README-dns history.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsrecord 디렉터리의 샘플 Ansible 플레이북을 참조하십시오.

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

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

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

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

사전 요구 사항

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

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장한다고 가정합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • idm.example.com 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/dns record 디렉토리로 이동합니다.

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

    [ipaserver]
    server.idm.example.com
  3. ensure-SRV- record-is-present.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.

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

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • 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
      - 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
  6. 파일을 저장합니다.
  7. 플레이북을 실행합니다.

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

추가 리소스

  • IdM의 DNS 레코드를 참조하십시오.
  • /usr/share/doc/ansible -freeipa/ 디렉토리의 README-dns history.md 파일을 참조하십시오.
  • /usr/share/doc/ansible-freeipa/playbooks/dnsrecord 디렉터리의 샘플 Ansible 플레이북을 참조하십시오.

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

잠재적인 보안 위험을 방지하기 위해 기본적으로 IdM(Identity Management) 클라이언트에서 DNS 표준화가 비활성화됩니다. 예를 들어 공격자가 도메인의 DNS 서버와 호스트를 제어하는 경우 공격자는 데모 와 같은 짧은 호스트 이름을 유발하여 손상된 호스트를 확인(예: malicious.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 파일에서 호스트 이름을 정식화할 수 있습니다. 자세한 내용은 클라이언트의 서비스 주체에서 호스트 이름 표준화 를 참조하십시오.

사전 요구 사항

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

절차

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

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

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

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

다음 절차에 따라 클라이언트의 서비스 주체에서 호스트 이름을 사용할 수 있습니다.

호스트 주체에 별칭 추가에 설명된 대로 호스트 주체 별칭을 사용하는 경우 표준화를 활성화할 필요가 없습니다.

사전 요구 사항

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

절차

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

    [libdefaults]
    ...
    dns_canonicalize_hostname = true

9.3. DNS 호스트 이름 정식화가 활성화된 호스트 이름을 사용하는 옵션

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

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

법적 공지

Copyright © 2024 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.