Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Trình phân giải DNS

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Mô-đun DNS Resolver cung cấp khả năng bảo vệ người dùng đối với các cuộc tấn công đánh chặn DNS và cập nhật cấu hình cũng như cải thiện hiệu suất mạng cho các độ phân giải DNS. Mô-đun chứa mã triển khai trình phân giải gốc DNS, dịch các tên như www.google.com thành địa chỉ IP chẳng hạn như 2001: db8 :: 1 . Trình phân giải sơ khai DNS sẽ hỗ trợ các phần tử API Java như InetAddress # getAllByNameNetwork # getAllByName , cũng như các chức năng mạng gốc , đồng thời triển khai gửi và nhận các truy vấn DNS và lưu vào bộ nhớ đệm kết quả.

Những thay đổi trong Android 10

Trên các thiết bị chạy Android 9 trở xuống, mã trình phân giải DNS được trải rộng trên Bionic và netd . Tra cứu DNS được tập trung trong daemon netd để cho phép lưu vào bộ nhớ đệm trên toàn hệ thống, trong khi các ứng dụng gọi các hàm (chẳng hạn như getaddrinfo ) trong Bionic. Truy vấn được gửi qua socket UNIX tới /dev/socket/dnsproxyd tới netd daemon, trình nền này sẽ phân tích cú pháp yêu cầu và gọi lại getaddrinfo để đưa ra tra cứu DNS, sau đó lưu kết quả vào bộ nhớ cache để các ứng dụng khác có thể sử dụng chúng. Việc triển khai trình phân giải DNS chủ yếu được chứa trong bionic/libc/dns/ và một phần trong system/netd/server/dns .

Android 10 di chuyển mã của trình phân giải DNS sang system/netd/resolv, chuyển nó thành C ++, sau đó hiện đại hóa và cấu trúc lại mã. Mã trong Bionic tiếp tục tồn tại vì lý do tương thích với ứng dụng, nhưng không còn được hệ thống gọi nữa. Các đường dẫn nguồn này bị ảnh hưởng bởi việc tái cấu trúc:

  • bionic/libc/dns
  • system/netd/client
  • system/netd/server/dns
  • system/netd/server/DnsProxyListener
  • system/netd/server/ResolverController
  • system/netd/resolv

Định dạng và phụ thuộc

Mô-đun Trình phân giải DNS được phân phối dưới dạng tệp APEX và được liên kết động bởi netd ; tuy nhiên, netd không phải là phần phụ thuộc vì mô-đun phục vụ trực tiếp socket /dev/socket/dnsproxyd . Điểm cuối Binder cho cấu hình trình phân giải đã được chuyển từ netd sang trình phân giải, có nghĩa là dịch vụ hệ thống có thể gọi trực tiếp vào mô-đun trình phân giải mà không cần thông qua netd .

Mô-đun DNS Resolver phụ thuộc vào libc (Bionic) và liên kết tĩnh các phần phụ thuộc của nó; không có thư viện khác được yêu cầu.

độ phân giải .local mDNS

Bắt đầu từ tháng 11 năm 2021, trình phân giải Android hỗ trợ độ phân giải .local mDNS, thực hiện "5.1 Truy vấn DNS đa hướng One-Shot" trong RFC 6762 để gửi các truy vấn DNS tiêu chuẩn một cách mù quáng tới 224.0.0.251:5353 hoặc [FF02 :: FB]: 5353. Độ phân giải mDNS được hỗ trợ một cách minh bạch bằng cách gọi getaddrinfo() với tên máy chủ kết thúc bằng *.local .

mDNS .local phân giải tăng cường chức năng hiện có của getaddrinfo() để lấy địa chỉ. Nếu một thiết bị hỗ trợ độ phân giải .local mDNS, thì API getaddrinfo() sẽ gửi các truy vấn mDNS tới 224.0.0.251:5353 hoặc [FF02 :: FB]: 5353 và trả về các địa chỉ cục bộ. Nếu một thiết bị không hỗ trợ độ phân giải .local mDNS, thì phương thức API getaddrinfo() sẽ gửi một truy vấn DNS đến máy chủ DNS.

Mã nằm trong AOSP, nằm trong packages/modules/DnsResolver . Người dùng có thể giữ thiết kế mDNS hiện tại của họ để lấy địa chỉ hoặc sử dụng getaddrinfo() để thay thế. Hoạt động của tính năng này giống như một truy vấn DNS thông thường được gửi đến các địa chỉ multicast mDNS. Tính năng này không ảnh hưởng đến tình trạng hệ thống.

Người dùng có thể sử dụng lệnh adb shell ping6 HOSTNAME .local , trong đó HOSTNAME là tên máy chủ của thiết bị đích trên mạng LAN, ví dụ: adb shell ping6 ipad.local .

VPN và kết nối dữ liệu di động bị loại trừ khỏi độ phân giải .local.