Hook phía máy khách hay hook phía máy chủ? Tập lệnh OpenVPN chạy ở đâu
Đường dẫn tập lệnh trong cấu hình máy chủ là đường dẫn trên máy chủ. Hãy chọn hook theo máy phải thực hiện công việc, và đừng chờ push chạy mã trên laptop nữa.
Nhiệm vụ rõ ràng: khi laptop kết nối, một thứ gì đó trên laptop phải thay đổi. Cấu hình đang được sửa thuộc về máy chủ, và đó chính là chỗ giả định sụp đổ. Một đường dẫn trong tệp máy chủ chỉ định một tệp trên máy chủ đó, và không lượng push nào thay đổi việc tiến trình nào thực thi nó. Chọn giữa hai hook chủ yếu là quyết định máy nào sở hữu công việc và chấp nhận những giới hạn kéo theo.
Hai máy, hai câu hỏi phải trả lời trước
Hỏi xem thay đổi trạng thái phải xảy ra ở đâu, rồi hỏi sự kiện nào tương ứng với nó. Nếu thay đổi là cấp quyền cho từng người dùng hoặc quyết định cấu hình cho từng máy khách, nó thuộc về nơi thư mục người dùng được biết: máy chủ. Nếu thay đổi là một tuyến đường, một thiết lập resolver hay một trình trợ giúp cục bộ trên điểm cuối, nó thuộc về điểm cuối, và chỉ điểm cuối mới làm được.
Trả lời hai câu hỏi đó theo thứ tự ngược lại là cách mọi người đi đến việc cố đẩy một tệp batch sang laptop Windows. Máy chủ biết ai đã kết nối; laptop biết ngăn xếp mạng của chính nó trông thế nào. Không bên nào có thông tin của bên kia, và nỗ lực thường thất bại trong im lặng thay vì báo lỗi rõ ràng.
Trước cả hai, đáng đặt câu hỏi thứ ba: nền tảng có cung cấp hook bạn muốn hay không? Một thiết bị tự tạo cấu hình có thể không cung cấp cùng tên sự kiện, và một máy khách để bàn nhập tệp .ovpn không nhất thiết là cùng máy khách mà tệp được viết cho. Xác nhận nền tảng trước giúp bạn khỏi thiết kế quanh một hook không tồn tại ở đó. Nó cũng cho bạn biết tài liệu nào thực sự áp dụng cho chiếc máy trước mặt.
Lựa chọn phía máy chủ: một sự kiện cho mỗi kết nối
Một tập lệnh client-connect chạy trong ngữ cảnh tiến trình của máy chủ khi một máy khách đã xác thực kết nối, và nó nhận được thông tin kết nối đã được ghi tài liệu như common name và địa chỉ được cấp. Đây là nơi đúng để viết một đoạn cấu hình cho từng máy khách, thực thi một quyết định chính sách hoặc ghi lại trạng thái mà máy chủ sở hữu.
Điều mọi người bỏ sót là sự khác biệt giữa hook đó và hook up của máy chủ. Hook up kích hoạt khi máy chủ mở thiết bị đường hầm của nó, điều này trên máy chủ nhiều máy khách chỉ xảy ra một lần lúc khởi động daemon. Nó không phải sự kiện mỗi lần đăng nhập, và mã đặt ở đó chạy khi dịch vụ khởi động chứ không phải khi người dùng kết nối.
Trên thiết bị có giao diện web, hãy dùng cơ chế tiện ích mở rộng được hỗ trợ thay vì sửa các tệp daemon được tạo. Các tệp được tạo sẽ bị ghi đè ở lần lưu tiếp theo, và việc ghi đè đó âm thầm xóa thay đổi của bạn vào đúng thời điểm tệ nhất. Hãy giữ một bản sao văn bản tiện ích bên ngoài thiết bị để bản cập nhật firmware cũng không làm mất ý định.
Lựa chọn phía máy khách: công việc phải chạy cục bộ
Một máy khách cộng đồng có thể chạy tập lệnh cục bộ khi thiết bị đường hầm xuất hiện và một lần nữa khi các tuyến đường được cài đặt. Đó là hai thời điểm khác nhau, và chọn sai sẽ tạo ra cuộc đua kinh điển trong đó trình trợ giúp khởi động trước khi tuyến đường mà nó phụ thuộc tồn tại.
Trình trợ giúp phải tồn tại trên máy khách đó, phải đọc được và thực thi được bởi tài khoản chạy máy khách, và phải được cho phép bởi một thiết lập script-security rõ ràng. Một tập lệnh hoạt động khi bạn khởi chạy máy khách với quyền quản trị không cho bạn biết gì về dịch vụ trước khi đăng nhập hay phiên của người dùng khác.
Cách đặt tên cũng quan trọng. Hook up tương ứng với việc tạo thiết bị và route-up với việc cài đặt tuyến đường, nhưng một tác vụ cần mạng riêng có thể truy cập được nên xác minh khả năng truy cập thay vì giả định rằng việc tạo thiết bị nghĩa là mọi tuyến đường, mục resolver và ứng dụng đã sẵn sàng.
Vì sao đẩy mã thực thi không nằm trong danh sách lựa chọn
Các tùy chọn được đẩy bằng push bị giới hạn có chủ đích, và các tùy chọn thực thi tập lệnh nằm trong số những loại mà máy chủ không được phép gửi xuống. Ràng buộc đó tồn tại vì giải pháp thay thế sẽ cho phép một máy chủ bị xâm phạm hoặc cấu hình sai chạy lệnh tùy ý trên mọi máy khách từng kết nối.
Bật thực thi tập lệnh cục bộ không thay đổi điều đó. Thiết lập script-security của bạn cho phép các tập lệnh cục bộ do bạn chọn; nó không trao quyền cho máy chủ cung cấp tập lệnh mới.
Nếu mục tiêu chỉ là cài các tuyến đường VPN, hãy dùng cấu hình tuyến đường được hỗ trợ thay vì phát minh một sơ đồ thực thi từ xa. Nếu mục tiêu thực sự cần mã cục bộ, hãy phân phối nó qua công cụ quản lý điểm cuối của tổ chức và xem xét nó như mọi phần mềm khác chạy với quyền của người dùng.
Cần xác minh gì trước khi tin vào bất kỳ hook nào
Ghi ra bốn điều cho mỗi hook: máy, tên sự kiện, tài khoản mà nó chạy dưới, và thay đổi trạng thái mà nó phải tạo ra. Sau đó thử kết nối, kết nối lại và đường dọn dẹp, vì một hook rò rỉ trạng thái khi kết nối lại còn tệ hơn một hook chưa từng chạy.
Hãy thử dưới tài khoản thực sự sẽ thực thi nó, vào đúng thời điểm nó thực sự được thực thi. Hướng dẫn openvpn(8) ghi tài liệu cả hai họ hook và các giới hạn của push; nền tảng bạn triển khai ghi tài liệu liệu nó có cung cấp chúng hay không. Một tập lệnh thành công trong terminal quản trị tương tác là một giả thuyết, không phải một xác minh.