OpenVPN thực sự dùng TLS, và người ta thường mở rộng điều đó thành một khẳng định mà nó không chịu nổi: rằng một đường hầm vì thế trông giống trình duyệt đang truy cập một trang. Phần đầu đúng. Phần sau không. TLS ở đây thuộc về một kênh điều khiển đi bên trong vùng chứa của chính OpenVPN, song song với một kênh tải trọng có mật mã hoàn toàn khác, nên ai kiểm tra những byte mở đầu sẽ thấy OpenVPN.

Hai cuộc trò chuyện trong một phong bì

Hãy nghĩ một phiên là hai cuộc trò chuyện chia sẻ một phong bì. Một bên xác thực chứng chỉ và tạo ra vật liệu khóa. Bên kia mã hóa thứ bạn thực sự gửi đi, dùng thứ mà bên thứ nhất đã tạo ra.

Phong bì chính là giao thức. Mỗi gói bắt đầu bằng một tiêu đề nhỏ nêu loại của nó, và tiêu đề đó đến trước mọi thứ khác.

Điều gì thực sự đến trước

Vì thứ tự đó, thứ đầu tiên trên dây không phải một bản ghi TLS. Đó là tiêu đề của OpenVPN, theo sau là nội dung của kênh mà tiêu đề công bố. Một ClientHello có tồn tại trong đó, chỉ là không ở byte số không. Không cần giải mã gì để nhận ra khác biệt, vì hình dạng tự nó đã tố cáo.

Giá trị mặc định cũng quan trọng ở đây. Luồng đi UDP tới 1194 trừ khi hồ sơ chọn TCP. Cả hai trường hợp, vẻ ngoài là một đường hầm chứ không phải một yêu cầu web.

Ba cách trung thực để thay đổi hình dạng

Một bộ kết thúc TLS như stunnel nhận TLS trên một cổng ở mỗi đầu và trao luồng đã giải mã cho OpenVPN tại chỗ, nên mạng thấy TLS tới cổng đó. Một giao thức vốn là TLS ngay từ byte đầu lại hành xử khác: trao đổi tương thích AnyConnect mà ocserv triển khai giống với truy cập từ xa doanh nghiệp mà nhiều mạng đã chờ đợi. SSTP, đi kèm Windows, có cùng tính chất đó trong một sản phẩm khác.

Trên Linux, tùy chọn -w của SSH mang một liên kết điểm-điểm bên trong một phiên SSH, hữu ích khi SSH là giao thức duy nhất được phép. Đây là cách rẻ nhất trong bốn nếu SSH đã hoạt động từ mạng đó, và ít hữu ích nhất nếu không.

Điều mà không cách nào thay đổi

Không cách nào trong số này thay đổi thứ mà đường hầm có thể chạm tới. Chúng không làm một địa chỉ bị chặn trở nên tới được, không xác thực ai, và không quyết định tuyến.

Một lớp bọc cũng khiến bạn tốn một thành phần. Hai trình lắng nghe và hai tệp cấu hình nghĩa là hai nơi có thể hỏng, và cả hai trông giống nhau từ chỗ ngồi của người dùng. Hãy tính vào ngân sách trước khi nhận một cái. Phiên vẫn là một luồng mã hóa dài hạn duy nhất tới một đích, và khối lượng cùng thời điểm của nó vẫn hiện ra.

Chẩn đoán trước, rồi chọn

Vậy hãy chẩn đoán trước. UDP bị bỏ được đáp bằng chế độ TCP, và một chữ ký đã nhận diện được đáp bằng giao thức khác hoặc một lớp bọc. Chọn công cụ trước khi biết chỗ chặn là cách người ta cuối cùng duy trì ba tầng đều hỏng vì cùng một lý do.

Một mạng chỉ cho phép các cổng web thu hẹp lựa chọn vào một giao thức dựa trên TLS ở cổng 443. Áp dụng cả ba cùng lúc cho ra một chồng mà không ai gỡ lỗi được, nên hãy đổi một thứ và kiểm tra lại đúng luồng đó.

Nếu không cái nào áp dụng, câu trả lời chính xác là mạng này sẽ không mang một đường hầm cho bạn. Đó là một phát hiện chứ không phải thất bại của nỗ lực. Việc thử thêm lựa chọn không đảo ngược một quyết định chính sách đã đưa ra ở trên.

Một ranh giới đứng trước tất cả những điều này. Quyền chạy một đường hầm trên mạng của người khác là vấn đề chính sách, được quyết định tách khỏi việc cơ chế có hoạt động hay không. Những sự thật này giải thích điều một quan sát viên thấy, và chúng không trao quyền.

Bài viết liên quan