Published on

DNS 102

Authors
  • avatar
    Name
    ToanNV
    Twitter

Hê nhô anh chị em, lại là mình đây. Hôm nay mình xin phép được viết về DNS - một vấn đề mình đã đề cập trong bài viết kiến trúc web 101. Trong bài viết này mình sẽ xin phép chia sẻ sâu hơn về DNS dưới góc nhìn hạn hẹp của mình.

1. DNS là gì?

Như đã đề cập trong bài viết kiến trúc web 101. DNS là viết tắt của Domain Name System, hiểu một cách đơn giản thì DNS là hệ thống giúp chuyển đổi tên miền dễ nhớ như example.com thành địa chỉ IP số như 93.184.215.14 mà các máy tính sử dụng để liên lạc với nhau. Bạn có thể nghĩ về DNS như là danh bạ điện thoại của Internet – nó giúp bạn tìm đến đúng địa chỉ mà bạn đang tìm kiếm.

2. Tại sao lại cần DNS?

Nếu bây giờ bạn muốn tìm kiếm một thứ gì đó, bạn sẽ làm gì với chiếc máy tính của mình? Có lẽ 90% các bạn sẽ truy cập vào trang google.com và gõ từ khoá mà bạn muốn tìm kiếm. Nhưng hãy tưởng tượng nếu thế giới web không có DNS, bạn sẽ phải làm gì? Vâng, bạn sẽ cần phải gõ 142.250.199.100 để truy cập vào trang tìm kiếm. Đúng vậy, bạn sẽ phải nhập địa chỉ IP của một trong nhiều server của Google để truy cập vào trang tìm kiếm.

OK, nếu bạn chỉ cần truy cập vào một trang web trong cả cuộc đời của mình, thì có lẽ sự có mặt của DNS không quá quan trọng. Nhưng tiếc thay, chúng ta cần phải truy cập vào rất nhiều trang web khác nhau. Với trí nhớ của chúng ta, việc nhớ hết địa chỉ IP của tất cả các trang web là điều không thể, và chúng ta cũng không thể dự đoán khi nào một trang web sẽ thay đổi IP. Đây là một ví dụ rõ ràng về lý do tại sao chúng ta cần DNS.

Và dĩ nhiên, ngoài lý do trên, còn rất nhiều lý do khác cho thấy DNS quan trọng như thế nào đối với thế giới web. DNS không chỉ giúp chúng ta dễ dàng truy cập vào các trang web bằng các tên miền dễ nhớ, mà còn hỗ trợ trong việc quản lý và duy trì các dịch vụ trực tuyến, đảm bảo rằng chúng ta luôn kết nối với đúng địa chỉ và dịch vụ mà chúng ta mong muốn. Có thể nói, DNS chính là một trong những thành phần thiết yếu giúp cho Internet hoạt động một cách trơn tru và hiệu quả.

3. DNS hoạt động như thế nào?

Khi bạn nhập một tên miền vào trình duyệt web, chẳng hạn như www.example.com, hệ thống DNS sẽ thực hiện các bước sau để chuyển đổi tên miền thành địa chỉ IP:

  1. Kiểm tra bộ nhớ cache trên browser: Trước tiên, trình duyệt sẽ kiểm tra bộ nhớ cache của nó để xem địa chỉ IP của tên miền www.example.com có tồn tại hay không và liệu nó còn hiệu lực (TTL - Time To Live) không. Nếu có và còn hiệu lực, trình duyệt sẽ sử dụng địa chỉ IP đó để kết nối. Nếu không có hoặc hết hạn, trình duyệt sẽ tiếp tục với bước tiếp theo.

  2. Gửi Truy Vấn tới DNS từ Browser: Trình duyệt gửi truy vấn DNS đến các DNS của ISP hoặc DNS được cấu hình trên máy tính của bạn. Truy vấn này yêu cầu tìm kiếm địa chỉ IP của trang web www.example.com.

  3. Kiểm tra bộ nhớ đệm của DNS server: Khi DNS nhận được yêu cầu sẽ kiểm tra bộ nhớ cache của nó để xem liệu tên miền www.example.com đã được lưu trữ hay chưa. Nếu có bản ghi trong bộ nhớ cache, DNS sẽ trả kết quả ngay lập tức.

  4. Truy Vấn đến Root Name Server: Nếu bản ghi không có trong bộ nhớ cache, DNS sẽ gửi một truy vấn đến một trong các Root Name Server. Các server này không biết địa chỉ IP cụ thể của các trang web, mà nó sẽ trả về địa chỉ IP của các server quản lý của các tên miền (Top Level Domain(TLD) Name server). Mỗi tên miền khác nhau sẽ được quản lý ở một TLD Name server khác nhau.

  5. Truy vấn đến TLD Name server: Trong ví dụ này, Root Name server sẽ trả địa chỉ IP của TLD Name server của tên miền .com. Khi nhận được thông tin này, DNS server sẽ gửi truy vấn đến TLD Name server để tìm kiếm thông tin về DNS server đang quản lý tên miền example.com, người ta gọi là Authoritative Name Server.

  6. Truy vấn đến Authoritative Name Server: sau khi nhận được thông tin IP của Authoritative Name Server từ phía TLD Name Server, DNS server sẽ truy vấn đến đó để yêu cầu về địa chỉ IP của trang web example.com.

  7. Trả về kết quả cho trình duyệt: Sau khi nhận được thông tin IP của tên miền example.com từ Authoritative Name Server, DNS server sẽ trả về cho trình duyệt và lưu chúng vào bộ nhơ cache với TTL(Time To Live). Và khi trình duyệt nhận được kết quả thì nó sẽ sử dụng địa chỉ IP đó để kết nối với web server.

Cả quả trình trên có thể được khái quát bằng sơ đồ sau.

DNS Workflow

Cách hoạt động của DNS

Điều gì xảy ra khi IP của trang web thay đổi?

Giả sử vào một ngày đẹp trời, bạn cần di chuyển server web của mình sang một server mới, và địa chỉ IP của trang web cũng cần phải thay đổi. Khi bạn cập nhật địa chỉ IP mới trong phần quản lý tên miền, DNS sẽ thực hiện các bước sau để cập nhật và thông báo cho trình duyệt biết địa chỉ IP mới:

  1. Cập nhật bản ghi DNS: Đầu tiên, bạn vào phần quản lý tên miền của mình và cập nhật bản ghi DNS với địa chỉ IP mới. Bản ghi DNS có thể là bản ghi A (Address Record) hoặc bản ghi AAAA (IPv6 Address Record), tùy thuộc vào loại địa chỉ IP mà bạn sử dụng.

  2. Cập nhật thông tin tại Master Server - Authoritative Name Server: Ở đây chúng ta cần lưu ý là Authoritative Name Server không phải chỉ có 1 server, mà nó có rất nhiều server. Và thường hoạt động theo cơ chế master/slave. Sau khi bạn cập nhật thông tin trong phần quản lý tên miền, các thay đổi sẽ được gửi đến các master server của tên miền đó. Server này sẽ lưu trữ và cập nhật thông tin mới về địa chỉ IP. Sau đó số serial trong bản ghi SOA(Start Of Authority) sẽ được tăng lên. Điều này giúp cho các slave servers sẽ nhận biết và đồng bộ dữ liệu mới.

  3. Cập nhật thông tin tại Slave Server: Các slave servers sẽ tự động nhận các thay đổi từ master server. Khi đó các slave servers sẽ tải xuống bản sao dữ liệu từ master server và cập nhật các bản ghi DNS của mình.

  4. TTL và bộ nhớ cache: Các bản ghi DNS được lưu trữ trong bộ nhớ đệm của DNS và trình duyệt có thời gian sống (TTL - Time To Live). Khi TTL hết hạn, DNS và trình duyệt sẽ xóa bản ghi cũ và yêu cầu thông tin mới từ Authoritative Name Server. Trong khoảng thời gian TTL, các yêu cầu vẫn sử dụng địa chỉ IP cũ, nên có thể xảy ra tình trạng một số người dùng tiếp tục kết nối đến server cũ cho đến khi TTL hết hạn.

  5. Cập nhật toàn cầu: Sau khi các DNS và trình duyệt nhận được thông tin cập nhật, địa chỉ IP mới sẽ được phân phối trên toàn cầu. Lúc này, các trình duyệt sẽ bắt đầu sử dụng địa chỉ IP mới để kết nối với server web của bạn.

Tóm lại, khi địa chỉ IP của trang web thay đổi, DNS cần thời gian để cập nhật và phân phối thông tin mới. Thời gian này phụ thuộc vào TTL và khả năng của các DNS trong việc đồng bộ hóa thông tin. Điều này đảm bảo rằng người dùng trên toàn thế giới sẽ sớm được kết nối với địa chỉ IP mới của trang web, mà không biết rằng trang web của bạn vừa mới chuyển nhà.

Một số hình thức tấn công DNS

  1. DNS Cache Poisoning là một hình thức tấn công mà kẻ tấn công chèn các bản ghi DNS giả mạo vào bộ nhớ cache của DNS server hoặc bộ nhớ cache của người dùng cuối. Khi người dùng truy cập vào một tên miền, thay vì được đưa đến trang web chính thức, họ bị chuyển hướng đến một trang web lừa đảo do kẻ tấn công kiểm soát.

  2. DNS Hijacking là một hình thức tấn công mà kẻ tấn công chiếm quyền kiểm soát DNS của một tên miền và thay đổi các bản ghi DNS để chuyển hướng lưu lượng truy cập web đến một địa chỉ IP khác, thường là một trang web lừa đảo hoặc có chứa phần mềm độc hại.

  3. DNS Amplification Attacks là một hình thức tấn công từ chối dịch vụ (DDoS) trong đó kẻ tấn công gửi các truy vấn DNS nhỏ đến các DNS server mở, yêu cầu các phản hồi lớn, và sử dụng địa chỉ IP giả mạo của nạn nhân để nhận các phản hồi này. Kết quả là, nạn nhân bị tấn công bởi một khối lượng lớn lưu lượng truy cập không mong muốn, dẫn đến tắc nghẽn và ngừng hoạt động.

  4. DNS Spoofing (DNS Phishing) xảy ra khi kẻ tấn công gửi các bản ghi DNS giả mạo đến DNS server hoặc máy tính của người dùng cuối, nhằm mục đích lừa đảo, chuyển hướng họ đến các trang web độc hại.

Trên đây là một số hình thức tấn công phổ biến mà mình biết về DNS. Tất nhiên, có nhiều biện pháp để phòng tránh và đối phó với những cuộc tấn công này, nhưng mình sẽ để dành chủ đề này cho lần khác nhé! 😄

Kết luận

DNS đóng vai trò cực kỳ quan trọng trong việc duy trì tính liên tục và hiệu quả của Internet. Khi địa chỉ IP của một trang web thay đổi, hệ thống DNS giúp đảm bảo rằng người dùng vẫn có thể truy cập vào trang web đó mà không gặp phải gián đoạn. Mặc dù quá trình cập nhật có thể mất một chút thời gian do việc đồng bộ hóa giữa các DNS và việc hết hạn của các bản ghi cũ trong bộ nhớ đệm, nhưng DNS giúp cho việc này trở nên liền mạch đối với người dùng cuối.

Nhờ vào DNS, chúng ta không cần phải nhớ những dãy số phức tạp mà vẫn có thể dễ dàng truy cập vào các trang web bằng những tên miền thân thiện và dễ nhớ. Đây chính là một trong những yếu tố nền tảng làm nên sự tiện lợi và khả năng truy cập toàn cầu của Internet như chúng ta biết ngày nay.