clientaddr là một trong những tùy chọn gắn kết bị sao chép vào dòng lệnh rất lâu sau khi lý do của nó đã biến mất. Nó cho máy chủ NFSv4.0 biết gọi lại máy khách ở đâu. Nó không chọn máy chủ, không gắn mỗi yêu cầu với một địa chỉ nguồn và không đẩy lưu lượng vào một đường hầm. Trên một máy tính xách tay có nhiều địa chỉ, để quyết định xem nó có áp dụng không cần ba câu hỏi.

Ba điều kiện quyết định tùy chọn có quan trọng hay không

Điều thứ nhất là phiên bản phụ đã thương lượng, vì 4.1 và 4.2 xử lý các lần gọi lại khác nhau. Điều thứ hai là liệu máy chủ có đến được địa chỉ bạn sẽ công bố hay không; một đường hầm có định tuyến thường cho phép điều đó và một đường đi đã dịch thường không. Điều thứ ba là liệu lỗi bạn đang theo đuổi có phải là lỗi gọi lại hay không.

ConditionIf yesIf no
Version is 4.0The option can matterSkip it; inspect the session instead
Server can reach the addressAdvertise itFix reachability first
Failure is a callbackDiagnose callback pathLook at mount and export

Trả lời chúng sai thứ tự là cách mọi người thêm một địa chỉ gọi lại vào một lần gắn kết 4.2 rồi kết luận rằng tùy chọn bị hỏng.

Đọc phiên bản phụ trước

nfsstat -m

Với một lần gắn kết hiện có, lệnh này in thông tin và cờ của lần gắn kết, bao gồm phiên bản hiệu lực dưới dạng vers=4.0, vers=4.1 hoặc vers=4.2. Một ghi chú chỉ nói “NFSv4” bỏ qua chi tiết duy nhất quyết định tùy chọn này có liên quan hay không. Hãy đọc con số, không phải từ ngữ.

Nếu chuỗi phiên bản đến từ giá trị mặc định của máy chủ chứ không phải từ dòng lệnh của bạn, hãy hỏi phiên bản phụ nào đã được thương lượng. Máy chủ có thể từ chối một phiên bản phụ cao hơn và lùi lại, và chính sự lùi đó là trường hợp lần gọi lại đột nhiên quan trọng. Dòng gắn kết bạn viết có thể không mô tả lần gắn kết bạn đang có.

Với 4.0, hãy công bố một địa chỉ mà máy chủ có thể đến

Máy chủ NFSv4.0 có thể cần một kết nối riêng quay về máy khách, ví dụ khi nó thu hồi một ủy quyền. Với nhiều giao diện hoặc một bảng định tuyến bất thường, việc tự động phát hiện địa chỉ gọi lại có thể chọn một địa chỉ mà máy chủ không dùng được.

mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share

Địa chỉ trước dấu hai chấm là máy chủ và vẫn là đích. Địa chỉ gọi lại thuộc về máy khách, và nó phải đến được từ phía máy chủ của đường hầm. Địa chỉ vòng lặp quay máy chủ trở lại chính nó. Một địa chỉ máy khách riêng không có đường quay về cũng vô dụng như vậy, dù trên máy khách nó trông có vẻ đúng.

Hãy dùng điều này như một ví dụ, không phải lý do để hạ cấp một lần gắn kết đang hoạt động. Thay địa chỉ và đường xuất, và giữ lại phần xác thực cùng các tùy chọn khác mà máy chủ yêu cầu. Bỏ chúng đi để một ví dụ vừa khớp là một thay đổi khác với kết quả khác, và trên một máy chủ bắt buộc một kiểu bảo mật, nó thất bại trước khi bất kỳ lần gọi lại nào được thử.

4.1 và 4.2 không dùng tùy chọn này

Linux NFSv4.1 và 4.2 mang các lần gọi lại qua những kết nối do máy khách thiết lập, và 4.1 gọi cơ chế đó là backchannel. Chúng không phụ thuộc vào việc máy chủ mở một kết nối mới đến một địa chỉ được công bố, nên clientaddr không sửa được đường gọi lại của 4.1 hay 4.2.

Điều đó không có nghĩa là 4.1 và 4.2 không gặp vấn đề gọi lại. Nó có nghĩa là chẩn đoán khác: hãy kiểm tra phiên đã thiết lập và trạng thái backchannel của nó thay vì tìm một cổng gọi lại đi vào mà lẽ ra không bao giờ tồn tại. Một quy tắc đi vào bị thiếu là trạng thái mong đợi, không phải lỗi cần sửa.

Tách lỗi gắn kết khỏi lỗi gọi lại

Trước tiên hãy xác định liệu máy khách có đến được dịch vụ NFS và máy chủ có chấp nhận đường xuất cùng yêu cầu xác thực hay không. Thời gian chờ trước lần trao đổi đó không nói gì về địa chỉ gọi lại. Thay đổi một thứ trong khi lần gắn kết vẫn thất bại không đưa cuộc điều tra gần hơn, và nó giấu lỗi ban đầu sau một tùy chọn gắn kết mới.

Chỉ khi bằng chứng cho thấy một lần gọi lại 4.0 thất bại thì địa chỉ được công bố mới quan trọng, cùng với đường quay về của máy chủ, trình lắng nghe phía máy khách và mọi bộ lọc ở giữa. Thay đổi con số trong tùy chọn gắn kết không thể tạo ra những đường đó; nó chỉ có thể chỉ tới một đường đã tồn tại. Hãy ghi lại bạn đã kiểm chứng đường nào trong bốn đường đó, vì báo cáo tiếp theo sẽ đến mà không có đường nào.

Gốc NFS khi khởi động sớm là một môi trường riêng với các điều kiện tiên quyết của nó: initramfs cần công cụ và mạng trước khi lần gắn kết có thể xảy ra. Một lần gắn kết hoạt động sau khi đăng nhập không chứng minh gì về trình tự đó, và lỗi khi khởi động hiếm khi nhắc đến initramfs hay mạng.

Bài viết liên quan