DNS là gì?
Giống như tiêu đề của bài viết, đầu tiên chúng ta cần trả lời câu hỏi DNS là gì?
Domain Name System hay DNS có lẽ là khái niệm không quá xa lạ với anh em kỹ thuật hay với đa phần người dùng internet yêu thích công nghệ, tuy nhiên để đúng "quy trình" thì DNS có thể hiểu là một giải pháp giúp phân giải các địa chỉ IP thô kệch của các máy chủ thành các tên miền (domain) thân thiện với người dùng hơn. Ví dụ như máy chủ google có tên miền là www.google.com, tên miền này đại diện cho địa chỉ IP máy chủ Google 172.217.18.36.
DNS chính là xương sống của internet hiện nay.
Naming Structure và các thuật ngữ
Chúng ta cùng xem qua một ví dụ về 02 trang web, một có tên miền dạng như teams.microsoft.com cho ứng dụng Teams của Microsoft và hai là trang chủ của Microsoft ở địa chỉ microsoft.com (hoặc www.microsoft.com - Cần lưu ý rằng các trang web lớn như Google hay Facebook thường sẽ điều hướng tất cả các request dạng google.com về www.google.com, tuy nhiên chúng ta sẽ bàn về vấn đề này trong một bài viết khác).
Chúng ta có thể thấy rằng 2 trang web này giống nhau ở phần phía sau microsoft.com. Điều này thể hiện cho chúng ta thấy rằng DNS đang sử dụng một cấu trúc đặt tên dạng thứ bậc (hierarchical).
Ở hình trên, chúng ta có thể hình dung được DNS sẽ gồm nhiều phần, trong đó chúng ta có thể tách ra 2 phần chính đó là domain (www.microsoft.com) và sub-domain (teams.). Người dùng có thể mua domain, sub-domain có thể được tùy ý lựa chọn bởi người dùng nhằm phục vụ các mục đích điều hướng đến các ứng dụng khác nhau tùy ý. Tuy nhiên domain và các sub-domain đi theo nó đại diện cho business của bạn, vì vậy hãy cân nhắc sử dụng hợp lý.
Bên cạnh 2 phần trên, chúng ta có thể liệt kê chi tiết các thành phần của một DNS đầy đủ như sau:
- Domain Registrar (Nhà cung cấp domain): Nơi chúng ta có thể mua về một domain, có thể kể tới các nhà cung cấp như Amazon Route 53, GoDaddy,... hay tại Việt Nam có một số đơn vị như Nhân Hòa hay Mắt Bão. Tuy nhiên việc cấp và quản lý domain sẽ tùy thuộc vào mỗi quốc gia cũng như nhà cung cấp domain, vì vậy đừng quên đọc kỹ hợp đồng.
- DNS Records: Các nhà cung cấp domain sẽ cung cấp cơ chế để cấu hình các dạng bảng ghi DNS như A, AAAA, CNAME, NS,... Đây chính là nơi cho phép người dùng tùy ý cấu hình các sub-domain cho domain mình sở hữu. Các bản ghi này phục vụ việc cấu hình xem các truy cập từ sub-domain sẽ được điều hướng đến đâu tùy theo loại bản ghi.
- Zone File: Zone File là một file dạng text chứa thông tin liên kết giữa Domain và địa chỉ IP server mà nó trỏ tới. Thông thường các file này sẽ được quản lý bởi các đơn vị cấp domain, người dùng có thể thay đổi gián tiếp thông qua việc cấu hình DNS Records.
- Name Server: Khi một request được gửi đến Domain, nó sẽ không thể biết được ngay server đích cần gọi mà sẽ gọi đến một server tập trung có tên là Name Server. Server này sẽ chịu trách nhiệm phân giải domain được gửi và trả về địa chỉ IP của server đích. Từ đó Client mới có thể biết được IP mà nó cần gọi.
- Top Level Domain (TLD): Thông thường, chúng ta chỉ có thể thấy các domain có đuôi dạng .com, .us, .in, .gov, .org,... thay vì .motconvit hay .123456. Điều này xảy ra là vì các phần "đuôi" này bị giới hạn bởi các nhà cung cấp và nó được chỉ định để giúp người dùng có thể "phần nào" đoán được mục đích hay xuất xứ của trang web. Ví dụ như đuôi .tech có thể hiểu là trang web này có liên quan đến công nghệ hay các trang có đuôi .gov thì thường liên quan đến chính phủ.
- Second Level Domain (SLD): Đây là phần domain chính mà chúng ta có thể mua được, ví dụ như amazon.com, google.com,...
DNS hoạt động như thế nào?
Hình trên mô tả cách mà DNS hoạt động. Ở đây có thể mô tả một cách sơ lược quy trình này như sau:
- Bước 1: Người dùng nhập địa chỉ website mình muốn truy cập, ở đây là example.com. Web Browser đầu tiên sẽ kiểm tra trong bộ nhớ Cache của mình (hoặc của OS với một số browser hiện đại) xem nó có biết máy chủ của example.com nằm ở địa chỉ IP bao nhiêu không. Nếu có, nó sẽ gọi trực tiếp đến Web Server, quá trình hỏi đáp kết thúc.
- Bước 2: Nếu trong bước 1 không thể tìm kiếm được địa chỉ IP của máy chủ web example.com, Browser sẽ cần hỏi đến các DNS Server. Ở đây tùy thuộc vào việc thiết bị đang nằm trong mạng nội bộ hay internet, các máy chủ DNS có thể khác nhau. Các DNS Server này tìm kiếm trong bộ nhớ Cache của chúng, nếu có sẽ phản hồi lại cho Web Browser. Web Browser sẽ sử dụng IP nhận được để tiếp tục làm việc với máy chủ web example.com.
Một số DNS Server Public thường dùng có thể kể tới Google - 8.8.8.8 hoặc 8.8.4.4, Cloudflare - 1.1.1.1 hoặc 1.0.0.1 hay tại Việt Nam có Viettel - 203.113.131.1 hoặc 203.113.131.2 hay các DNS Server khác của VNPT, FPT...
- Bước 3: Trong trường hợp các DNS Server không tìm được địa chỉ IP của máy chủ example.com, chúng sẽ đi hỏi lần lượt các máy chủ DNS được quản lý bởi Internet Corporation for Assigned Names and Numbers (ICANN) - Một tổ chức phi lợi nhuận chịu trách nhiệm cho việc bảo trì, điều phối các không gian tên trên internet. Tổ chức này sẽ cho browser biết xem cần gọi đến đâu tiếp theo đối với TLD .com của domain example.com (.com NS 1.2.3.4)
- Bước 4: ICANN sẽ gọi đến địa chỉ nhận được từ ICANN cho đuôi .com (NS 1.2.3.4), Internet Assigned Numbers Authority (IANA) - Một nhánh của ICANN sẽ được hỏi. Tổ chức này chịu trách nhiệm quản lý, giám sát việc phân bổ địa chỉ IP, các hoạt động định tuyến cũng như hệ thống tên miền trên toàn cầu sẽ cho chúng ta biết xem domain example.com này được cấp bởi đơn vị - Domain Registrar nào (example.com NS 5.6.7.8).
- Bước 5: Sau khi nhận được kết quả từ IANA, chúng ta có thể gọi đến trực tiếp đơn vị cấp domain example.com, đây chính là nơi sẽ trả lời cho câu hỏi xuyên suốt "Địa chỉ IP của máy chủ web example.com nằm ở đâu?". Quá trình này cuối cùng cũng sẽ kết thúc tại đây.
Ở phần này, chúng ta đã tìm hiểu sơ qua về Domain Name System hay DNS. Trong các phần tiếp theo, chúng ta sẽ tìm hiểu về dịch vụ DNS của AWS - Route 53.