Azure CLI를 사용하여 Azure DNS에서 DNS 레코드 및 레코드 집합 관리
- Azure Portal
- Azure CLI
- PowerShell
이 문서에서는 플랫폼 간 Azure CLI를 사용하여 DNS 영역에 대한 DNS 레코드를 관리하는 방법을 보여 줍니다. Azure CLI는 Windows, Mac 및 Linux에서 사용할 수 있습니다. Azure PowerShell 또는 Azure Portal을 사용하여 DNS 레코드를 관리할 수도 있습니다.
이 문서의 예제에서는 이미 Azure CLI를 설치했고, 로그인했고, DNS 영역을 만들었다고 가정합니다.
소개
Azure DNS에 DNS 레코드를 만들기 전에 먼저 Azure DNS에서 DNS 레코드를 DNS 레코드 집합으로 구성하는 방법을 이해해야 합니다.
레코드 이름
Azure DNS에서는 상대 이름을 사용하여 레코드를 지정합니다. FQDN(정규화된 도메인 이름)에는 영역 이름이 포함되지만 상대 이름은 포함하지 않습니다. 예를 들어 영역 contoso.com
의 상대 레코드 이름 www
는 정규화된 레코드 이름 www.contoso.com
을 제공합니다.
apex 레코드는 DNS 영역의 루트(또는 apex)에 있는 DNS 레코드입니다. 예를 들어 DNS 영역 contoso.com
에서 루트 레코드는 정규화된 이름 contoso.com
도 가집니다(naked 도메인이라고도 함). 규칙에 따라 루트 레코드를 나타내는 데 \'\@\' 상대 이름을 사용합니다.
레코드 유형
각 DNS 레코드에는 이름 및 형식이 있습니다. 레코드는 포함된 데이터에 따라 다양한 형식으로 구성됩니다. 가장 일반적인 형식은 이름을 IPv4 주소에 매핑하는 'A' 레코드입니다. 또 다른 일반적인 형식은 이름을 메일 서버에 매핑하는 'MX' 레코드입니다.
Azure DNS는 A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV, TXT 등 일반적인 DNS 레코드 형식을 모두 지원합니다. SPF 레코드는 TXT 레코드를 사용하여 표현됩니다.
영역이 DNSSEC(DNS 보안 확장)로 서명된 경우 DS(위임 서명자) 및 TLSA(전송 계층 보안 인증) 리소스 레코드와 같은 추가 레코드 유형이 지원됩니다.
DNSKEY, RRSIG 및 NSEC3 레코드와 같은 DNSSEC 리소스 레코드 형식은 영역이 DNSSEC로 서명되면 자동으로 추가됩니다. 이러한 유형의 DNSSEC 리소스 레코드는 영역 서명 후에 만들거나 수정할 수 없습니다.
레코드 집합
지정된 이름 및 형식을 가진 DNS 레코드를 두 개 이상 만들어야 하는 경우도 있습니다. 예를 들어 'www.contoso.com' 웹 사이트가 서로 다른 두 IP 주소에서 호스트된다고 가정합니다. 웹 사이트에는 각 IP 주소마다 하나씩, 두 개의 A 레코드가 있어야 합니다. 레코드 집합의 예는 다음과 같습니다.
www.contoso.com. 3600 IN A 134.170.185.46
www.contoso.com. 3600 IN A 134.170.188.221
Azure DNS는 레코드 집합을 사용하여 모든 DNS 레코드를 관리합니다. 레코드 집합(리소스 레코드 집합이라고도 함)은 영역 내에서 동일한 이름과 형식을 가진 DNS 레코드의 컬렉션입니다. 대부분의 레코드 집합은 단일 레코드를 포함합니다. 그러나 레코드 집합에 둘 이상의 레코드가 포함된 위와 같은 예제는 드문 일이 아닙니다.
예를 들어 'contoso.com' 영역에 IP 주소 '134.170.185.46'(위 첫 번째 레코드)을 가리키는 A 레코드 'www'를 만든 경우를 가정해 보겠습니다. 두 번째 레코드를 만들려면 추가 레코드 집합을 만드는 대신 기존 레코드 집합에 해당 레코드를 추가합니다.
SOA 및 CNAME 레코드 유형은 예외입니다. DNS 표준에서는 이러한 유형의 이름이 같은 여러 레코드를 허용하지 않으므로 이러한 레코드 집합은 단일 레코드만 포함할 수 있습니다.
Azure DNS의 DNS 레코드에 대한 자세한 내용은 DNS 영역 및 레코드를 참조하세요.
DNS 레코드 만들기
DNS 레코드를 만들려면 az network dns record-set <record-type> add-record
명령을 사용합니다(여기서 <record-type>
은 a, srv, txt 등과 같은 레코드 유형임). 도움말은 az network dns record-set --help
를 참조하세요.
레코드를 만들 때 다음 정보를 지정해야 합니다.
- 리소스 그룹 이름
- 영역 이름
- 레코드 집합 이름
- 레코드 종류
레코드 집합 이름은 상대 이름이어야 합니다. 즉, 영역 이름을 제외해야 합니다. 레코드 집합이 아직 존재하지 않는 경우 이 명령이 레코드 집합을 만듭니다. 그러나 이 명령은 레코드 집합이 이미 존재하는 경우 지정한 레코드를 추가합니다.
새 레코드 집합이 만들어지면 3600의 기본 TTL(Time to Live)이 사용됩니다. 다른 TTL을 사용하는 방법에 대한 지침은 DNS 레코드 집합 만들기를 참조하세요.
다음 예제에서는 MyResourceGroup 리소스 그룹의 contoso.com 영역에 www라는 A 레코드를 만듭니다. A 레코드의 IP 주소는 203.0.113.11입니다.
az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 203.0.113.11
영역의 구로에서 레코드 집합을 만들려면(이 경우 "contoso.com"), 따옴표를 포함한 레코드 이름 "\@\" 를 사용합니다.
az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --ipv4-address 203.0.113.11
DNS 레코드 집합 만들기
위의 예제에서는 DNS 레코드가 기존 레코드 집합에 추가되거나 레코드 집합이 명시적으로 생성되었습니다. 레코드를 추가하기 전에 레코드 집합을 명시적으로 만들 수도 있습니다. Azure DNS는 DNS 레코드를 만들기 전에 DNS 이름을 예약하는 자리 표시자 역할을 수행할 수 있는 '빈' 레코드 집합도 지원합니다. 빈 레코드 집합은 Azure DNS 제어 평면에 표시되어 있지만 Azure DNS 이름 서버에도 나타납니다.
az network dns record-set <record-type> create
명령을 사용하여 레코드 집합을 만듭니다. 도움말을 보려면 az network dns record-set <record-type> create --help
을 참조하세요.
레코드 집합을 명시적으로 만들면 TTL(Time to Live) 및 메타데이터와 같은 레코드 집합 속성을 지정할 수 있습니다. 레코드 집합 메타데이터는 키-값 쌍의 형태로 각 레코드 집합과 애플리케이션 특정 데이터를 연결하는 데 사용할 수 있습니다.
다음 예제에서는 --ttl
매개 변수(약식 -l
)를 사용하여 60초 TTL이 있는 비어 있는 'A' 형식의 레코드 집합을 만듭니다.
az network dns record-set a create --resource-group myresourcegroup --zone-name contoso.com --name www --ttl 60
다음 예제에서는 --metadata
매개 변수를 사용하여 "dept=finance" 및 "environment=production"라는 두 개의 메타데이터 항목을 가진 레코드 집합을 만듭니다.
az network dns record-set a create --resource-group myresourcegroup --zone-name contoso.com --name www --metadata "dept=finance" "environment=production"
비어 있는 레코드 집합을 만들었으므로 DNS 레코드 만들기에 설명된 대로 azure network dns record-set <record-type> add-record
를 사용하여 레코드를 추가할 수 있습니다.
다른 형식의 레코드 만들기
지금까지 'A' 레코드를 만드는 방법에 대해 자세히 살펴보았으며, 다음 예제에서는 Azure DNS에서 지원하는 다른 레코드 형식의 레코드를 만드는 방법을 보여 줍니다.
레코드 데이터를 지정하는 데 사용되는 매개 변수는 레코드 유형에 따라 다릅니다. 예를 들어 "A" 유형의 레코드의 경우 --ipv4-address <IPv4 address>
매개 변수로 IPv4 주소를 지정합니다. 각 레코드 형식에 대한 매개 변수는 az network dns record-set <record-type> add-record --help
를 사용하여 나열할 수 있습니다.
각각의 경우에 단일 레코드를 만드는 방법을 보여줍니다. 레코드는 기존 레코드 집합 또는 암시적으로 생성된 레코드 집합에 추가됩니다. 레코드 집합 생성 및 레코드 집합 매개 변수를 명시적으로 정의하는 방법은 DNS 레코드 집합 만들를 참조하세요.
각 DNS 영역에 SOA가 생성 및 삭제되므로 SOA 레코드 집합을 만드는 예제는 없습니다. SOA 레코드는 별도로 생성 또는 삭제할 수 없습니다. 그러나 뒷부분의 예제에 표시된 대로 SOA를 수정할 수 있습니다.
AAAA 레코드 만들기
az network dns record-set aaaa add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-aaaa --ipv6-address FD00::1
CAA 레코드 만들기
az network dns record-set caa add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-caa --flags 0 --tag "issue" --value "ca1.contoso.com"
CNAME 레코드 만들기
참고 항목
DNS 표준은 영역의 apex(--Name "@"
)에서 CNAME 레코드를 허용하거나 둘 이상의 레코드를 포함하는 레코드 집합을 허용하지 않습니다.
자세한 내용은 CNAME 레코드를 참조하세요.
az network dns record-set cname set-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-cname --cname www.contoso.com
MX 레코드 만들기
이 예제에서는 레코드 집합 이름을 "@"로 사용하여 영역 구로에 MX 레코드를 만듭니다(이 경우 "contoso.com").
az network dns record-set mx add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --exchange mail.contoso.com --preference 5
NS 레코드 만들기
az network dns record-set ns add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-ns --nsdname ns1.fabrikam.com
PTR 레코드 만들기
이 경우에 'my-arpa-zone.com'은 IP 범위를 나타내는 ARPA 영역을 나타냅니다. 이 영역의 각 PTR 레코드 집합은 IP 범위 내의 IP 주소에 해당합니다. 레코드 이름 '10'은 이 레코드에서 나타내는 이 IP 범위 내에서 IP 주소의 마지막 옥텟입니다.
az network dns record-set ptr add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name my-arpa.zone.com --ptrdname myservice.contoso.com
SRV 레코드 만들기
SRV 레코드 집합을 만들 경우 레코드 집합 이름에 _service 및 _protocol을 지정합니다. 영역 apex에 SRV 레코드 집합을 만드는 경우 레코드 집합 이름에 "@"을 포함할 필요가 없습니다.
az network dns record-set srv add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name _sip._tls --priority 10 --weight 5 --port 8080 --target sip.contoso.com
TXT 레코드 만들기
다음 예제에서는 TXT 레코드를 만드는 방법을 보여 줍니다. TXT 레코드에서 지원되는 최대 문자열 길이에 대한 자세한 내용은 TXT 레코드를 참조하세요.
az network dns record-set txt add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-txt --value "This is a TXT record"
레코드 집합 가져오기
기존 레코드 집합을 가져오려면, az network dns record-set <record-type> show
를 사용합니다. 도움말을 보려면 az network dns record-set <record-type> show --help
을 참조하세요.
레코드 또는 레코드 집합을 만들 때 지정된 레코드 집합 이름은 상대적 이름이어야 합니다. 이 이름에는 영역 이름이 포함되지 않습니다. 레코드 형식, 레코드 집합을 포함하는 영역 및 영역을 포함하는 리소스 그룹을 지정해야 합니다.
다음 예제에서는 MyResourceGroup 리소스 그룹의 contoso.com 영역에서 www라는 A 형식의 레코드를 검색합니다.
az network dns record-set a show --resource-group myresourcegroup --zone-name contoso.com --name www
레코드 집합 나열
az network dns record-set list
명령을 사용하여 DNS 영역에 있는 모든 레코드를 나열할 수 있습니다. 도움말을 보려면 az network dns record-set list --help
을 참조하세요.
이 예에서는 리소스 그룹 MyResourceGroup의 contoso.com 영역에 있는 모든 레코드 집합을 반환합니다.
az network dns record-set list --resource-group myresourcegroup --zone-name contoso.com
이 예제는 지정된 레코드 형식(이 경우 'A' 레코드)과 일치하는 모든 레코드 집합을 반환합니다.
az network dns record-set a list --resource-group myresourcegroup --zone-name contoso.com
기존 레코드 집합에 레코드 추가
az network dns record-set <record-type> add-record
를 사용하여 새 레코드 집합에 레코드를 만들거나 기존 레코드 집합에 레코드를 추가할 수 있습니다.
자세한 내용은 위의 DNS 레코드 만들기 및 다른 형식의 레코드 만들기를 참조하세요.
기존 레코드 집합에서 레코드를 제거합니다.
기존 레코드 집합에서 DNS 레코드를 제거하려면 az network dns record-set <record-type> remove-record
를 사용합니다. 도움말을 보려면 az network dns record-set <record-type> remove-record -h
을 참조하세요.
이 명령은 레코드 집합에서 DNS 레코드를 삭제합니다. 레코드 집합에서 마지막 레코드가 삭제되면 레코드 집합 자체도 삭제됩니다. 대신, 빈 레코드 집합을 유지하려면 --keep-empty-record-set
옵션을 사용합니다.
az network dns record-set <record-type> add-record
명령을 사용할 때 삭제할 레코드와 삭제할 영역을 지정해야 합니다. 이러한 매개 변수는 위의 DNS 레코드 만들기 및 다른 형식의 레코드 만들기에 설명됩니다
다음 예제에서는 MyResourceGroup 리소스 그룹의 contoso.com 영역에 www라는 레코드 집합에서 값이 '203.0.113.11'인 A 레코드를 삭제합니다.
az network dns record-set a remove-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "www" --ipv4-address 203.0.113.11
기존 레코드 집합 수정
각 레코드 집합에는 TTL(Time to Live), 메타데이터 및 DNS 레코드가 포함됩니다. 다음 섹션에서는 이러한 각 속성을 수정하는 방법을 설명합니다.
A, AAAA, CAA, MX, NS, PTR, SRV 또는 TXT 레코드를 수정하려면
A, AAAA, CAA, MX, NS, PTR, SRV 또는 TXT 형식의 기존 레코드를 수정하려면 먼저 새 레코드를 추가한 후 기존 레코드를 삭제해야 합니다. 레코드를 삭제 및 추가하는 방법에 대한 자세한 내용은 이 문서의 이전 섹션을 참조하세요.
다음 예제에서는 IP 주소 203.0.113.11~IP 주소 203.0.113.22 범위에서 'A' 레코드를 수정하는 방법을 보여줍니다.
az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 203.0.113.22
az network dns record-set a remove-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 203.0.113.11
영역 루트(인용 부호를 포함하는 --Name "@"
)에 자동으로 생성된 NS 레코드 집합에서 레코드를 추가, 제거 또는 수정할 수는 없습니다. 이 레코드 집합의 경우 레코드 집합 TTL 및 메타데이터를 수정하는 변경 작업만 허용됩니다.
CNAME 레코드를 수정하려면
대부분의 다른 레코드 형식과 달리 CNAME 레코드 집합은 단일 레코드만 포함할 수 있습니다. 따라서 다른 레코드 유형과 마찬가지로 새 레코드를 추가하고 기존 레코드를 제거하여 현재 값을 바꿀 수 없습니다.
대신 CNAME 레코드를 수정하려면 az network dns record-set cname set-record
를 사용합니다. 도움말을 보려면 az network dns record-set cname set-record --help
를 참조하세요.
이 예에서는 기존 값 대신 'www.fabrikam.net'을 가리키도록 MyResourceGroup 리소스 그룹의 contoso.com 영역에서 www라는 CNAME 레코드 집합을 수정합니다.
az network dns record-set cname set-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-cname --cname www.fabrikam.net
SOA 레코드를 수정하려면
대부분의 다른 레코드 유형과 달리 SOA 레코드 집합에는 단일 레코드만 포함될 수 있습니다. 따라서 다른 레코드 유형과 마찬가지로 새 레코드를 추가하고 기존 레코드를 제거하여 현재 값을 바꿀 수 없습니다.
대신 SOA 레코드를 수정하려면 az network dns record-set soa update
를 사용합니다. 도움말을 보려면 az network dns record-set soa update --help
을 참조하세요.
다음 예에서는 contoso.com 영역에 대한 SOA 레코드의 'email' 속성을 설정하는 방법을 보여 줍니다.
az network dns record-set soa update --resource-group myresourcegroup --zone-name contoso.com --email admin.contoso.com
영역 루트의 NS 레코드를 수정하려면
각 DNS 영역에 영역 루트의 NS 레코드 집합이 자동으로 만들어집니다. 여기에는 영역에 할당된 Azure DNS 이름 서버의 이름이 포함됩니다.
이 NS 레코드 집합에 추가 이름 서버를 추가하여 DNS 공급자가 2개 이상 있는 공동 호스팅 도메인을 지원할 수 있습니다. 또한 이 레코드 집합의 TTL 및 메타데이터를 수정할 수도 있습니다. 그러나 미리 채워진 Azure DNS 이름 서버는 제거하거나 수정할 수 없습니다.
이 제한은 영역 루트에 있는 NS 레코드 집합에만 적용됩니다. 영역의 다른 NS 레코드 집합은 제약 없이 수정할 수 있습니다(자식 영역을 위임하는 데 사용되므로).
다음 예제에서는 영역 루트의 NS 레코드 집합에 다른 이름 서버를 추가하는 방법을 보여 줍니다.
az network dns record-set ns add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --nsdname ns1.fabrikam.com
기존 레코드 집합의 TTL을 수정하려면
기존 레코드 집합의 TTL을 수정하려면 azure network dns record-set <record-type> update
을 사용합니다. 도움말을 보려면 azure network dns record-set <record-type> update --help
을 참조하세요.
다음 예제에서는 레코드 집합 TTL(이 경우 60초)을 수정하는 방법을 보여 줍니다.
az network dns record-set a update --resource-group myresourcegroup --zone-name contoso.com --name www --set ttl=60
기존 레코드 집합의 메타데이터를 수정하려면
레코드 집합 메타데이터는 키-값 쌍의 형태로 각 레코드 집합과 애플리케이션 특정 데이터를 연결하는 데 사용할 수 있습니다. 기존 레코드 집합의 메타데이터를 수정하려면 az network dns record-set <record-type> update
을 사용합니다. 도움말을 보려면 az network dns record-set <record-type> update --help
을 참조하세요.
다음 예제에서는 "dept=finance" 및 "environment=production"라는 두 개의 메타데이터 항목을 가진 레코드 집합을 수정하는 방법을 보여 줍니다. 기존 메타데이터는 지정된 값으로 대체됩니다.
az network dns record-set a update --resource-group myresourcegroup --zone-name contoso.com --name www --set metadata.dept=finance metadata.environment=production
레코드 집합 삭제
az network dns record-set <record-type> delete
명령을 사용하여 레코드 집합을 삭제할 수 있습니다. 도움말을 보려면 azure network dns record-set <record-type> delete --help
을 참조하세요. 레코드 집합을 삭제하면 레코드 집합 내에서 모든 레코드가 삭제됩니다.
참고 항목
영역 apex(--name "@"
)에서 SOA 및 NS 레코드 집합을 삭제할 수 없습니다 . 이러한 항목은 영역을 만들 때 자동으로 만들어지고 영역을 삭제할 때 자동으로 삭제됩니다.
다음 예제에서는 MyResourceGroup 리소스 그룹의 contoso.com 영역에서 www라는 A 형식의 레코드 집합을 삭제합니다.
az network dns record-set a delete --resource-group myresourcegroup --zone-name contoso.com --name www
삭제 작업을 확인하라는 메시지가 표시됩니다. 이 프롬프트를 표시하지 않으려면 --yes
스위치를 사용합니다.
다음 단계
Azure DNS의 영역 및 레코드에 대해 자세히 알아봅니다.
Azure DNS를 사용하는 경우 영역 및 레코드를 보호하는 방법에 대해 알아봅니다.