Bạn không cần tài khoản thật để biết kill switch có giữ được hay không, vì thứ bị đặt vào vòng nguy hiểm chính là tài khoản. Phép kiểm tra tạo ra một khoảng ngắn mà lưu lượng có thể ra ngoài đường hầm hoặc không, nên vật mang phải là thứ bạn dám mất. Giờ tôi làm việc này với một trang mồi và một hồ sơ trình duyệt dự phòng, và nó cho câu trả lời rõ hơn quy trình trình duyệt cộng webmail tôi từng dùng. Phần sau đi theo đúng thứ tự mà ứng dụng khách trình bày: thiết lập, đích, chuyển tiếp, rồi bằng chứng.

Phép thử trả lời đúng một câu hỏi hẹp: trong lần chuyển tiếp này, ứng dụng này có thể chạm tới mạng bên ngoài đường hầm không? Nó không nói gì về việc phần còn lại của chính sách có hợp lý hay không. Giữ phạm vi nhỏ như vậy thì kết quả mới đáng ghi lại.

Tìm công tắc và phạm vi của nó trong ứng dụng khách

Mở ứng dụng khách và tìm thiết lập chặn trước khi thay đổi bất kỳ trạng thái mạng nào. Các hãng gọi tên khác nhau: kill switch, chế độ khóa, khóa mạng, chặn lưu lượng ngoài đường hầm. Nhãn cho bạn biết ít hơn những tùy chọn bên trong nó. Điều quan trọng là việc chặn áp dụng luôn luôn hay chỉ khi ứng dụng cho rằng đường hầm vừa hỏng, và nó bao phủ mọi ứng dụng hay một danh sách được chọn.

Sau đó liệt kê những chuyển tiếp mà ứng dụng khách thực sự thực hiện được. Ngắt kết nối do người dùng khởi phát, thoát ứng dụng và mất liên lạc với máy chủ là ba đường mã khác nhau ở hầu hết ứng dụng khách, và chúng không dùng chung một chính sách chặn. Một số gỡ chặn khi ứng dụng thoát. Số khác để nguyên các quy tắc lọc cho tới khi có thứ gì đó xóa chúng. Hãy đọc tài liệu thiết lập của hãng cho bản bạn chạy thay vì phỏng đoán, rồi ghi lại bạn đang thử cái nào trong ba trường hợp.

Cũng nên ghi lại hồ sơ: giao thức, các họ địa chỉ, và liệu chia đường hầm có bật hay không. Tuyên bố phủ toàn thiết bị là vô nghĩa nếu hồ sơ cố ý loại trừ vài ứng dụng, và phần loại trừ do bạn cấu hình không phải là rò rỉ. Tài liệu thiết lập của OpenVPN Connect là kiểu trang nêu rõ công tắc nào đổi hành vi nào, dù nhãn khác nhau tùy ứng dụng khách.

Chọn một đích mồi cũng hoạt động khi không có đường hầm

Trang mồi cần hai thuộc tính, và bỏ qua một trong hai sẽ cho kết quả không đọc được. Nó phải truy cập trực tiếp được khi đường hầm xuống và chặn đang tắt, nếu không thì việc nó thôi trả lời có thể chỉ có nghĩa là máy chủ đã biến mất. Và nó không được cần đăng nhập, cookie hay thanh toán, để một lần rò rỉ chỉ tốn một dòng log thay vì một phiên.

Một trang tĩnh trên máy chủ bạn kiểm soát là lựa chọn sạch nhất. Một máy ảo dự phòng chạy HTTP server thường cũng gần tốt như vậy, và một trang kiểm tra kết nối công khai cũng dùng được nếu bạn chấp nhận rằng tính sẵn sàng của nó nằm ngoài tầm kiểm soát của bạn. Ghi lại địa chỉ, cổng, họ địa chỉ và liệu yêu cầu có cần phân giải tên hay không, vì mỗi thứ đó đều thành biến bạn có thể phải tách ra sau này.

Thiết lập đường cơ sở trước khi chạm vào công tắc. Khi đường hầm hoạt động, trang mồi phải trả lời qua đường hầm, điều đó chứng minh tuyến theo chính sách hoạt động. Khi đường hầm xuống và chặn tắt, nó phải trả lời trực tiếp, điều đó chứng minh đích còn sống. Chỉ khi đó, một lần thất bại trong trạng thái bị chặn mới cho bạn biết điều gì.

Chạy các chuyển tiếp theo một thứ tự cố định

Hãy làm từng chuyển tiếp một và cho mỗi cái vài giây để ổn định, vì ứng dụng khách thường phá và dựng lại quy tắc trong khoảng đó. Chạy cùng một phép kiểm tra ngắn mỗi lần giúp các quan sát so sánh được với nhau:

curl -sS -o /dev/null -w 'http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_exit=$?"
dig +short decoy.example
curl -6 -sS -o /dev/null -w 'v6_http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_v6_exit=$?"
TransitionExpected with the block onFailure signature
Manual disconnectDecoy stops answering within secondsDecoy still returns 200
Server or path failureBlocked, with no exemption for the old endpointDirect access during the gap
Quit the appClient-dependent; record what happensBlock disappears with the process
Wi-Fi to EthernetBlock holds until the tunnel returnsTraffic flows mid-change

Dòng thoát ứng dụng đáng được chạy riêng kể cả khi bạn không bao giờ đóng ứng dụng trong dùng thường ngày. Nếu chặn được gỡ khi thoát, một lần sập hay cập nhật cưỡng bức mang lại đúng mức phơi nhiễm đó, và đó là sự thật về triển khai chứ không phải về sự kiên nhẫn của bạn. Trên Windows, các đầu dò tương đương là Resolve-DnsName decoy.example và curl.exe -s -o NUL -w "%{http_code}" http://decoy.example/.

Tách biệt chặn với resolver hỏng

Một trang không tải được có nhiều nguyên nhân, và chỉ một trong số đó là công tắc đang làm việc. Nếu tên không phân giải được, bạn mới biết DNS bị chặn hoặc hỏng, chứ không phải đường dữ liệu bị chặn. Hãy dò cả một địa chỉ literal, để câu trả lời không phụ thuộc vào phân giải.

Mã thoát của curl phân biệt các trường hợp đó. 6 là lỗi phân giải tên, 7 nghĩa là kết nối bị từ chối, 28 là hết thời gian. Tuyến bị chặn thường hiện ra như hết thời gian hoặc bị từ chối với một địa chỉ literal, còn chặn chỉ DNS để lại 6 và giấu mọi thứ khác. Trang đã cache hay captive portal đánh lừa mắt, nên bằng chứng là mã thoát chứ không phải màn hình.

Lặp lại phép dò trên IPv6 bằng một địa chỉ literal. Chặn phủ IPv4 mà bỏ qua IPv6 đủ phổ biến để xứng đáng có một dòng riêng trong ghi chú, và ứng dụng khách tắt IPv6 ngoài đường hầm thì nên thất bại sạch sẽ trên cả hai họ.

Ghi lại phạm vi mà kết quả bao phủ

Khi đường hầm trở lại, hãy xác nhận phục hồi bằng việc trang mồi trả lời qua đường hầm, resolver trả về câu trả lời và chính sách vẫn ở chỗ bạn để lại. Sau đó hoàn tác các thử nghiệm. Một quy tắc tường lửa tạm, một tuyến debug hay một hồ sơ thử để lại sẽ làm rối lần chạy sau và có thể sống lâu hơn ứng dụng.

Một lần chạy chỉ bao phủ một bản ứng dụng khách, một hồ sơ, một chuyển tiếp và một họ địa chỉ. Hãy ghi bốn thứ đó cùng kết quả:

  • Bản ứng dụng khách và nền tảng, và liệu thiết lập là theo hồ sơ hay toàn cục.
  • Hồ sơ, giao thức và mọi loại trừ chia đường hầm.
  • Chuyển tiếp đã thử, và cách bạn kích hoạt nó.
  • Các họ địa chỉ và DNS, kèm mã thoát curl cho trạng thái bị chặn và không bị chặn.

Nếu bất kỳ dòng nào còn trống, phép thử chưa xong. Chuyển vùng nghĩa là phải lặp lại dòng thay đổi mạng. Khởi động lại không giám sát nghĩa là kiểm tra xem các quy tắc có trở lại hay không, và đó là câu hỏi về thứ tự phục hồi chứ không phải về công tắc. Chạy lại trình tự sau khi ứng dụng khách cập nhật, vì các công tắc hiếm khi đổi trong khi hành vi phía sau chúng thì đổi. Giữ trang mồi lại: không có gì phải luân chuyển, và lần kiểm tra sau chỉ mất năm phút.

Bài viết liên quan