Chuyển tiếp lưu lượng SMB không phải cùng một việc như kết thúc nó, và một router làm được việc này có thể không xử lý được việc kia. Chuyển tiếp nghĩa là router di chuyển các gói mà nó không bao giờ phân tích nội dung. Gắn kết nghĩa là router trở thành máy khách tệp, với phần mềm mà nó có thể không có, thông tin xác thực mà nó phải bảo vệ và các chế độ lỗi giờ thuộc về nó. Chọn giữa hai cách là câu hỏi về nơi cần tệp, không phải về việc có thể thuyết phục nền tảng định tuyến cài đặt gì.

Chuyển tiếp và kết thúc là hai công việc khác nhau

Trong vai trò chuyển tiếp, router có một trách nhiệm: chuyển gói giữa máy khách và máy chủ trong khi áp dụng chính sách mà đường đi yêu cầu. Nó không xác thực với ổ chia sẻ, không lưu đệm dữ liệu tệp và không quan tâm máy chủ nói SMB2 hay SMB3, vì nó không bao giờ đọc sâu đến thế trong luồng. Nếu ổ chia sẻ không truy cập được, người dùng thấy lỗi và router vẫn tiếp tục định tuyến.

Trong vai trò máy khách, router tham gia cuộc trò chuyện của giao thức. Nó thương lượng một phương ngữ, xác thực, phân giải tên, giữ một điểm gắn kết và trình bày một góc nhìn hệ thống tệp cục bộ cho mọi thứ chạy bên trên. Đây là dịch vụ thực sự có vòng đời, và nó biến cổng thành một phụ thuộc của luồng công việc tệp. Nó cũng thừa hưởng mọi chế độ lỗi của phụ thuộc đó, gồm cả chờ đợi lúc khởi động và thông tin xác thực cũ.

Sự so sánh không chỉ về khả năng. Một nền tảng gắn kết được ổ chia sẻ không tự động là nền tảng nên làm vậy, và một nền tảng không gắn kết được cái nào vẫn có thể là nơi đúng để định tuyến lưu lượng.

Một lần gắn kết CIFS trong nhân thực sự cần gì

Trên thiết bị dựa trên Linux, máy khách CIFS trong nhân và máy khách không gian người dùng là hai khả năng riêng, và ảnh nhỏ thường không có cả hai. Hỗ trợ nhân phải có trong ảnh đang chạy, trình trợ giúp gắn kết phải tồn tại, và phương ngữ SMB thương lượng với máy chủ phải là phương ngữ cả hai bên chấp nhận. Điều đó được hướng dẫn máy khách CIFS của Linux mô tả, tức cách bố trí nhân và các tùy chọn gắn kết, và đây là tài liệu tham chiếu đúng trước khi cho rằng bản dựng của nhà cung cấp có nó.

Hãy kiểm tra khả năng trước khi thiết kế quanh nó, và kiểm tra phiên bản chứ không phải sự tồn tại của tên lệnh. Tên mô-đun trong danh sách gói không giống một máy khách đang hoạt động.

lsmod | grep -w cifs
modinfo cifs | head -5
mount.cifs --version
smbclient -L //fs02.corp.internal -U svc-router -m SMB3

Mô-đun nhân được nạp và công cụ không gian người dùng báo phiên bản vẫn chưa bảo đảm một lần gắn kết sống sót qua việc đổi khóa VPN, nên hãy coi thử nghiệm là điều kiện xuất phát, không phải bằng chứng. Nếu ảnh chỉ cung cấp hỗ trợ SMB1, đó là lý do để dừng lại, không phải lý do để bật nó trên máy chủ.

Thông tin xác thực và danh tính nguồn khác với của máy tính xách tay

Yêu cầu được chuyển tiếp mang danh tính của máy tính xách tay qua đường hầm, trong khi yêu cầu sinh ra trên router mang địa chỉ nguồn của chính nó, đường của trình phân giải và việc lọc đầu ra. Chúng có thể rơi vào một quy tắc tường lửa khác, một góc nhìn DNS khác và một danh sách cho phép khác phía máy chủ. Vì vậy một bản sao chạy từ trạm làm việc không chứng minh gì về lần gắn kết của chính router. Hãy thử gắn kết từ chính shell của router, không phải từ trạm làm việc phía sau nó.

Cấp cho router một danh tính dịch vụ được ủy quyền hẹp nếu vai trò đó được chấp thuận. Đừng bao giờ đặt mật khẩu trực tiếp trong dòng lệnh gắn kết, vì nó nằm lại trong lịch sử shell và xuất hiện trong bảng tiến trình khi lần gắn kết đang chạy.

Lưu thông tin xác thực qua cơ chế được bảo vệ của nền tảng và đọc từ tệp có quyền hạn chế. Tệp đó phải không đọc được với mọi tài khoản trừ tài khoản chạy lần gắn kết.

install -m 600 /dev/null /etc/cifs-reports.creds
printf 'username=svc-router\npassword=REPLACE_ME\ndomain=CORP\n' > /etc/cifs-reports.creds
mount -t cifs //fs02.corp.internal/reports /mnt/reports -o credentials=/etc/cifs-reports.creds,vers=3.1.1,ro

Lỗi thuộc về ai khi ổ chia sẻ biến mất

Hệ thống tệp từ xa vắng mặt hành xử khác với một tuyến đường vắng mặt. Một lần gắn kết có thể chặn các tiến trình chạm vào nó, có thể thất bại lúc khởi động trước khi đường hầm tồn tại, và một lần ghi dành cho máy chủ có thể rơi vào chỗ sai nếu có thư mục cục bộ nằm dưới điểm gắn kết. Đó là các lỗi lưu trữ mà giờ thuộc về nhóm mạng, dù nhóm có muốn hay không. Không ai đồng ý với quyền sở hữu đó, nhưng nó đến cùng lần gắn kết.

Hãy thiết kế thứ tự khởi động và các tùy chọn gắn kết quanh thực tế đó. Một lần gắn kết chỉ đọc với thời gian chờ ngắn và bước phục hồi được ghi lại dễ bảo vệ hơn một lần gắn kết ghi được mà mọi thứ khác phụ thuộc vào. Hãy xác nhận đường hầm lên trước khi bất cứ thứ gì thử gắn kết, nếu không lần khởi động đầu sau khi mất điện sẽ bị treo.

Với xử lý tệp quy mô lớn, hoặc với bất cứ thứ gì xuất lại dữ liệu đi tiếp, một máy chủ riêng thường cho ranh giới sở hữu rõ ràng hơn. Router tiếp tục định tuyến, và luồng công việc tệp có một máy có thể khởi động lại mà không mang theo mạng.

Hãy kiểm tra quyết định với công việc thực tế

Ghi lại công việc nào cần tệp và công việc đó chạy ở đâu. Nếu câu trả lời là một trạm làm việc, hãy định tuyến ổ chia sẻ và dừng ở đó. Nếu câu trả lời là một dịch vụ trên thiết bị, hãy xác nhận khả năng của máy khách, phương ngữ được hỗ trợ và đường của thông tin xác thực trước lần gắn kết đầu, rồi quyết định xem thiết bị có thực sự là máy chủ đúng.

Hãy kiểm tra góc nhìn đã gắn kết và dung lượng trống từ chính router, vì đó là nơi khối lượng công việc sẽ thấy chúng. Lặp lại việc kiểm tra sau khi kết nối lại, không chỉ sau một lần khởi động sạch.

findmnt -t cifs -o TARGET,SOURCE,OPTIONS
df -h /mnt/reports
ls -l /mnt/reports | head

Một lần gắn kết liệt kê tệp nhưng báo hệ thống tệp đầy hoặc chỉ đọc đã cho bạn biết sẽ gặp lỗi nào lúc 2 giờ sáng. Hãy xác nhận cả đường phục hồi: tháo gắn kết sạch, hạ đường hầm xuống, đưa lên lại và gắn kết lại mà không khởi động lại thiết bị. Nếu trình tự đó cần một ca hỗ trợ mỗi lần, router là nơi sai cho vai trò máy khách.

Bài viết liên quan