Bạn thêm route 10.60.0.0 255.255.255.0 vào cấu hình máy chủ, khởi động lại, kết nối lại một máy tính xách tay, và mạng con vẫn không thể truy cập từ máy đó. Dòng lệnh đã được chấp nhận, dịch vụ khởi động sạch sẽ, và không có gì trong nhật ký trông sai. Điều đã xảy ra là tuyến đường được cài trên chính máy bạn đã sửa: cổng giờ tin rằng nó có thể đến tiền tố đó, trong khi máy khách không hề được thông báo gì. Vị trí là toàn bộ câu hỏi, và có bốn nơi mà cùng một dòng có thể sống.

Bốn vị trí và ai nhận từng vị trí

Một tuyến đường có thể được thêm bởi cấu hình của chính máy khách, được cung cấp cho mọi máy khách qua push toàn cục, được cung cấp cho một máy khách qua tệp riêng, hoặc được ghi vào ngữ cảnh định tuyến của chính máy chủ.

Bốn trường hợp đó dùng cú pháp gần như giống hệt nhau và cho kết quả hoàn toàn khác nhau. Ba trường hợp đầu ảnh hưởng đến thứ máy khách gửi vào đường hầm; trường hợp thứ tư ảnh hưởng đến cách máy chủ đến được một mạng, điều này hữu ích khi chính máy chủ cần một đường và có hại khi bị nhầm với phân phối.

Hãy quyết định bạn muốn cái nào trong bốn trước khi viết dòng, rồi xác nhận người nhận.

PlacementEffectReceiver
Client profile routeInstalled by the client at connectThat client only
Global push "route ..."Sent to every client that accepts pushed optionsAll pulling clients
Client-specific pushSent to the matching client contextOne identity
Server config route, no pushAdded to the server's own tableThe gateway itself

Vì sao tuyến trần trên máy chủ khiến người ta ngạc nhiên

Cấu hình máy chủ là nơi quản trị viên nhìn trước tiên, và một chỉ thị tuyến ở đó được đọc như một tuyên bố về mạng VPN. Không phải vậy. OpenVPN coi nó là một bản cài tuyến cục bộ trên máy chạy daemon, đúng loại thay đổi bạn sẽ làm với ip route rồi quên đi.

Phân phối đòi hỏi tuyến được push, và push đòi hỏi máy khách kéo nó. Một máy khách khởi động với các tùy chọn kéo bị tắt sẽ bỏ qua hoàn toàn đề nghị. Hãy kiểm tra cả hai đầu của cái bắt tay đó trước khi viết lại tệp máy chủ, vì nhật ký máy chủ sẽ không phàn nàn: từ phía nó, đề nghị đã được gửi. Một tuyến được chấp nhận cũng chỉ có hiệu lực ở lần kết nối tiếp theo, không bao giờ trong phiên bạn đang ở.

Khi bạn thấy hai việc là riêng biệt, sự cố không còn bí ẩn: máy chủ đến được tiền tố, máy khách thì không, và cả hai phát biểu đều đúng cùng lúc.

Tệp riêng cho từng máy khách và danh tính chúng khớp

Tệp riêng cho máy khách được đặt tên theo danh tính mà máy chủ đã xác thực, mặc định là tên chung của chứng chỉ. Tên kết nối thân thiện trong máy khách máy tính để bàn không phải giá trị đó, và sự không khớp tạo ra một tệp không bao giờ được đọc.

Hãy kiểm tra thư mục mà máy chủ thực sự dùng, rồi xác nhận tên tệp khớp chính xác với danh tính đã xác thực, kể cả chữ hoa và chữ thường.

grep -n 'client-config-dir' /etc/openvpn/server/server.conf
ls -l /etc/openvpn/ccd/

Bên trong tệp đó, tuyến vẫn phải được push, vì ngữ cảnh cho từng máy khách là một tập tùy chọn áp dụng cho phiên của máy khách đó, không phải bảng định tuyến cục bộ. Một tuyến trần ở đó có cùng vấn đề như tuyến trần trong tệp toàn cục.

Tệp riêng của máy khách và công cụ sở hữu nó

Một tuyến đặt trong cấu hình máy khách được cài khi máy khách đó kết nối và bị gỡ khi ngắt kết nối, đúng vòng đời cho một đích tĩnh.

Nếu một trình quản lý mạng sở hữu hồ sơ, nó có thể nhập các tùy chọn đó một lần rồi giữ bản sao của riêng mình. Sửa tệp đã tải xuống sau đó không thay đổi gì, đây là nguyên nhân phổ biến của "tuyến có đó nhưng không áp dụng".

Hãy kiểm tra hồ sơ đang hoạt động thay vì tệp bạn đã tải, và kiểm tra các cài đặt đã nhập mà trình quản lý hiển thị. Sau đó kết nối và hỏi hệ thống xem một địa chỉ cụ thể dùng đường nào, thay vì cho rằng đường hầm đã thắng vì tuyến có trong một tệp văn bản.

Xác minh trên máy khách, rồi kiểm tra đường về

Hỏi bảng định tuyến của chính máy khách về đích, không phải bảng của máy chủ. Một lần tra cứu một máy chủ trong tiền tố là đủ để cho thấy giao diện và bước nhảy tiếp theo sẽ được dùng.

ip route get 10.60.0.10

Nếu tra cứu chỉ vào đường hầm, phân phối đã hoạt động và vấn đề còn lại ở nơi khác. Nếu nó chỉ vào cổng mặc định, tuyến chưa được cài, bị lọc bởi một tùy chọn phía máy khách, hoặc thuộc về một hồ sơ mà máy khách không dùng.

Giả sử phân phối đã hoạt động và vẫn không có gì phản hồi: khi đó hãy kiểm tra chuyển tiếp trên cổng, tuyến về của phía bên kia và bất kỳ tường lửa nào giữa chúng. Tuyến chọn một đường, nó không cấp quyền truy cập.

Bài viết liên quan