Bạn kết nối, giao diện đường hầm xuất hiện, và một tiền tố bạn cần đơn giản là không có trong bảng. Bước tiếp theo thường là tìm một script để thêm nó. Cuộc tìm kiếm đó dẫn đến những câu trả lời dán một trình trợ giúp OpenVPN vào hồ sơ, và một nửa trong số đó làm tình hình tệ hơn thay vì tốt hơn, vì một tuyến bị thiếu có ba chủ sở hữu khả dĩ và chỉ một trong số đó là một script bị thiếu.

Hãy quyết định chủ sở hữu nào chịu trách nhiệm trước khi bạn viết bất cứ điều gì.

Ba chủ sở hữu, một tiền tố bị thiếu

Tiền tố có thể vắng mặt vì không ai cung cấp nó, vì hồ sơ từ chối nó, hoặc vì nó được cài đặt ở một nơi bạn không nhìn. Đó là những lỗi khác nhau và chúng có cách sửa khác nhau.

Cái đầu tiên dễ kiểm tra nhất: máy chủ hoặc plugin có bao giờ cung cấp tuyến đó không? Một backend chưa bao giờ nhận tiền tố thì không thể cài đặt nó, và một script phụ trợ không thể bịa ra khả năng tiếp cận mà đối tác chưa bao giờ mô tả. Cái thứ hai là chính sách hồ sơ, có thể ức chế những tuyến mà kết nối nếu không sẽ nhận. Cái thứ ba là một bảng hoặc quy tắc, có thể giữ tuyến ở một nơi mà tra cứu mặc định không bao giờ xem.

Chủ sở hữu thứ tư là bạn, về sau: một script thêm tuyến khi kết nối nhưng không gỡ nó khi ngắt kết nối. Điều đó tạo ra một tiền tố sống lâu hơn đường hầm, trỏ đến một giao diện đã chết và khiến người tiếp theo gỡ lỗi máy bối rối.

Đọc hồ sơ trước khi thêm bất cứ thứ gì

Bắt đầu với các thuộc tính của kết nối đã lưu. Đọc chúng mà không làm rò rỉ bí mật, và dùng UUID nếu tên hồ sơ không rõ ràng.

nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office

vpn.service-type cho bạn biết backend nào sở hữu kết nối, và điều đó quan trọng vì dữ liệu plugin là riêng cho backend. Một khóa được plugin này chấp nhận không phải là chỉ dẫn được hỗ trợ cho plugin khác, vì vậy một đoạn sao chép từ tài liệu của một máy khách khác không chứng minh được gì.

ipv4.ignore-auto-routes và ipv4.never-default trả lời những câu hỏi khác nhau. Cái đầu có thể từ chối những tuyến mà kết nối nếu không sẽ nhận tự động, và cái thứ hai kiểm soát liệu hồ sơ có thể trở thành tuyến mặc định hay không. Một hồ sơ bỏ qua các tuyến tự động và không dựa vào bất cứ điều gì khác sẽ kết nối sạch sẽ và hầu như không cài đặt gì.

ip -4 rule show
ip -4 route show table all

Hai lệnh đó giải quyết khả năng thứ ba. Tìm tiền tố của bạn trong mọi bảng, không chỉ trong main, và kiểm tra xem một quy tắc chính sách có gửi tra cứu liên quan đi nơi khác không. Nếu tiền tố nằm trong bảng khác và không gì tra cứu nó, bạn không có một tuyến bị thiếu; bạn có một tra cứu không bao giờ đến được nó.

Điều mà một script không thể sửa

Thêm một script phụ trợ cho vpn.data của NetworkManager một chương trình để chạy. Đó là một cơ chế thật, và nó là cơ chế sai cho hầu hết những trường hợp này, vì script nhận quyền kiểm soát sau khi chính sách của hồ sơ đã quyết định chấp nhận điều gì.

script-security của OpenVPN là sự nhầm lẫn lặp lại khác. Đó là một thiết lập của OpenVPN quy định máy khách được chạy những script nào và được đặt gì vào môi trường của chúng; mức 3 cho phép truyền thông tin xác thực qua môi trường, đây là một quyết định về xử lý bí mật chứ không phải một bản sửa lỗi định tuyến. Dán nó vào một hồ sơ mà backend không phải OpenVPN, hoặc nâng nó lên khi không script nào cần, sẽ thêm phơi nhiễm mà không thêm tuyến.

Rồi đến phản xạ khởi động lại. Khởi động lại dịch vụ NetworkManager phá bỏ và dựng lại mọi liên kết được quản lý, kể cả liên kết bạn đang kết nối qua nếu bạn làm việc từ xa. Đó là một hành động gây gián đoạn, không phải một chẩn đoán vô hại, và trên một máy chủ nó có thể là sự khác biệt giữa một phiên còn sống và một phiên không.

Quyết định, theo thứ tự

Đặt ba câu hỏi theo thứ tự. Đối tác có cung cấp tiền tố không, điều mà nhật ký của backend hoặc đầu ra trạng thái của chính nó sẽ cho thấy. Nếu có, hồ sơ có được cấu hình để chấp nhận và cài đặt các tuyến, hay nó đang ức chế chúng? Nếu tuyến tồn tại ở đâu đó, đường tra cứu có đúng cho lưu lượng bạn đang kiểm tra không?

Chỉ khi câu trả lời đầu tiên là có, câu thứ hai là có và câu thứ ba đúng thì một script bổ sung mới trở nên có thể bảo vệ được, và ngay cả khi đó bạn nên hỏi liệu backend có hỗ trợ tuyến một cách tự nhiên không. Tài liệu tham khảo cài đặt VPN ghi lại service-type và từ điển dữ liệu riêng cho plugin, và đó là nơi nên bắt đầu trước khi giả định một khóa tồn tại.

Sau một bản sửa đã được phê duyệt, hãy kết nối lại và kiểm tra đích theo địa chỉ rồi theo tên, sau đó ngắt kết nối và kết nối lại để xác nhận trạng thái có thể lặp lại. Một chủ sở hữu, một bảng và một tuyến biến mất cùng đường hầm là kết quả đáng có.

Bài viết liên quan