API ResourceRecordSets của Cloud DNS

1. Giới thiệu

64e18005b6cdcd83.png.

Lần cập nhật gần đây nhất: 6/1/2021

Cloud DNS là gì?

Hãy xem trang chủ của chúng tôi.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ tạo một ManagedZone của Cloud DNS và các ResourceRecordSet có liên quan bằng gcloud để quản lý việc phân giải tên cho một số thực thể máy ảo.

Kiến thức bạn sẽ học được

Cách TẠO, ĐỌC, XOÁ và CẬP NHẬT từng ResourceRecordSets.

Bạn cần có

2. Thiết lập

Thiết lập dự án trên Google Cloud Platform

Đăng nhập vào gcloud

gcloud auth login

Tạo một dự án

gcloud projects create my-codelab-project

Bật Cloud DNS API

gcloud services enable dns.googleapis.com

Có thể mất vài phút thì quá trình cập nhật thẻ mới có hiệu lực

3. Tạo ManagedZone riêng tư

Một ManagedZone chứa ResourceRecordSets.

Ghi lại tên miền mà bạn muốn thêm bản ghi DNS. Trong ví dụ này, chúng tôi sẽ sử dụng "my-domain.com" và giả định thực thể máy ảo của bạn nằm trên mạng mặc định.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. Quản lý ResourceRecordSets

Ở cuối phần này, các yêu cầu DNS qua mạng riêng ảo cho miền của bạn sẽ phân giải thành địa chỉ IP của máy ảo.

Ví dụ: nếu địa chỉ IP của máy ảo là "1.2.3.4" và bạn muốn dùng "my-domain.com". để phân giải đến địa chỉ IP đó, bạn phải tạo "bản ghi A".

TẠO một bản ghi A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • Đối số vị trí "my-domain.com". , còn được gọi là dnsName, là tên mà chúng tôi muốn xác định quá trình phân giải DNS.
  • –type: biểu thị loại bản ghi DNS mà chúng ta đang muốn tạo.
  • –ttl: biểu thị thời gian tồn tại của bản ghi này.
  • –rrdatas: lưu giữ câu trả lời thực tế cho truy vấn.
  • –zone: bắt buộc phải chuyển hướng đến ManagedZone bản ghi này sẽ được tạo.

Đọc thêm về khái niệm DNS tại đây.

Giờ đây, sau khi tạo bản ghi A, bạn có thể kiểm tra hoạt động phân giải DNS.

SSH vào máy của bạn. Trong ví dụ này, chúng tôi sử dụng một thực thể máy ảo có tên là "dns-codelab" trong "us-central1-a"

gcloud compute ssh codelab --zone=us-central1-a

Cài đặt dnsutils để có thể sử dụng toán tử "dig" Command

sudo apt install dnsutils

truy vấn miền của bạn

dig my-domain.com.

Thao tác này sẽ cho ra kết quả tương tự như

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com.                        IN        A

;; ANSWER SECTION:
my-domain.com.                60        IN        A        1.2.3.4
...

TẠO, VÁ và NHẬN bản ghi CNAME

Giờ thì bạn đã liên kết my-domain.com. đến 1.2.3.4, bạn có thể sẽ muốn đảm bảo rằng www.my-domain.com. cũng phân giải thành 1.2.3.4. Bản ghi của "www." tiền tố không được tạo tự động.

Nếu bạn truy vấn www.my-domain.com.

dig www.my-domain.com.

bạn sẽ nhận được kết quả tương tự như

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

cho biết rằng không có bản ghi DNS nào cho miền đó

Thay vì tạo một bản ghi A khác, chúng ta nên tạo bản ghi CNAME là con trỏ tới bản ghi khác. Điều này sẽ giúp chúng tôi không phải thay đổi cả hai bản ghi trong trường hợp muốn sử dụng một địa chỉ IP khác.

thoát khỏi máy ảo

exit

Tạo bản ghi CNAME

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

Bây giờ, bạn đã tạo bản ghi CNAME, bạn có thể kiểm tra độ phân giải DNS.

SSH lại vào máy của bạn

gcloud compute ssh codelab --zone=us-central1-a

truy vấn miền của bạn

dig www.my-domain.com.

bạn sẽ nhận được kết quả tương tự như

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

Ối! Có vẻ như đã có lỗi đánh máy khi chúng tôi tạo bản ghi CNAME tại "–rrdatas" cờ. Thay vì xoá và tạo lại bản ghi, chúng ta có thể vá theo đúng thay đổi.

thoát phiên bản máy ảo

exit

Vá bản ghi CNAME

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

Xin lưu ý rằng chúng ta có thể bỏ "–ttl" vì chúng ta sẽ không thay đổi cờ này, nhưng phải đưa vào tất cả cờ khác do chúng là một phần của giá trị nhận dạng duy nhất trên toàn cầu của ResourceRecordSet.

Chúng tôi cũng có thể xác minh rằng bản ghi hoạt động đúng như dự kiến bằng gcloud

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

sẽ tạo ra đầu ra

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

xác minh rằng bản ghi CNAME đang phân giải chính xác

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

bạn sẽ nhận được kết quả tương tự như

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com.                IN        A

;; ANSWER SECTION:
www.my-domain.com.        60        IN        CNAME         my-domain.com..
...

XOÁ để dọn dẹp

Trước khi có thể xoá một ManagedZone, trước tiên, tất cả ResourceRecordSet trong ManagedZone đều phải được xoá (ngoại trừ các bản ghi NS và SOA được tạo tự động và phải luôn tồn tại trong ManagedZone).

thoát phiên bản máy ảo

exit

Xoá bản ghi CNAME

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

Xoá bản ghi A

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

Xoá ManagedZone

gcloud dns managed-zones delete "my-zone"

5. Xin chúc mừng

Xin chúc mừng, bạn đã tìm hiểu thành công cách quản lý ResourceRecordSets!

Tài liệu đọc thêm

Tài liệu tham khảo