Tìm hiểu về domain name system
#dns
1
#domain
1
#nameserver
1
White

bqthanh viết ngày 31/01/2019

Tổng quan

DNS - Domain Name System hay hệ thống tên miền là một cơ sở dữ liệu phân tán nằm trên các server khác nhau lưu thông tin ánh xạ giữa domain name và địa chỉ IP. DNS thực hiện dịch domain name tới một địa chỉ IP và ngược lại.

Sau đây là sơ đồ hoạt động của DNS.

alt text

Một số khái niệm trong DNS

Domain name space

Là một cấu trúc dạng cây chứa toàn bộ không gian domain như hình ảnh sau đây:

Domain

Là một nhánh của domain name space. Sau đây ví dụ về domain "purdue.edu".

Domain name

Mỗi node trong cây có một nhãn. Một domain name của bất kỳ một node nào trong cây là thứ tự các nhãn trong đường dẫn từ node đó đến root, tên mỗi node được phân cách bằng dấu chấm .

Resource Record

Thông tin về domain name được lưu trong các resource record. Mỗi resource record đặc tả thông tin về một đối tượng cụ thể. DNS server sử dụng các record này để trả lời các DNS query. Dưới đây là một vài resource record phổ biến:

  • SOA - Start of authority: Record lưu thông tin quản trị zone và mỗi zone chỉ có duy nhất một SOA.
  • NS - Name server: Record lưu ánh xạ domain name tới một danh sách các name server.
  • A: Record lưu ánh xạ domain name tới một địa chỉ IP.
  • PTR - Reverse-lookup pointer: Record lưu ánh xạ địa chỉ IP tới một domain name.
  • MX - Mail exchange: Record lưu ánh xạ domain name tới một danh sách các mail server. Ví dụ khi bạn gửi mail tới contact@example.com thì mail sẽ được chuyển tới mail server được đặc tả trong MX Record.
  • CNAME: Record lưu ánh xạ một domain name tới một domain name khác.

Top level domain

Là domain ở cấp cao nhất ngay bên dưới root domain trong hệ thống phân cấp của DNS. Top level domain được chia ra làm 2 loại chính:

  1. Generic TLD (gTLD)
  2. Country Code TLD (ccTLD)

Ví dụ một vài gTLD:

  • .com: Cho các website thương mại
  • .org: Cho các tổ chức phi lợi nhuận
  • .edu: Giới hạn trong các trường học và tổ chức
  • .net: Ban đầu giới hạn trong các tổ chức hạ tầng mạng nhưng bây giờ thì không hạn chế

Ví dụ một vài ccTLD:

  • .us: United States
  • .in: India
  • .uk: United Kingdom
  • .vn: Vietnam

Hình ảnh cấu trúc cây DNS:

Delegation và Authority

Một trong những mục tiêu chính của thiết kế hệ thống DNS là phân cấp quản trị. Nó đạt được thông qua delegation - uỷ thác.

Cơ quan quản lý domain gọi là Authority. Cơ quan quản lý root domain và gTLD thuộc về ICANN - Internet Corporation for Assigned Names and Numbers. Tên miền ccTLD thì được quản lý bởi các quốc gia.

Một tổ chức quản lý domain có thể chia nó thành các sub-domain. Mỗi sub-domain có thể ủy quyền quản trị cho các tổ chức khác. Ví dụ domain "standford.edu" được uỷ quyền quản trị tới trường đại học Standard.

Name server và Zone

Name server: Là server lưu trữ các resource record về domain và thông tin name server của các sub-domain của nó. Các name server thường chỉ chứa thông tin đầy đủ về một phần của domain name space được gọi là zone.

Lưu ý: Root name server là name server của root domain hay name server gốc của toàn bộ hệ thống DNS.

Sau đây là ví dụ domain edu được chia thành các zone như: zone berkeley.edu, zone purdue.edu và zone nwu.edu zone. Và bản thân edu cũng là một zone.

DNS Resolver

Phía client của DNS gọi là DNS Resolver. DNS Resolver chịu trách nhiệm thực hiện các DNS query.

DNS Query

Có 3 loại DNS query:

  • Recursive query: Truy vấn đệ quy
  • Iterative query: Truy vấn lặp đi lặp lại
  • Inverse query: Truy vấn domain name cho địa chỉ IP chỉ định



Sau đây là các bước khi thực hiện phân giải tên miền chẳng hạn rutgers.edu.

  • Resolver sẽ gửi một query tới DNS local
  • DNS local sẽ tìm kiếm rutgers.edu trong cơ sở liệu của nó. Nếu có trả về địa chỉ IP cho Resolver. Nếu không thực hiện bước tiếp theo.
  • Resolver sẽ gửi query tới root name server
  • Root name server sẽ uỷ thác trả lời query đến name server của domain .edu
  • Name server của domain .edu tiếp tục uỷ thác trả lời query đến name server của domain rutgers.edu
  • Trả về thông tin IP được lấy từ A record cho Resolver.

Một vài mẹo khi sử dụng DNS

Cấu hình DNS local sử dụng hosts file

Tôi gặp một tình huống như sau: Khách hàng sẽ migration server sang một server mới mà không stop service trên server cũ + một số rule sercurity mà khách hàng config 2 server vs thông tin kiểu như sau:

  • Domain name example.com được gắn với IP của server A.
  • Cả server A và server B đều có cùng config server_name = example.com trên web server.

Vậy làm thế nào để access vào website example.com của server B?

Tôi thêm config sau vào file hosts với path là /etc/hosts ở các máy hệ linux hay mac.

SERVER-B_IP_ADDRESS example.com

Lưu ý: Host file được sử dụng giống như một resource record để phân giải domain name tới địa chỉ IP.

Khi đó nếu bạn gõ example.com lên browser nó sẽ chạy đến website example.com của server B thay vì server A. Để xác nhận xem config đã hoạt động ổn chưa bạn bật Develop Tools của browser rồi kiểm tra thông tin Headers của request có dạng như sau:

Request URL: http://example.com/
Request Method: GET
Status Code: 200 OK
Remote Address: SERVER_ADDRESS
Referrer Policy: no-referrer-when-downgrade

Cấu hình DNS cho domain name

Để một website hoạt động thì ta phải thực hiện thao tác trỏ domain name về website đó. Và có 2 cách để làm việc này đó là:

  • Trỏ thẳng domain name tới địa chỉ IP của server chứa website đó.
    hoặc
  • Thêm thông tin name server của nhà cung cấp server vào domain name.

Sau khi config xong bạn có thể sử dụng tool sau để kiểm tra thông tin cấu hình domain name:
https://ipinfo.info/html/ip_checker.php/

Sử dụng CNAME record

Giả sử bạn có 2 website là example.comexample.vn trên cùng một server. Khi đó bạn có thể config 2 domain name trỏ đến cùng một địa chỉ IP nhưng nếu bạn có ý định đổi địa chỉ IP của server thì bạn phải config IP lại cho cả 2 domain name trên.

Tuy nhiên nếu sử dụng CNAME record chẳng hạn trỏ domain name example.vn tới domain name example.com như ví dụ bên dưới thì khi đó bạn cần config IP lại chỉ ở domain main example.com mà thôi.

NAME               TYPE    VALUE
---------------------------------------
example.vn.        CNAME   example.com.
example.com.        A      192.0.2.23

Tài liệu tham khảo

http://web.deu.edu.tr/doc/oreily/networking/dnsbind/
https://www.thegeekstuff.com/2013/12/dns-basics/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

bqthanh

5 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
20 0
Tổng quan về AWS Amazon web services là một nền tảng điện toán đám mây được phát triển và cung cấp bởi Amazon. Regions and Availability Zones C...
bqthanh viết 1 năm trước
20 0
White
7 1
Tổng quan ORM hay Object Relational Mapping: Là một kĩ thuật cho phép bạn truy vấn và thao tác dữ liệu trên database bằng cách sử dụng mô hình hướ...
bqthanh viết 5 tháng trước
7 1
White
2 1
Architecture Pattern Là một tập hợp các quy tắc để giải thích chúng ta có những class nào? chúng sẽ tương tác với nhau ra sao để thực hiện một hệ ...
bqthanh viết 10 tháng trước
2 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
5 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!