Kết nối bằng máy khách 2.x thì hồ sơ hoạt động; đưa cùng tệp đó cho máy khách 3.x thì nó dừng ở lời nhắc mật khẩu. Đưa --auth-user-pass creds.txt cho openvpn3 session-start và kết quả vẫn vậy, vì máy khách mới không có giai đoạn nào đọc tệp. Việc từ chối là có chủ đích: thông tin đăng nhập thuộc về một phiên, và phiên do một dịch vụ tạo ra, không phải tiến trình trong terminal của bạn. Chọn giữa lời nhắc tương tác và trình trợ giúp autoload, và biết mỗi cách lưu gì.

Vì sao tệp đã lưu không có chỗ để đi

Trong thiết kế mới, quản lý cấu hình và quản lý phiên là hai dịch vụ riêng biệt nói chuyện qua bus hệ thống. Chính sự tách biệt đó cho phép người dùng thường khởi động một phiên mà không cần một daemon có đặc quyền đọc tệp mật khẩu được bảo vệ thay họ. Thông tin đăng nhập dựa trên tệp không có chỗ trong mô hình đó, vì không có bước khởi động phía daemon nào đọc chúng. Việc từ chối là hệ quả của kiến trúc, không phải tính năng thiếu.

Mẫu cũ đáng được gọi tên để dễ bỏ hơn: hồ sơ tham chiếu một tệp thông tin đăng nhập, và daemon đọc nó khi đường hầm bắt đầu. Trong mô hình mới, thông tin đăng nhập thuộc về một phiên và được cung cấp khi phiên đó bắt đầu. openvpn3 session-start --config work.ovpn hỏi chúng, và --auth-user-pass creds.txt bị từ chối vì không có gì trên đường đó mở tệp. Mọi công thức 2.x bạn tìm thấy đều giả định một giai đoạn không còn nữa.

Cấu hình và các thiết lập cục bộ của trang cũng tách biệt, điều này giải thích bất ngờ thứ hai. Một hồ sơ có thể trông đầy đủ trong khi kết nối nó tạo ra thiếu cấu hình định tuyến và trình phân giải. Những phần đó được áp dụng như thiết lập cục bộ của trang, tách khỏi tệp đã nhập.

Đường đi của lời nhắc và phiên nó để lại

Cung cấp mật khẩu khi phiên bắt đầu là quy trình làm việc dự định. Máy khách hỏi một lần, trao thông tin đăng nhập cho phần phụ trợ của phiên và tiếp tục:

openvpn3 session-start --config work.ovpn
openvpn3 sessions-list

Đường đó không ghi gì xuống đĩa. Phiên cũng tiếp tục chạy sau khi terminal đóng, điều này khiến những người mong tiến trình chết cùng shell của họ ngạc nhiên. Đó chính là lý do chuyển việc xử lý phiên vào một dịch vụ. Phiên sống lâu hơn terminal đã yêu cầu nó, và phải dừng nó một cách rõ ràng.

Với một máy trạm có người ngồi trước, đây cũng là lựa chọn an toàn nhất, vì không có bí mật nào được lưu để bảo vệ hay quên. Nó chỉ không phù hợp ở nơi không có ai để gõ.

Tự động hóa không có người bên bàn phím

Nơi một cỗ máy phải kết nối mà không có người, dự án cung cấp openvpn3-autoload. Nó đọc một thư mục hồ sơ và một bộ mô tả khớp cho từng hồ sơ, và bộ mô tả cung cấp thông tin đăng nhập dưới dạng văn bản thuần. Trình trợ giúp là một tệp nhị phân riêng, thường ở /usr/sbin/openvpn3-autoload, không phải một cờ của session-start. Thiết lập nó nghĩa là tạo thư mục, sao chép hồ sơ dưới tên mà bộ mô tả mong đợi, và viết bộ mô tả.

Thiết lập cho từng người dùng trông như sau, chạy bằng tài khoản sẽ sở hữu phiên. Chế độ thư mục giữ người dùng cục bộ khác ở ngoài:

mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload

Bộ mô tả nêu tên thông tin đăng nhập và yêu cầu khởi động tự động. Giữ giá trị mật khẩu ngoài kiểm soát phiên bản:

{
  "autostart": true,
  "user-auth": {
    "autologin": true,
    "username": "svc-vpn",
    "password": "change-this-value"
  }
}

Sau đó gọi trình trợ giúp một lần và xác nhận phiên xuất hiện. Lệnh thứ hai là bước kiểm tra, không phải một bước thiết lập khác:

/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list

Khi khởi động, một đơn vị đóng gói tên openvpn3-autoload.service dùng thư mục toàn hệ thống /etc/openvpn3/autoload, không phải thư mục theo người dùng. Vị trí đó cần quyền sở hữu root và chế độ chặt hơn, và bộ mô tả vẫn giữ mật khẩu dưới dạng văn bản rõ. Sự đánh đổi là rõ ràng: mật khẩu giờ nằm trên đĩa, nên hãy coi thư mục đó là bí mật, loại nó khỏi các bản sao lưu ngoài máy chủ, và chọn đường tương tác mỗi khi có người.

Lỗi bus trông giống lỗi mật khẩu

Một số lỗi bị quy cho thông tin đăng nhập hoàn toàn không phải vậy. Lỗi quyền nêu tên đường kích hoạt của dịch vụ nghĩa là một trong hai điều: phần phụ trợ không chạy, hoặc người gọi thiếu quyền kích hoạt nó. Không chỉnh sửa hồ sơ nào thay đổi được cả hai. Kiểm tra trạng thái dịch vụ và chính sách bus được cung cấp trước khi chạm vào cấu hình.

Các lệnh dưới đây tách hai điều đó. Lệnh đầu báo phần phụ trợ có đang chạy không; lệnh thứ hai hiển thị các lỗi bus gần đây:

systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20

Một cách đọc sai phổ biến khác là một phiên xuất hiện rồi biến mất ngay. Mẫu đó thường có nghĩa là các thiết lập cục bộ của trang chưa bao giờ được áp dụng, nên đường hầm nổi lên mà không có các tuyến và thay đổi trình phân giải khiến nó hữu ích. Đọc trình tự chứ không phải dòng cuối: phiên có được tạo không, nó có đạt trạng thái đã kết nối không, và nó có sống sót không là ba sự thật riêng biệt.

Khi máy khách cũ vẫn đang được dùng

Máy khách 2.x vẫn chấp nhận một tệp thông tin đăng nhập, và một vòng khóa có thể trả lời lời nhắc của nó mà bí mật không bao giờ chạm đĩa. Một trình bao giải quyết mục nhập, nên tệp nêu tên việc tra cứu chứ không phải mật khẩu. Cách sắp xếp này phụ thuộc vào một vòng khóa đã mở khóa, điều mà một vùng chứa không có phiên đăng nhập hoặc một đơn vị khởi động trước khi ai đó đăng nhập không thể cung cấp. Công cụ tra cứu sau đó báo một bộ sưu tập mà nó không thể ghi vào, nên lỗi trông như lỗi thông tin đăng nhập trong khi thực ra là lỗi vòng khóa.

Trước khi xây bất cứ điều gì trong số này, hãy kiểm tra xem một thiết lập keepalive trong hồ sơ có loại bỏ hoàn toàn nhu cầu khởi động lại không. Một phiên còn sống sẽ không bao giờ đến lời nhắc mà bạn đang cố tự động hóa.

Bài viết liên quan