Trỏ một máy khách VPN vào proxy HTTP của doanh nghiệp, và sự thật hữu ích đầu tiên là proxy không nói giao thức của VPN. Nó mở một kết nối TCP thông thường tới địa chỉ bạn nêu rồi lùi sang một bên, để máy khách và máy chủ tự thực hiện trao đổi của họ qua luồng đó. Mọi thứ máy khách cần, từ kiểu vận chuyển đến trình lắng nghe của máy chủ, đều phải khớp với cách bố trí đó. Hai điểm không khớp giải thích phần lớn các lỗi: một hồ sơ UDP nhắm vào proxy CONNECT, và một phản hồi của proxy bị hiểu nhầm là lỗi VPN.

Proxy mang gì, và không mang gì

Proxy chỉ là một bước vận chuyển. Nó không trở thành proxy trình duyệt của bạn, nó không lưu bộ nhớ đệm các trang bạn truy cập qua đường hầm, và nó không thấy lưu lượng bên trong trừ khi ai đó cố ý cấu hình kiểm tra. Đường hầm nó mở là không trong suốt với nó theo thiết kế.

Điều đó cũng có nghĩa là proxy không thể sửa một máy chủ không có trình lắng nghe tương ứng. Quyền tới được một đích và một dịch vụ đang lắng nghe tại đích đó là hai sự thật riêng biệt, và chỉ cái đầu thuộc về quản trị viên proxy.

Vật mang phải là TCP ở cả hai đầu

Một proxy CONNECT thông thường chỉ chuyển tiếp một luồng byte , vì vậy máy khách phải dùng vận chuyển luồng. Đoạn máy khách cho trường hợp đó trông như sau:

proto tcp-client
remote vpn.example.net 1194
http-proxy proxy.corp.example 3128

Phía máy chủ cần một trình lắng nghe TCP thật trên cổng được nêu trong dòng remote. Đổi proto udp thành proto tcp-client trong hồ sơ tạo ra một máy khách chờ luồng; nó không tạo ra luồng ở phía bên kia. Nếu cùng máy chủ đó cũng trả lời qua UDP trên cổng ấy, đó là một trình lắng nghe khác, không phải chế độ thứ hai của cùng một trình.

Ở nơi có một phiên bản TCP riêng, thiết bị đường hầm, nhóm địa chỉ và định tuyến của nó là tài nguyên riêng. Sao chép một cấu hình đang chạy và sửa từ vận chuyển để lại các tài nguyên đó trỏ tới phiên bản gốc, tạo ra một kết nối xác thực được rồi sau đó không định tuyến gì.

Đọc phản hồi của proxy trước kết quả VPN

Trao đổi đầu tiên của máy khách là một dòng yêu cầu nêu tên máy chủ và cổng đích. Phản hồi cho dòng đó cho bạn biết liệu có luồng byte hay không, và nó đến trước khi bất kỳ chứng chỉ hay thông tin đăng nhập nào được kiểm tra:

CONNECT vpn.example.net:1194 HTTP/1.1
Host: vpn.example.net:1194
Proxy replyWhat it meansWhere to look next
407 Proxy Authentication RequiredThe proxy wants its own credentialsThe client's proxy auth options, not the VPN account
403 ForbiddenThe destination or method is not permittedThe proxy's access policy for that host and port
503 Service UnavailableThe proxy could not complete the upstream connectionThe proxy's own logs and the server's listener

Một phản hồi thuộc lớp 200 cho CONNECT nghĩa là luồng tồn tại. Nó không nói gì về việc chứng chỉ của cổng có đáng tin hay không, khóa chia sẻ có khớp hay không, hoặc tài khoản người dùng có hợp lệ hay không. Những kiểm tra đó diễn ra sau đó, bên trong luồng, và chúng thất bại bằng thông điệp của chính máy khách thay vì một dòng trạng thái HTTP. Hãy đọc nhật ký máy khách để tìm OpenVPN sự kiện đầu tiên sau cú bắt tay với proxy, không phải dòng cuối trước khi cửa sổ đóng lại.

Thông tin đăng nhập của proxy và của VPN thường là những danh tính khác nhau nằm trong tay các nhóm khác nhau. 407 không phải mật khẩu sai của tài khoản VPN, và một chứng chỉ bị từ chối không phải vấn đề quyền của proxy.

CONNECT không tiết lộ gì

Một đường hầm CONNECT rõ ràng không phải là nghe lén. Proxy chuyển tiếp byte và không kết thúc phiên TLS của VPN, nên việc máy khách xác minh chứng chỉ máy chủ vẫn có ý nghĩa và nên được giữ bật. Tắt xác minh để đi qua proxy là giải quyết một vấn đề khác với vấn đề của bạn.

Có những cách bố trí riêng trong đó một tổ chức cố ý kết thúc và kiểm tra TLS. Chúng đòi hỏi cấu hình tin cậy riêng và quyết định chính sách riêng, và chúng không phải là điều một dòng http-proxy thông thường yêu cầu.

Chi phí của TCP trong TCP

Mang đường hầm qua TCP giữ luồng ngoài có thứ tự và có truyền lại, và lưu lượng bên trong thường cũng là TCP. Hai cơ chế phục hồi không phối hợp với nhau, nên một phân đoạn bị mất có thể làm dừng mọi thứ chia sẻ luồng ngoài đó cho đến khi nó được truyền lại. Đây là một đánh đổi thật cho khả năng tương thích, không phải một bản nâng cấp miễn phí.

Dùng đường proxy khi mạng không để lại lựa chọn nào, và ưu tiên đường UDP trực tiếp ở nơi chính sách cho phép. Dù thế nào, sau một thay đổi hãy xác nhận rằng cùng proxy, đích và hồ sơ đi tới giai đoạn tiếp theo; một trình duyệt tải trang tại địa chỉ đó dùng giao thức khác và không chứng minh được gì về đường hầm.

Bài viết liên quan