Hết thời gian kết nối VPN: DNS, vận chuyển, thương lượng hay đăng nhập
Hết thời gian chỉ có nghĩa là một hạn chót đã qua. So sánh bốn giai đoạn, phân giải tên, vận chuyển, thương lượng và đăng nhập, để xem giai đoạn nào kết thúc sau cùng.
“Kết nối đã hết thời gian” là lỗi mơ hồ nhất mà một ứng dụng VPN có thể in ra. Nó có nghĩa là một thao tác đã trễ hạn, và mọi giai đoạn từ phân giải tên đến phản hồi đăng nhập đều có hạn. Những ứng dụng chỉ hiển thị thông báo cuối làm các giai đoạn trông giống nhau, nên người ta tăng thời gian chờ, đổi cổng và cài lại hồ sơ, theo thứ tự đó, mà không học được gì. So sánh các giai đoạn nhanh hơn: mỗi giai đoạn thất bại ở một chỗ khác nhau, và mỗi thất bại để lại một loại bằng chứng khác.
Bốn giai đoạn, bốn thất bại khác nhau
Trình tự là cố định kể cả khi ứng dụng giấu nó: tên phải được phân giải, phải thiết lập vận chuyển tới địa chỉ thu được, giao thức phải thương lượng các tham số và khóa của nó, và tài khoản phải được xác thực. Hướng dẫn khắc phục sự cố kết nối của OpenVPN đi theo cùng thứ tự cho ứng dụng của chính họ, và các ứng dụng khác theo sát. Hết thời gian ở giai đoạn hai và ở giai đoạn bốn không có gì chung ngoài từ trên màn hình.
| Stage | Looks like | What it does not prove |
|---|---|---|
| Name resolution | fails in under a second, before any contact | nothing about the server being up |
| Transport | waits the full timeout, then gives up | nothing about the VPN service behind the port |
| Negotiation | connects, then stalls at handshake | nothing about credentials |
| Login | a reply arrives and is rejected or hangs on a prompt | nothing about reachability |
Đọc nhật ký để tìm dòng cuối cùng cho thấy tiến triển, không phải dòng cuối trước lỗi. Hầu hết ứng dụng in ra thứ gì đó như địa chỉ đã phân giải, ổ cắm đã thiết lập, bắt tay đã bắt đầu hoặc yêu cầu xác thực, và giai đoạn sau dòng đó chính là giai đoạn hết thời gian.
Phân giải tên thất bại trước mọi liên hệ
Nếu điểm cuối không bao giờ phân giải được, ứng dụng không có gì để kết nối và không có công việc vận chuyển nào xảy ra. Thất bại đó thường tức thời chứ không phải hết toàn bộ thời gian, và đó là cách rẻ nhất để phân biệt với phần còn lại. Kiểm tra tên bằng trình phân giải hệ thống và bằng một trình phân giải thứ hai, rồi so sánh hai câu trả lời trước khi kết luận máy chủ đã chết.
Một địa chỉ cũ sao chép từ bài đăng diễn đàn là nguyên nhân phổ biến của hết thời gian trông như sự cố máy chủ, vì địa chỉ đó nay thuộc về thứ khác hoặc không thuộc về gì. Dùng hồ sơ hiện tại của nhà cung cấp thay vì thay thế một địa chỉ từng hoạt động. Không có phản hồi ping không phải bằng chứng theo hướng nào: nhiều điểm cuối bỏ ICMP mà vẫn phục vụ rất tốt.
Thiết lập vận chuyển chờ một gói tin sẽ không đến
Khi DNS ổn mà ứng dụng vẫn đốt hết thời gian chờ, tầng vận chuyển là nghi phạm. Trên TCP bạn có thể kiểm tra cổng trực tiếp; Test-NetConnection trên Windows hoặc nc -vz trên Linux cho biết có gì đó chấp nhận kết nối hay không, và điều đó hữu ích hơn ping. Trên UDP bạn không thể kiểm tra theo cách đó, vì ở tầng ấy không có bắt tay nào để hoàn tất, và sự bất đối xứng này gây ra nhiều kết luận sai.
Điều mà một bài kiểm tra TCP chứng minh là có hạn: một dịch vụ chấp nhận cổng 443 không nhất thiết là trình lắng nghe VPN, và một điểm cuối chỉ UDP không có cổng TCP nào để chấp nhận bất cứ thứ gì. Viết lại hồ sơ từ UDP sang TCP không tạo ra trình lắng nghe ở phía bên kia; nó chỉ đổi thứ mà ứng dụng của bạn chờ. Nếu mạng lọc giao thức, thay đổi đó tạo ra hết thời gian khác ở cùng giai đoạn.
Cổng captive đáng được kiểm tra riêng ở giai đoạn này. Cho đến khi cổng cho phép thiết bị, lưu lượng đi ra sẽ đến cổng và nỗ lực đường hầm chỉ treo ở đó. Hoàn tất cổng trong trình duyệt trước, rồi thử lại, và đừng đổi hồ sơ khi cổng còn đang chờ.
Thương lượng và đăng nhập nghĩa là máy chủ đã trả lời
Khi đường hầm đến máy chủ, ứng dụng bắt đầu bắt tay và lỗi đổi tính chất. Dừng ở đây là về tương thích chứ không phải khả năng tiếp cận: phiên bản giao thức không khớp, cài đặt mã hóa hoặc kênh dữ liệu mà bên kia không chấp nhận, hoặc hồ sơ mong một tính năng máy chủ không cung cấp. OpenVPN đã chuyển các giá trị mặc định thương lượng giữa các phiên bản chính đủ thường xuyên để một hồ sơ viết cho một thế hệ có thể đến được máy chủ mà vẫn không dựng lên.
Xác thực là giai đoạn cuối và dễ đọc sai nhất. Một lời từ chối rõ ràng là một câu trả lời, nghĩa là đường đi hoạt động và vấn đề là danh tính, chứng chỉ hoặc trạng thái tài khoản. Luồng đăng nhập một lần dựa trên trình duyệt là trường hợp thứ ba: ứng dụng chờ một hành động bạn chưa làm, hoặc một trình duyệt nó không mở được, và sẽ không có gì đến cho đến khi bạn hoàn tất bước đó.
So sánh bằng chứng trước khi đổi lần thử lại
Giữ thiết bị và hồ sơ cố định và đổi một thứ mỗi lần, bắt đầu từ mạng. Nếu cùng hồ sơ kết nối qua hotspot điện thoại và hết thời gian trên Wi-Fi khách sạn, biến số là đường đi chứ không phải máy chủ. Nếu nó thất bại ở mọi nơi, biến số là hồ sơ hoặc điểm cuối. Nếu nó chỉ thất bại vào một giờ nhất định, ghi lại dấu thời gian và so với sự kiện phía máy chủ trước khi giả định gì về tải.
Với một dịch vụ bạn quản trị, phép so sánh quyết định là lần thử có đến được hay không. Kết nối đến được trình lắng nghe rồi khựng lại thuộc giai đoạn thương lượng; cái không bao giờ xuất hiện trong tầm nhìn của trình lắng nghe là vấn đề vận chuyển hoặc phân giải, và không mức chỉnh lần thử nào di chuyển được nó. Nhật ký máy chủ cũng tách một lần đăng nhập bị từ chối khỏi một lần rơi im lặng, đó là khác biệt giữa sửa danh tính và sửa tường lửa.
Ghi lại phiên bản ứng dụng, tên hồ sơ, thời điểm thử kèm múi giờ và lỗi hữu ích đầu tiên thay vì dòng ngắt kết nối cuối cùng. Gỡ bỏ khóa và tài liệu mang thông tin đăng nhập trước khi chia sẻ đoạn trích. Sau đó thực hiện một chỉnh sửa có ý nghĩa và thử lại, vì thời hạn dài hơn chỉ giúp thao tác chậm đã được ghi nhận và không làm gì cho địa chỉ sai hoặc cổng bị chặn.