Tra cứu DNS (DNS lookup) là gì?
Tra cứu Hệ thống Tên miền (Domain Name System Lookup), viết tắt DNS, là điều xảy ra trong khoảng thời gian giữa khi ai đó gõ URL vào thanh tìm kiếm và trang web tải xong. Về mặt kỹ thuật, đó là quá trình dịch URL (như www.google.com) thành địa chỉ IP.
Địa chỉ IP giống như địa chỉ nhà bạn. Cách bạn dùng địa chỉ để gửi thư, máy tính dùng địa chỉ IP để gửi dữ liệu đến nơi cụ thể. Vì địa chỉ IP khó nhớ (chúng là chuỗi số dài), máy tính dùng DNS để dịch giữa địa chỉ IP và URL (dễ nhớ hơn nhiều). Mọi thiết bị kết nối Internet đều có địa chỉ IP.
DNS hoạt động như thế nào?
Với quy mô Internet, máy tính không thể lưu trữ tất cả địa chỉ IP trong bộ nhớ. Thay vào đó, gõ www.google.com vào trình duyệt nói với máy tính tra cứu địa chỉ IP cho trang web.

Trước tiên, máy tính kiểm tra bộ nhớ cục bộ, gọi là cache. Đây là nơi máy tính lưu địa chỉ IP của các trang web truy cập gần đây nhất, để tải nhanh hơn mà không phải tra cứu. Tuy nhiên, vì chỉ có vài trang gần đây ở đây, khả năng máy tính không tìm thấy địa chỉ IP.
Bước 1 (các bước tương ứng với số trong sơ đồ trên): Tiếp theo, máy tính sẽ hỏi máy chủ tên đệ quy (recursive nameserver) cục bộ của ISP. ISP là nhà cung cấp dịch vụ Internet — như Time Warner Cable, Spectrum, Verizon, v.v. Máy chủ tên (nameserver) nghe phức tạp, nhưng chỉ là phần mềm máy chủ được thiết kế để trả lời yêu cầu DNS (như "địa chỉ IP của www.google.com là gì?").
Bất kỳ nameserver nào cũng có thể trả lời câu hỏi này, bằng cách phản hồi với địa chỉ IP (nếu biết), hoặc phản hồi không biết và bảo máy chủ yêu cầu hỏi máy chủ khác. Nameserver đệ quy khác vì nếu nó không biết câu trả lời, nó sẽ làm việc tìm câu trả lời, thay vì chỉ chuyển tiếp truy vấn. Không phải nameserver nào cũng là đệ quy.
Bước 2: Nameserver đệ quy sẽ kiểm tra cache của nó trước. Nếu địa chỉ IP không ở đó, nó sẽ hỏi nameserver gốc (root nameserver) (nameserver gốc không biết địa chỉ IP, nhưng có thể đọc yêu cầu và nói cho nameserver đệ quy biết đi đâu tiếp theo). Tất cả nameserver đệ quy đi kèm 13 địa chỉ IP của nameserver gốc được cấu hình sẵn. Nameserver đệ quy chọn một và hỏi nó cùng câu hỏi ("địa chỉ IP của www.google.com là gì?").
Bước 3: Nameserver gốc đọc tên miền cấp cao nhất (top-level domain - phần cuối yêu cầu), trong trường hợp này là .com, (www.google.com) và sẽ nói cho nameserver đệ quy hỏi Máy chủ Tên miền Cấp cao Toàn cầu (Global Top Level Domain Servers - GTLD). GTLD về cơ bản là danh sách tham chiếu cho mỗi loại tên miền — .com, .net, .edu, v.v. Mặc dù chúng không biết địa chỉ IP cho trang web, chúng biết nameserver nào sẽ có thông tin đó.
Bước 4: Nameserver đệ quy hỏi nameserver GTLD địa chỉ IP của www.google.com.
Bước 5: Nameserver GTLD sẽ đọc phần tiếp theo của yêu cầu, đọc từ phải sang trái (trong trường hợp này là 'google' của www.google.com) và sẽ gửi tin nhắn với nameserver có thẩm quyền (authoritative nameserver) để liên hệ. Nameserver có thẩm quyền là nameserver chịu trách nhiệm cho tên miền (là nguồn thông tin chính).
Bước 6: Nameserver đệ quy sẽ hỏi nameserver có thẩm quyền cùng câu hỏi ("địa chỉ IP của www.google.com là gì?"). Về mặt kỹ thuật, máy chủ đang hỏi bản ghi Địa chỉ (Address Record - A), đó là cách máy chủ gọi địa chỉ IP.
Bước 7: Máy chủ này có câu trả lời! Nó sẽ truyền địa chỉ IP về cho nameserver đệ quy, được gắn cờ để nameserver đệ quy biết câu trả lời có thẩm quyền. Nameserver đệ quy lưu địa chỉ IP vào cache của nó phòng khi ai đó cố truy cập cùng trang web sớm. Mỗi mục trong cache được gắn thẻ "time to live" (thời gian sống) báo cho máy chủ biết giữ thông tin bao lâu trước khi xóa.
Bước 8: Nameserver đệ quy nói cho máy tính của bạn địa chỉ IP là gì (lần này không gắn cờ thẩm quyền, vì nó không phải nguồn thông tin chính. Nó chỉ truyền thông tin).
Bước 9: Máy tính của bạn gửi yêu cầu www.google.com đến địa chỉ IP vừa nhận.
Bước 10: Máy chủ web tại địa chỉ này trả về trang chủ Google và trang tải xong.
Toàn bộ quá trình này chỉ mất vài mili giây và xảy ra hàng nghìn tỷ lần mỗi ngày.
DNS ảnh hưởng đến người dùng cuối như thế nào?
Vì DNS là phần không thể thiếu để Internet hoạt động, nó là mục tiêu nổi bật cho hacker. Vấn đề cốt lõi của DNS giống như hầu hết vấn đề an ninh chúng ta gặp với công nghệ ngày nay. Internet, và nhiều công nghệ chúng ta dùng, được thiết kế cho một nhóm nhỏ nhà nghiên cứu và theo thời gian mở rộng thành hệ thống toàn thế giới dùng. DNS (và HTTP, và hầu hết giao thức chúng ta dùng) không được thiết kế với an ninh trong tâm trí. Giờ chúng ta phải thêm các bản vá cho các vấn đề an ninh. Đáng tiếc, an ninh gắn thêm vào cuối không hiệu quả như an ninh được nạp vào từ đầu phát triển.
Một vấn đề này đặt ra cho DNS là không có bất kỳ xác minh nào về tính xác thực của nameserver khi nhận phản hồi. Do đó hacker có thể gửi phản hồi độc hại đến truy vấn DNS của máy tính và lừa máy tính nghĩ rằng đó là phản hồi thật từ nameserver DNS. Nói cách khác, khi máy tính hỏi, "địa chỉ IP của www.chase.com là gì?" hacker sẽ phản hồi (trước khi nameserver DNS kịp) với địa chỉ IP cho trang độc hại của hacker. Sau đó khi trang tải, nó trông giống như chase.com, nhưng thực tế do hacker kiểm soát.
Điều này rất giống lừa đảo trực tuyến (phishing) — ngoại trừ người dùng không bị lừa nhấp vào liên kết xấu, mà các trang web họ cố truy cập bị chuyển hướng đến trang xấu qua tra cứu DNS (nguy hiểm hơn nhiều, vì khó ngăn chặn loại tấn công này hơn). Điều này yêu cầu người dùng phải cảnh giác, nhận ra trang đang giả mạo trang thật (có thể liên kết trông không đúng, hoặc lỗi chính tả, logo kém). Tuy nhiên, điều này rất khó và dựa vào người dùng phải khá rành kỹ thuật.
Năm 2016, một cuộc tấn công DNS làm sập phần lớn Internet cho hầu hết bờ Đông Hoa Kỳ gần một ngày đầy đủ. Trong trường hợp đó, ngừng hoạt động do tấn công DDoS. Tấn công DDoS (Distributed Denial of Service - Phân tán từ chối dịch vụ) là hàng nghìn máy tính trên Internet tấn công một hệ thống cùng lúc. Thường đó là máy bị nhiễm phần mềm độc hại mà chủ không hay, và một hacker hoặc nhóm hacker điều khiển tất cả. Những máy này gọi là 'botnet' khi dùng cùng nhau.
Botnet gửi yêu cầu DNS đến máy chủ nạn nhân và lượng yêu cầu gửi vượt quá khả năng xử lý, khiến máy chủ không xử lý được lưu lượng hợp pháp. Vì vậy, trong khi hacker tấn công máy chủ DNS và máy tính cố yêu cầu địa chỉ IP, máy chủ không phản hồi. Máy tính không thể truy cập các trang web máy chủ đó kiểm soát (hoặc có thẩm quyền) cho đến khi tấn công dừng.
Tấn công này có thể giảm thiểu bằng cách cấp dư thừa máy chủ để xử lý nhu cầu vượt mức hoặc có tường lửa DNS.
Cách tiếp cận rộng hơn để giải quyết nhiều vấn đề do DNS đặt ra là DNSSEC. DNSSEC củng cố xác thực bằng chữ ký số dựa trên mật mã khóa công khai. Về cơ bản, chủ sở hữu dữ liệu được yêu cầu ký số nó, để đảm bảo tình huống trên không xảy ra. Điều này cung cấp xác thực nguồn gốc dữ liệu (dữ liệu thực sự đến từ nơi resolver nghĩ) và bảo vệ toàn vẹn dữ liệu (dữ liệu không bị sửa đổi trên đường truyền).
Đáng tiếc, để sửa DNS, DNSSEC cần triển khai rộng rãi. Nó cần được bật cụ thể bởi vận hành mạng trên resolver đệ quy của họ, và bởi chủ tên miền trên nameserver có thẩm quyền. Điều này chưa xảy ra, nhưng hy vọng sẽ xảy ra khi càng nhiều người nhận ra vấn đề DNS đặt ra và vận động thay đổi.