Một mục trong tệp hosts và một bộ lọc trên router chặn cùng một trang vì những lý do hoàn toàn khác nhau, vì thế cái này vẫn hoạt động dưới VPN còn cái kia lặng lẽ dừng lại. Tệp hosts trả lời một tên trước khi bất kỳ gói tin nào rời khỏi máy. Bộ lọc trên router kiểm tra lưu lượng đi qua nó. Đặt một đường hầm giữa hai điểm đó và cái thứ hai mất tầm nhìn trong khi cái thứ nhất không nhận ra gì.

Tên được phân giải ở đâu quyết định tất cả

Mỗi lần chặn đều bắt đầu bằng một câu hỏi: ai biến tên thành địa chỉ? Trên một máy để bàn thông thường, câu trả lời do bộ phân giải của hệ thống đưa ra, nó đi theo thứ tự đã cấu hình và thường đọc tệp hosts trước khi hỏi DNS. Trên một mạng đã bị lọc, router có thể là bên trả lời, và nó chỉ thấy truy vấn nếu máy khách gửi truy vấn qua nó mà không có bảo vệ. Thay đổi đường đi là bạn thay đổi ai được phép trả lời.

VPN làm hai việc cùng lúc ở đây: nó di chuyển tuyến mặc định, và nó có thể đẩy máy chủ DNS của riêng mình. Bất kỳ thay đổi nào trong hai thay đổi đó cũng đủ để đưa việc phân giải tên ra khỏi thiết bị đang áp đặt việc chặn.

Đó là cơ chế đằng sau lời phàn nàn quen thuộc rằng bộ lọc hoạt động cho đến khi VPN kết nối.

Một mục hosts trả lời trước khi đường hầm tồn tại

Một dòng như 127.0.0.1 www.example.com được bộ phân giải cục bộ đọc, nên câu trả lời được tạo ra trên máy mà không cần mạng. Kết nối đường hầm, đổi máy chủ DNS, đổi mạng: mục đó vẫn trả về loopback. Vì thế chặn bằng hosts là cách duy nhất trong hai cách không bị ảnh hưởng bởi nơi VPN kết thúc.

Điểm mù của nó cũng mang tính cục bộ như vậy. Một ứng dụng mang theo bộ phân giải riêng, nói DNS over HTTPS hoặc kết nối tới một địa chỉ nguyên văn sẽ không bao giờ hỏi hệ thống, nên mục đó không được xét đến. Một địa chỉ được lưu trong bộ nhớ đệm bên trong tiến trình đang chạy cũng có tác dụng tương tự cho đến khi tiến trình đó khởi động lại.

Xác nhận câu trả lời bằng getent ahosts trên Linux hoặc Resolve-DnsName trên Windows thay vì tin vào một thẻ trình duyệt.

Bộ lọc trên router chỉ thấy những gì đi qua nó

Bộ lọc nội dung hoặc URL trên router gia đình khớp các tên và yêu cầu đi qua nó ở dạng đọc được. Khi máy khách dựng một đường hầm mã hóa tới một máy chủ ở nơi khác, router chỉ thấy một luồng duy nhất tới máy chủ đó và không thấy gì bên trong. Bộ lọc không có tên nào để khớp, nên nó cho lưu lượng đi qua, và điều đó trông như bộ lọc đã hỏng, chứ không phải như nó bị vượt qua.

Cấu trúc hoạt động được là cấu trúc còn lại: router tự giữ đường hầm, giải mã ở điểm cuối và áp dụng bộ lọc tại đó. Trong thiết kế đó bộ lọc nằm ở nơi văn bản rõ xuất hiện.

Nếu đường hầm kết thúc trên máy tính xách tay, router theo định nghĩa nằm ngoài đường đi được bảo vệ, bất kể quy tắc được viết thế nào.

Bốn điểm thực thi và mỗi điểm bỏ sót điều gì

Bốn nơi có thể thực thi việc chặn, và mỗi nơi hỏng theo một cách khác nhau. Hãy đọc danh sách này như một bản đồ phủ sóng, không phải một bảng xếp hạng.

  • Tệp hosts hoặc bộ phân giải cục bộ: hoạt động ngoại tuyến và dưới mọi đường hầm, nhưng bị vượt qua bởi bộ phân giải đi kèm hoặc địa chỉ được viết cứng.
  • Lọc DNS tại cổng VPN: bao phủ những máy khách dùng bộ phân giải được đẩy xuống, và bỏ sót những máy khách vượt qua DNS.
  • Quy tắc ra của cổng theo địa chỉ hoặc SNI: độc lập với DNS của máy khách, nhưng mù trước những tên nó không đọc được và những địa chỉ nó chưa học.
  • Chính sách trình duyệt hoặc thiết bị được quản lý: mạnh trên phần cứng được quản lý, vắng mặt trên thiết bị cá nhân.

Không cái nào trong số này là ranh giới bảo mật chống lại một người dùng quyết tâm trên một thiết bị không được quản lý. Chúng là các kiểm soát chính sách, và một mô tả trung thực nói rõ mỗi cái thực sự bao phủ lưu lượng nào.

Hãy chọn tầng phù hợp với ý định: sự tiện lợi trong nhà thuộc về thiết bị, còn một quy tắc tổ chức thuộc về cổng.

Hãy thử cả hai trạng thái trước khi nói là xong

Chạy đúng ba lệnh đó khi VPN được kết nối và khi bị ngắt: getent ahosts để xem câu trả lời của bộ phân giải, nslookup để xem truy vấn trả về gì, và curl -I tới trang để xem một kết nối còn hoàn tất hay không. Nếu lệnh đầu trả về loopback trong khi lệnh thứ ba kết nối tới địa chỉ thật, thì có gì đó đã vượt qua bộ phân giải và mục hosts không phải là kiểm soát mà bạn nghĩ.

Trên router, hãy đọc bộ đếm của bộ lọc trước và sau một yêu cầu. Một bộ đếm không bao giờ nhúc nhích nghĩa là lưu lượng chưa bao giờ tới bộ lọc, và đó là câu trả lời về định tuyến, không phải về quy tắc.

Hãy ghi lại kết quả cùng với cấu trúc, vì lần thay đổi VPN tiếp theo sẽ lại dịch chuyển đường đi.

Bài viết liên quan