Trong một luồng diễn đàn, ifconfig-noexec nó được đề xuất như bản sửa lỗi giúp phiên SSH sống sót khi một đường hầm được dựng lên. Lập luận nghe có lý cho đến khi bạn kiểm tra xem tùy chọn này thực sự chạm vào điều gì. Nó ngăn OpenVPN cấu hình địa chỉ của giao diện đường hầm và thay vào đó trao các giá trị ấy cho script; về việc các phản hồi cho kết nối quản trị của bạn đi đâu, nó không nói gì. Tin vào điều ngược lại sẽ tạo ra một đường hầm không có địa chỉ dùng được và một phiên SSH vẫn chết.

Tùy chọn này thực sự giao phó điều gì

Mặc định, máy khách dựng thiết bị đường hầm lên và gán địa chỉ cục bộ cùng địa chỉ từ xa mà máy chủ đã trao cho nó. Khi ifconfig-noexec được đặt, bước đó bị bỏ qua, và các giá trị đã thương lượng được xuất sang môi trường của script để thứ khác có thể áp dụng chúng.

Quyền sở hữu chuyển đi. Không có gì được dựng ra thay chỗ.

Vậy câu hỏi mà tùy chọn này trả lời là ai cấu hình giao diện, và câu hỏi mà nó không trả lời là các gói tin tìm đường quay lại chỗ bạn như thế nào. Hãy tách hai việc đó ra, nếu không bạn sẽ dành cả buổi tối sửa tuyến để bù cho một giao diện không có địa chỉ.

Ba tùy chọn giống nhau với việc làm khác nhau

Dòng họ này dễ nhầm vì tên chỉ khác một từ và các triệu chứng chồng lên nhau. Hãy đọc xem mỗi tùy chọn chặn điều gì trước khi chọn bất kỳ cái nào.

OptionWhat stops happening
ifconfig-noexecOpenVPN's own tunnel-address configuration; values go to scripts instead
route-noexecAutomatic route addition and removal; route details go to a script
route-nopullServer-pushed routes and related options such as DNS are rejected

Đây là những lựa chọn thay thế cần hiểu riêng, không phải một bộ để dán chung. Chặn cấu hình địa chỉ không chặn thay đổi tuyến, quy tắc tường lửa hay các tùy chọn được đẩy xuống mang DNS. Một script được giao phó cũng tự do đổi tuyến, và đó là quyết định bạn trao đi thay vì né tránh.

Nếu máy khách của nhà cung cấp bọc lấy engine, hãy dùng tích hợp được hỗ trợ của nó thay vì ném một chỉ thị cấp thấp vào hồ sơ rồi hy vọng lớp bọc tôn trọng nó. Lớp bọc thường tạo lại hồ sơ khi kết nối, nên chỉnh sửa thủ công biến mất mà không báo lỗi. Hãy kiểm tra nơi máy khách lưu cài đặt trước khi dành cả buổi tối cho tệp đó. Điều đó áp dụng cho mọi hàng trong bảng, không chỉ hàng bạn đến tìm.

Phiên SSH mà bạn định bảo vệ

Một kết nối SSH có địa chỉ nguồn, địa chỉ đích và đường phản hồi. Trên một máy chủ vừa cài mặc định đường hầm đầy đủ, phản hồi tới địa chỉ công khai của bạn khớp với đường hầm, và cổng VPN bỏ nó đi.

Không có gì trong cấu hình địa chỉ của giao diện đường hầm thay đổi điều đó.

Thứ sửa nó là một tuyến cụ thể hơn cho địa chỉ quản trị của bạn đi qua cổng trước đường hầm, hoặc một quy tắc chính sách lái luồng giao thông ấy, cùng với các cài đặt lọc mà máy chủ của bạn áp dụng. Hai vấn đề đôi khi xuất hiện cùng nhau, và đó là cách một cái bị nhầm thành thuốc chữa cho cái kia. Hãy thử riêng: dựng đường hầm mà không có tùy chọn, xem địa chỉ giao diện và đường phản hồi, rồi quyết định cái nào trong hai thực sự hỏng.

Script được giao phó phải đảm nhận điều gì

Nếu bạn thực sự muốn một chủ khác cấu hình giao diện, hãy liệt kê công việc: áp dụng địa chỉ cục bộ và địa chỉ từ xa, dựng thiết bị lên, khôi phục hoặc gỡ bỏ việc gán địa chỉ khi tháo và làm lại y như vậy sau khi kết nối lại. Các giá trị từ một phiên thành công không được mã hoá cứng, vì máy chủ có thể trao một cặp khác lần sau.

Các biến môi trường mà máy khách xuất ra là đầu vào duy nhất được hỗ trợ cho công việc đó.

env | grep -E '^ifconfig_|^route_'

Bên trong một script route-up các biến ấy có sẵn; từ một tác vụ cron hay một shell thủ công thì không. Hãy xác nhận phiên bản của bạn dùng hook vòng đời nào, và xác nhận hook chạy với đủ quyền để đổi giao diện, vì máy khách có thể đã hạ xuống một người dùng không có quyền.

Hãy thử cả vòng đời, không phải một phiên

Dựng đường hầm, kiểm tra địa chỉ trên thiết bị, rồi kết nối lại và kiểm tra lần nữa. Một cấu hình chạy được một lần và hỏng ở lần thử thứ hai thường có nghĩa là bước được giao phó chỉ chạy ở kết nối đầu tiên.

Sau đó thử cả hai tiêu chí chấp nhận cùng lúc: một kết nối SSH mới qua đường quản trị dự định hoạt động, và một ứng dụng được phép dùng đường hầm đúng cách.

Một phiên SSH cũ tình cờ sống sót trong khi đường hầm không có địa chỉ không phải là thành công, và đó chính là trạng thái mà tùy chọn này tạo ra khi không ai đảm nhận công việc. Hãy kiểm tra địa chỉ giao diện trước, rồi đường phản hồi quản trị, rồi ứng dụng. Nếu hai trong ba sai, tùy chọn đã chuyển công việc đi mà không trao cho nó một chủ.

Bài viết liên quan