Bookmark

Chia sẻ ổ USB qua Samba trên OpenWrt: cấu hình, firewall và xử lý lỗi

Samba trên OpenWrt phù hợp khi tôi muốn chia sẻ HDD/SSD/flash đã mount cho máy Windows, Linux hoặc macOS trong LAN. OpenWrt cũng có ksmbd cho SMBv3 với ít tính năng hơn và ít tốn tài nguyên hơn; bài này tập trung vào quy trình luci-app-samba4 trong tài liệu chính thức.[26]

Điều kiện trước khi cài

Ổ USB/eSATA phải có driver, filesystem và mount point trước. Một bộ package thường dùng là:[26]

1
2
3
USB drivers: kmod-usb3 kmod-usb-storage-uas usbutils block-mount mount-utils
Filesystems: kmod-fs-ext4 e2fsprogs kmod-fs-exfat exfat-fsck kmod-fs-ntfs3
Drive idle: luci-app-hd-idle

Trong LuCI, mount drive ở System → Mount Points, bật entry, bấm Save & Apply và có thể cần Generate Config. Ghi lại mount point, ví dụ /dev/sda1 thành /mnt/sda1. Trang nguồn khuyến nghị ít nhất 128 MB RAM; máy ít RAM có thể cần thêm 128–256 MB swap.[26]

Cài và tạo share cơ bản

  1. Cài luci-app-samba4; các dependency như samba4-server sẽ được kéo theo.[26]
  2. Vào Services → Network Shares trong LuCI.[26]
  3. Dùng cấu hình khởi đầu sau:[26]
TrườngGiá trị mẫu
Interfacelan
WorkgroupWORKGROUP
Enable Extra TuningBật; tắt nếu dùng Apple Time Machine
Shared DirectoriesBấm Add
Nametên thư mục share
Path/mnt/sda1 hoặc mount point thật
Browseablebật
Read-onlytắt nếu cần ghi
Force Rootchỉ bật khi LAN tin cậy
Allowed userstùy chọn, khi dùng tài khoản
Allow guestsbật nếu không dùng tài khoản
Create Mask0666
Directory Mask0777

Bấm Save and Apply. Nếu cấu hình đúng, máy khách trong LAN có thể đọc/ghi share; ví dụ Windows mở \\192.168.1.1\\storage\\. Tôi không đưa Samba trực tiếp ra Internet chỉ để tiện truy cập.[26]

Tài khoản riêng thay cho guest

Nếu không muốn cho guest:[26]

  1. Tạo entry người dùng trong /etc/passwd/etc/group.[26]
  2. Chọn UID/GID từ 1000 trở lên để tránh vùng reserved.[26]
  3. Đặt mật khẩu Samba tại terminal bằng smbpasswd -a username; mật khẩu nhập tương tác, không ghi vào bài hoặc repository.[26]
  4. Thêm user vào ô LuCI → Network Shares → Allowed users, rồi Save & Apply.[26]

Ví dụ entry an toàn về mặt minh họa:[26]

1
2
3
4
5
# /etc/passwd
foo:x:1001:1001:smb user:/dev/null:/bin/false

# /etc/group
foo:x:1001:foo

Dùng chown/chmod để cấp quyền đúng nhu cầu. Tài khoản lạ có thể bị map thành guest theo mặc định, vì vậy tôi kiểm tra cả quyền filesystem lẫn ACL của Samba.[26]

Sửa nâng cao ngoài UCI

Sau khi sửa file cấu hình, restart để sinh lại /etc/samba/smb.conf:[26]

1
service samba4 restart

LuCI/UCI sẽ tạo lại cấu hình từ /etc/config/samba/etc/samba/smb.conf.template. Nếu thật sự cần tự quản lý smb.conf vượt quá UCI:[26]

1
service samba4 disable

Thêm vào /etc/rc.local:[26]

1
2
smbd -D
nmbd -D

Cách này khiến tôi tự chịu trách nhiệm với file cấu hình và startup; thay đổi từ UCI có thể ghi đè ở lần boot sau.[26]

Share cho Apple Time Machine

Trong Services → Network Shares, tạo share riêng với các lựa chọn quan trọng:[26]

  • Interface lan, Workgroup WORKGROUP.[26]
  • Enable Extra Tuning tắt; Force synchronous I/o tắt.[26]
  • Enable macOS compatible shares bật.[26]
  • Allow legacy (insecure) protocols/authentication tắt; Disable netbios tắt.[26]
  • Shared directory: name tùy chọn, path như /mnt/sda1, Browseable bật, Read-only tắt.[26]
  • Force Root chỉ dùng khi LAN an toàn; ưu tiên user riêng.[26]
  • Allow users chỉ định user; Allow guests tắt.[26]
  • Create Mask 0600, Directory Mask 0700, Vfs objects tắt.[26]
  • Apple Time-machine share bật; giới hạn GB có thể để trống hoặc đặt giá trị.[26]

Lưu ý Enable Extra Tuning cần tắt cho các bản macOS hiện tại theo tài liệu; không tự thêm service avahi nếu OpenWrt không cần.[26]

Kiểm tra truy cập và startup

Nếu share không mở được, xem /etc/samba/smb.conf.template, filesystem driver và mount point. Có thể thử security từ user sang share, restart daemon, rồi:[26]

  • Windows Explorer: \\router_ip[26]
  • Nautilus/Dolphin: nhấn <CTRL>+<L>, nhập smb://router_ip/[26]

Sau khi cài package, xác nhận tại LuCI → System → Startup. Từ CLI:[26]

1
2
service samba4 enable
service samba4 start

Nếu share không xuất hiện trong Network của Windows, cài wsdd2.[26]

Không ghi được vào share

Đầu tiên kiểm tra quyền thư mục và user. Tài liệu đưa cách thử sau, nhưng 777 mở toàn quyền nên tôi chỉ dùng để chẩn đoán trong LAN tin cậy rồi thu hẹp lại:[26]

1
2
chmod -R 777 /mnt/sda1
chown -R nobody /mnt/sda1

Nếu mount qua fstab, có thể kiểm tra option:[26]

1
2
3
4
5
6
7
config 'mount'
        option 'options' 'rw,umask=000'
        option 'enabled_fsck' '0'
        option 'enabled' '1'
        option 'device' '/dev/scsi/host0/bus0/target0/lun0/part1'
        option 'target' '/mnt/usbdisk'
        option 'fstype' 'vfat'

Tôi không dùng umask=000 lâu dài trên mạng có client không tin cậy.[26]

Ký tự quốc tế và firewall LAN

Nếu tên file có ký tự có dấu không đọc/ghi được:[26]

1
sed -i -e "/unix charset/s/ISO-8859-1/UTF-8/" /etc/samba/smb.conf.template

Sau đó restart Samba. Với NAT chậm, tài liệu có phương án tắt conntrack cho các cổng SMB trong LAN:[26]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uci -q delete firewall.samba_nsds_nt
uci set firewall.samba_nsds_nt="rule"
uci set firewall.samba_nsds_nt.name="NoTrack-Samba/NS/DS"
uci set firewall.samba_nsds_nt.src="lan"
uci set firewall.samba_nsds_nt.dest="lan"
uci set firewall.samba_nsds_nt.dest_port="137-138"
uci set firewall.samba_nsds_nt.proto="udp"
uci set firewall.samba_nsds_nt.target="NOTRACK"
uci -q delete firewall.samba_ss_nt
uci set firewall.samba_ss_nt="rule"
uci set firewall.samba_ss_nt.name="NoTrack-Samba/SS"
uci set firewall.samba_ss_nt.src="lan"
uci set firewall.samba_ss_nt.dest="lan"
uci set firewall.samba_ss_nt.dest_port="139"
uci set firewall.samba_ss_nt.proto="tcp"
uci set firewall.samba_ss_nt.target="NOTRACK"
uci -q delete firewall.samba_smb_nt
uci set firewall.samba_smb_nt="rule"
uci set firewall.samba_smb_nt.name="NoTrack-Samba/SMB"
uci set firewall.samba_smb_nt.src="lan"
uci set firewall.samba_smb_nt.dest="lan"
uci set firewall.samba_smb_nt.dest_port="445"
uci set firewall.samba_smb_nt.proto="tcp"
uci set firewall.samba_smb_nt.target="NOTRACK"
uci commit firewall
service firewall restart

Truy cập từ xa: không phải lựa chọn mặc định

Trang nguồn có mẫu rule ACCEPT cho các cổng SMB. Tôi chỉ xem đây là phương án đặc biệt trong mạng được kiểm soát; Samba/NAS thường nên giữ trong LAN hoặc đi qua VPN. Không mở 137–139/445 ra Internet nếu chưa hiểu rõ rủi ro cập nhật và xác thực:[26]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uci -q delete firewall.samba_nsds
uci set firewall.samba_nsds="rule"
uci set firewall.samba_nsds.name="Allow-Samba/NS/DS"
uci set firewall.samba_nsds.src="lan"
uci set firewall.samba_nsds.dest_port="137-138"
uci set firewall.samba_nsds.proto="udp"
uci set firewall.samba_nsds.target="ACCEPT"
uci -q delete firewall.samba_ss
uci set firewall.samba_ss="rule"
uci set firewall.samba_ss.name="Allow-Samba/SS"
uci set firewall.samba_ss.src="lan"
uci set firewall.samba_ss.dest_port="139"
uci set firewall.samba_ss.proto="tcp"
uci set firewall.samba_ss.target="ACCEPT"
uci -q delete firewall.samba_smb
uci set firewall.samba_smb="rule"
uci set firewall.samba_smb.name="Allow-Samba/SMB"
uci set firewall.samba_smb.src="lan"
uci set firewall.samba_smb.dest_port="445"
uci set firewall.samba_smb.proto="tcp"
uci set firewall.samba_smb.target="ACCEPT"
uci commit firewall
service firewall restart

Discovery trên macOS và hiệu năng tham khảo

Để hỗ trợ discovery kiểu WINS, sửa /etc/samba/smb.conf.template qua Services → Network Shares → Edit Template, trong [global]:[26]

1
2
3
4
5
6
7
[global]
        domain master = yes
        local master = yes
        name resolve order = wins lmhosts hosts bcast
        os level = 99
        preferred master = yes
        wins support = yes

Có thể quảng bá địa chỉ WINS qua DHCP:[26]

1
2
3
uci add_list dhcp.lan.dhcp_option="44,$(uci get network.lan.ipaddr)"
uci commit dhcp
service dnsmasq restart

Các số đo tham khảo mà nguồn liệt kê không phải benchmark chung cho mọi router:[26]

Thiết bị/điều kiệnĐọcGhi
WRT3200ACM, USB3 NTFS, LAN 1Gb, OpenWrt 23.05100 MB/s110 MB/s
GL-MT6000, USB3 exFAT, LAN 1Gb, OpenWrt 24.1085 MB/s115 MB/s
N100, USB3 exFAT, LAN 1Gb, OpenWrt 24.10120 MB/s120 MB/s

Checklist xử lý lỗi

  • ps auxsmbd -Dnmbd -D chưa?[26]
  • Đã tạo user và thêm vào Allowed users chưa?[26]
  • Đã chạy service samba4 restart sau khi sửa chưa?[26]
  • Filesystem driver của ổ đã có và partition đã mount chưa?[26]
  • Có thể chạy fsck.exfat /dev/sda1 sau khi unmount không?[26]
  • Firewall có cho client LAN tới service không?[26]

Nguồn

Tài liệu gốc: [Samba]1, đăng/cập nhật 2026-08-18.[26]

[26] https://openwrt.org/docs/guide-user/services/nas/cifs.server — OpenWrt Wiki: Samba


0 Bình luận

Góp Ý / Bình Luận / Đánh giá