Một drop-in OpenVPN đã thay đổi mọi tunnel: instance so với template
Một drop-in dưới thư mục instance chỉ chạm vào một tunnel; thư mục template chạm vào tất cả. Đọc unit đã hợp nhất trước khi chọn đường dẫn.
Chính sách khởi động lại được thêm cho một tunnel bắt đầu áp dụng cho mọi tunnel trên máy. Đây không phải lỗi của systemd; đó là khác biệt giữa drop-in của instance và drop-in của template. Đường dẫn bạn ghi tệp bên dưới quyết định bao nhiêu dịch vụ sẽ kế thừa nó.
Chọn phạm vi trước khi đặt cấu hình. Hai thư mục trông gần như giống hệt nhau, và chỉ một trong số đó giới hạn ở instance bạn muốn.
Triệu chứng: một lần sửa, mọi tunnel
Một drop-in riêng cho instance nằm dưới thư mục được đặt tên theo instance đầy đủ, ví dụ [email protected]. Một drop-in của template nằm dưới [email protected], có dấu @ và không có tên instance ở giữa. Cái đầu chỉ áp dụng cho office. Cái sau áp dụng cho mọi dịch vụ được tạo từ template đó.
Dạng template không chạm tới một template [email protected] riêng và không chạm tới các dịch vụ không liên quan có openvpn trong tên.
Chọn thư mục khớp với phạm vi
Cả hai thư mục đều nằm dưới /etc/systemd/system/. Bỏ thành phần system cuối cùng tạo ra một đường dẫn mà systemd không đọc như ghi đè hệ thống, và đó là cách âm thầm khiến một tệp trông đúng lại không làm gì cả. Viết đường dẫn đầy đủ một lần và dùng lại.
Một drop-in cũng cần tiêu đề phần đúng. Các thiết lập dịch vụ thuộc dưới [Service]. Một tệp có thiết lập nhưng không có phần sẽ bị bỏ qua hoặc bị từ chối, và unit tiếp tục hành xử như trước trong khi tệp nằm đó trông có vẻ có thẩm quyền.
Giữ mục đích trong tên tệp nếu bạn thêm nhiều hơn một drop-in. Thứ tự từ điển quyết định việc hợp nhất, và một cái tên nói rõ tệp làm gì khiến thứ tự đó dễ đọc.
Đọc unit đã hợp nhất trước khi ghi
Đọc unit đã hợp nhất trước khi ghi bất cứ thứ gì. systemctl cat [email protected] in ra unit chính và mọi drop-in áp dụng, theo thứ tự hợp nhất. So sánh nó với một instance thứ hai khi bạn cân nhắc thay đổi template. So sánh đó cho thấy chính xác những dịch vụ nào sẽ kế thừa chỉnh sửa.
Tệp của instance không xóa thiết lập của template. Cả hai được hợp nhất, vì vậy một giá trị template bạn đã quên vẫn có thể còn hiệu lực.
Các drop-in có tên khác, thiết lập thời gian chạy và cấu hình do gói cung cấp cũng tham gia. Đừng cho rằng tệp bạn sửa cuối cùng là toàn bộ unit. Đầu ra đã hợp nhất chính là unit.
Giữ chính sách của unit ra ngoài hồ sơ
Giữ riêng chính sách của unit và cấu hình VPN. Một chỉ thị trong hồ sơ không trở thành cú pháp systemd hợp lệ chỉ vì nó nằm dưới [Service]. Thiết lập khởi động lại cũng không thuộc về tệp .ovpn.
Sự tách biệt đó cũng là lý do chính sách khởi động lại không giống với OpenVPN tự phục hồi peer của nó. Quyết định hành vi bạn muốn trước khi chọn phạm vi.
Áp dụng và xác minh instance
Sau thay đổi, tải lại các định nghĩa của trình quản lý bằng systemctl daemon-reload. Lần tải lại đó không khởi động lại tunnel; nó chỉ đọc lại các tệp unit. Sau đó áp dụng hành động vòng đời bạn dự định cho đúng instance.
Xác minh bằng cách đọc lại unit đã nạp và quan sát hành vi bạn đã thay đổi. Một lần khởi động lại mang theo công việc đang hoạt động xứng đáng có một gián đoạn có kế hoạch, không phải một thử nghiệm nhanh trên tunnel sản xuất. Ghi lại mục đích và phạm vi của ghi đè bên cạnh triển khai để người tiếp theo biết tệp có định được chia sẻ hay không.
Nếu chính sách thực sự dùng chung, hãy chủ động chuyển nó vào template và kiểm tra một instance thứ hai trước khi coi là xong.Tài liệu tham chiếu unit của systemd ghi lại mức ưu tiên của drop-in và thứ tự hợp nhất.