Cách một chuyển tiếp cục bộ SSH mang một phiên TCP OpenVPN
Một cổng cục bộ, hai quan hệ đã xác thực, ba tầng vận chuyển. Chuyển tiếp SSH di chuyển gì, và nơi vòng lặp cùng các kiểm tra chứng chỉ vẫn áp dụng.
Ở đây ba tầng vận chuyển chồng lên nhau, và mỗi tầng có khung riêng. Tải trọng VPN đi trong một phiên TLS, phiên TLS đó đi trong một kết nối TCP tới cổng loopback, và các byte của kết nối đó đi trong SSH tới một máy chủ relay, nơi mở kết nối TCP thật tới trình lắng nghe VPN. Không gì trong cách sắp xếp này thay đổi điều mà OpenVPN xác thực, và không gì trong đó làm một trình lắng nghe UDP trở nên tiếp cận được qua TCP. Hãy đọc phần còn lại như mô tả đường đi của byte, không phải công thức vượt qua một kiểm soát mạng.
Chuyển tiếp cục bộ thực sự di chuyển gì
Máy khách SSH lắng nghe trên một cổng cục bộ. Khi một tiến trình cục bộ kết nối, máy khách đóng gói các byte vào kênh mã hóa của nó, và phía máy chủ mở một kết nối TCP mới tới đích được nêu trong yêu cầu chuyển tiếp.
Đích đó do relay phân giải, không phải máy của bạn, vì thế một cái tên chỉ tồn tại bên trong mạng từ xa vẫn hoạt động. Điều này cũng có nghĩa relay phải tiếp cận được trình lắng nghe VPN và có đường quay lại nó. Một cái tên được phân giải trên máy tính xách tay của bạn không nói gì về điều relay có thể thấy.
Việc bắt đầu phiên SSH chỉ chứng minh relay tiếp cận được và đã xác thực. Nó không nói trình lắng nghe tiếp theo có hoạt động không, tường lửa giữa relay và trình lắng nghe có chấp nhận kết nối không, hay VPN có chấp nhận hồ sơ của bạn không.
Hướng máy khách tới trình lắng nghe cục bộ
Một ví dụ được công bố: relay tiếp cận được trình lắng nghe TCP tại gw.internal.example:443, và một cổng cục bộ cao chỉ mở đường đó cho máy này.
ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]Sổ tay OpenSSH mô tả chuyển tiếp cục bộ là việc chấp nhận kết nối TCP tại chỗ và mở kết nối tiếp theo từ phía từ xa. Hãy gắn trình lắng nghe vào loopback thay vì mọi giao diện, vì một chuyển tiếp tiếp cận được từ mạng là một relay mở mang tên bạn. Gắn bằng ký tự đại diện cũng mở cổng cho mọi tài khoản cục bộ khác trên một máy dùng chung.
Sau đó đặt máy khách VPN ở chế độ TCP và trỏ nó tới 127.0.0.1:24011. Nếu hồ sơ dùng UDP, thiết kế này không thể giúp: chuyển tiếp mang một luồng byte, và không có đường datagram xuyên qua nó.
Giữ hai xác thực tách biệt
SSH xác thực máy chủ relay. OpenVPN vẫn xác thực đối tác VPN, và đích loopback không thay đổi yêu cầu đó. Tắt các kiểm tra chứng chỉ vì socket giờ trỏ tới localhost là lối tắt tệ nhất trong thiết kế này. Nó biến một cách sắp xếp vận chuyển thành cách sắp xếp tin cậy, và không ai đã chấp thuận cái thứ hai.
Giữ nguyên neo tin cậy của hồ sơ, kiểm tra vai trò máy chủ và xác minh tên. Nếu máy khách của bạn so sánh tên máy chủ với địa chỉ đã gọi, loopback có thể cần một thiết lập tên rõ ràng thay vì kiểm tra bị tắt, và tài liệu hồ sơ là nơi xác nhận trường nào được so sánh.
Coi relay là bên thứ hai trong câu chuyện tin cậy: quản trị viên của nó thấy siêu dữ liệu kết nối và có thể chuyển hướng chuyển tiếp nếu cấu hình thay đổi. Cách sắp xếp cần sự chấp thuận của cả relay và chủ dịch vụ VPN, không chỉ của người cần nó hôm nay.
Đừng dựng vòng lặp dưới đường hầm
Sau khi VPN cài các tuyến, kết nối SSH mang nó vẫn cần một đường tới relay không đi qua đường hầm. Nếu tuyến mặc định chuyển sang VPN và relay chỉ tiếp cận được qua chính đường hầm đó, tầng vận chuyển sụp đổ và VPN đi theo. Sự cố trông như một đường hầm bị rơi chứ không phải lỗi định tuyến, vì thế nó bị chẩn đoán sai.
Cách sửa thông thường là một tuyến máy chủ tới địa chỉ relay được ghim vào giao diện vật lý trước khi đường hầm dựng lên, kèm kiểm tra rằng tuyến sống sót qua lần kết nối lại. Hãy xác minh bằng tra cứu tuyến cho địa chỉ relay thay vì giả định thứ tự đã đúng.
Cũng hãy chờ đợi ngăn xếp này chậm hơn và mong manh hơn một kết nối trực tiếp, vì giờ có hai tầng vận chuyển có thứ tự và thêm một điểm cuối phải bảo trì. Đây là cách vượt một ranh giới mạng, không phải kỹ thuật hiệu năng.
Đóng trình lắng nghe khi xong việc
Dừng phiên SSH khi không còn cần đường hầm, và xác nhận cổng cục bộ đã được giải phóng. Một chuyển tiếp bị quên để ngỏ một đường đã xác thực trên máy có thể dùng chung.
Xem lại cả các đích chuyển tiếp được phép của relay, vì một cấu hình dễ dãi biến bất kỳ tài khoản bị xâm phạm thành một điểm xoay chung. Ghi cổng, relay và đích cùng nhau, để người tiếp theo biết chuyển tiếp dùng để làm gì và còn được phê duyệt không.