Cổng 443 trả lời, SSTP vẫn thất bại: giai đoạn nào đã hỏng?
Có thứ gì đó đã chấp nhận kết nối và đường hầm vẫn không được dựng. Hãy tách riêng vận chuyển, chứng chỉ, đàm phán SSTP và xác thực PPP.
Hoàn tất bắt tay TCP tới cổng 443 trong khi đường hầm không bao giờ được dựng chứng minh một điều, và đó là điều nhỏ. Có thứ gì đó đang lắng nghe và sẵn sàng chấp nhận kết nối tại địa chỉ đó. Nó không nhận diện dịch vụ, chứng chỉ sẽ được trình bày, hay điều gì xảy ra sau những byte đầu tiên.
Bốn giai đoạn nằm giữa bắt tay đó và một đường hầm hoạt động, và mỗi giai đoạn tạo ra một lỗi khác nhau.
Một cổng mở chỉ mô tả một lớp
Chấp nhận kết nối TCP nghĩa là một tiến trình sở hữu socket và đường dẫn cho phép bắt tay. Nó không nói gì về việc tiến trình đó có phải máy chủ SSTP hay không, có chứng chỉ hợp lệ cho tên trong hồ sơ của bạn hay không, hoặc có cấp quyền cho tài khoản của bạn hay không. Một máy chủ web tại cùng địa chỉ trả lời bắt tay hoàn hảo rồi trả lời yêu cầu SSTP của bạn bằng lỗi HTTP. Mọi thứ phía trên bắt tay đó vẫn chưa được kiểm tra.
Hãy coi kiểm tra cổng là bộ lọc rẻ nhất có thể chứ không phải phán quyết. Giá trị của nó là loại bỏ cả một nhóm lỗi, không phải xác nhận mọi thứ phía trên.
Nhầm lẫn hai điều này là lý do người ta cài lại ứng dụng khách sau một bài kiểm tra chưa bao giờ xem xét vấn đề thực sự của ứng dụng khách.
Tách bốn giai đoạn bằng bằng chứng
Các giai đoạn là khả năng tiếp cận vận chuyển, xác thực TLS, trao đổi SSTP qua HTTPS, và xác thực PPP bên trong đường hầm. Một đường đi qua giai đoạn đầu và thất bại ở giai đoạn thứ tư cần sửa thông tin đăng nhập; đường thất bại ở giai đoạn thứ hai cần sửa chứng chỉ hoặc tên. Những sửa chữa này không có gì chung, và chọn sai sẽ lãng phí thời gian gián đoạn.
nc -vz vpn.example.net 443
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief
curl -sS -o /dev/null -w '%{http_code}\n' https://vpn.example.net/
Lệnh thứ ba đáng đọc kỹ. Một 200 từ trang web bình thường cho bạn biết có dịch vụ web; nó không cho biết yêu cầu SSTP sẽ được hiểu. Một 404 từ cùng địa chỉ cũng không cho biết gì về VPN. Chỉ nhật ký ứng dụng khách cho biết đã đạt tới giai đoạn nào trong bốn giai đoạn.
Chú ý mỗi lệnh đã dùng tên nào. Chứng chỉ được chọn theo tên bạn gửi, nên sự không khớp giữa hồ sơ và bài kiểm tra là sự không khớp do bạn tự đưa vào. Ghi tên đó bên cạnh kết quả sẽ ngăn nhầm lẫn về sau.
Đọc thành công một phần theo đúng hướng
Một trung gian có thể cho phép duyệt web bình thường và từ chối trao đổi sau đó, đó là lý do một proxy hoạt động với trang web vẫn có thể thất bại với đường hầm. Cùng kiểu đó xuất hiện khi chứng chỉ hợp lệ cho tên trình duyệt nhưng không hợp lệ cho tên được cấu hình trong hồ sơ: trình duyệt hài lòng còn ứng dụng khách thì không, và cả hai đều đúng về điều chúng đã kiểm tra.
Hãy giữ xác thực máy chủ bật trong khi chẩn đoán điều này. Tắt nó biến sự không khớp chứng chỉ thành một bắt tay thành công và che giấu bằng chứng duy nhất có thể giải thích lỗi.
Nếu cùng hồ sơ hoạt động từ mạng khác, sự khác biệt phụ thuộc vào đường đi. Điều đó thu hẹp tìm kiếm vào các trung gian mà không nói là cái nào, và vẫn là một bước hữu ích. Ghi lại mạng bạn đã dùng, vì so sánh vô nghĩa nếu không có nó.
Sau đó kiểm tra ứng dụng, không chỉ phiên
Khi đã có phiên, hãy xác minh tuyến đường dự định, phân giải tên và quyền dịch vụ từ ứng dụng khách cần chúng. Một đường hầm đã kết nối vẫn có thể thiếu chuyển tiếp ở phía xa hoặc có tuyến quay về chưa từng tồn tại, và những lỗi đó trông giống hệt vấn đề ứng dụng với người đang chờ.
Giữ mọi kết luận gắn với giai đoạn đã tạo ra nó. Gọi một cổng mở là VPN hoạt động chính là cách một lần kiểm tra chứng chỉ năm phút biến thành một ngày cài lại phần mềm.