Samba局域网内数据共享服务是OpenWrt系统非常常规的一个应用。家庭内部总有一些图片、视频等内容是希望家庭内部成员之间可以自由共享的,但要是每个人的电脑、手机、平板电脑等电子设备都去存储这些数据,那就太浪费时间及存储空间了,而Samba服务就可以很好地解决这个问题,原则上你家里只要有一个安装有OpenWrt系统的路由器就行。将需要共享的数据先存储在路由器上,然后再通过路由器上的Samba服务分享给所有人,但由于路由器自身的存储空间有限,因此最好是选路由器带USB口的,可以通过USB口来外挂存储空间。
下面就以TL-WR720N-V3为例,讲解Samba服务的具体实现过程:
注:选择WR720N,一是因为要说明即使采用这么老式的路由器,在刷OpenWrt系统后Samba服务也能得到很好的体现;二是在这么早期的路由器中还很少有带数据USB口的,使用WR720N可以解决Samba服务的外挂存储空间问题。当然如果你愿意折腾,你也可以选择WR710N,它也带USB口,但它的USB只接了电源信号,没有数据信号,需要通过刮U接出数据线才可以实现外挂存储空间的目的,对于初学者者有一定的难度。我个人比较喜欢这两款路由器的另一个原因,是它们都特别小巧,便于你出差时携带。两款路由器都自带可折叠隐藏式电源插座,WR720N还带Micro-usb电源输入口,没有220V电源时通过便携式充电宝给路由器供电也能正常运行。因此也有人在硬改WR710N时会想着也加上Micro-usb电源口,确实非常适合经常出差的人员使用。
一、硬改及刷机简要过程(其它部分可参考WR886N-V5的硬改及刷机过程)。
1、先换上64M内存条(注:与WR710N不同,这里的R66处22欧电阻原板已有,不需要添加),确认开机没问题后再焊下Flash;
2、将焊下的Flash放到简易编程器上,读出原固件所有数据,然后通过原固件文件读出ART数据,再制作出新的ART文件;
3、拿一个新的16M Flash,写入AR9331 for WR710N的Breed程序,然后将新Flash焊回原电路板;
4、启动WR720N,在浏览器输入192.168.1.1进入Breed管理界面;
5、修改MAC地址;选中升级固件(注:就下载WR710N-V1的OpenWrt最新固件即可);选中并输入新生成的ART文件;
6、重启完成后就可以进入如下OpenWrt系统的Luci界面了。
二、添加USB支持
1、安装USB驱动
opkg update opkg install kmod-usb-core kmod-usb2
2、安装USB存储器支持
opkg install kmod-usb-storage kmod-usb-storage-uas
3、安装USB诊断工具
opkg install usbutils
1)未插USB盘时测试
lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
2)插上U盘或USB移动硬盘后测试
lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
4、设置系统自动加载
opkg install block-mount mount-utils
1)如果使用的U盘或USB移动硬盘的数据格式是Linux常用的,如:ext3、ext4等;
block info | grep "/dev/sd"
/dev/sda1: UUID=”2eb39413-83a4-4bae-b148-34fb03a94e89″ VERSION=”1.0″ TYPE=”ext4″
后续可以在Luci界面的“System – Mount Points”上进行自动挂载设置。
2)如果使用的U盘或USB移动硬盘的数据格式是Windows常用的,如:ntfs;
opkg install kmod-fs-ntfs ntfs-3g
〉设置启动时自动挂载
vim /etc/rc.local
增加如下语句:
sleep 3 ntfs-3g /dev/sda1 /mnt/sda1 -o rw,sync
注:如果重启后挂载不成功,则先在/mnt目录下创建sda1子目录;另外,如果一个盘中有多个分区,那么其它分区也要挂载,如sda2、sda3 …
mkdir /mnt/sda1
〉设置U盘或移动硬盘热拔插时自动卸载或挂载
vim /etc/hotplug.d/block/10-mount
将原内容删除或注释掉,然后增加如下内容:
#!/bin/ash function do_mount() { DEV=`ls /dev | grep 'sd[a-z][1-9]'` for i in $DEV do disk=`ls /mnt | grep $i` if [ -z "$disk" ] then mkdir -p /mnt/$i isntfs=`fdisk -l | grep $i | grep NTFS` if ["$isntfs" = ""] then mount -o iocharset=utf8,rw /dev/$i /mnt/$i if [ $? -ne 0 ] then mount -o rw /dev/$i /mnt/$i fi else ntfs-3g -o iocharset=utf8,rw /dev/$i /mnt/$i if [ $? -ne 0 ] then ntfs-3g -o rw /dev/$i /mnt/$i fi fi fi done } function do_unmount() { MNT=`ls /mnt | grep 'sd[a-z][1-9]'` for i in $MNT do SHE=`ls /dev | grep $i` if [ -z "$SHE" ] then umount -f /dev/$i rm -rf /mnt/$i fi done } case "$ACTION" in add) do_mount ;; remove) do_unmount ;; esac #/sbin/block hotplug
通过以上的设置,当U盘或USB移动硬盘插入时,我们就可以在/mnt/sda1目录下看到盘里面的数据了。
5、从安全考虑,建议为USB大容量移动硬盘再添加自动休眠保护
opkg install hdparm hdparm -S 240 /dev/sda1 #设置空闲时间超过20分钟(240*5S)即自动休眠
或
opkg install luci-app-hd-idle #设定时间请进入Luci界面,点 ”Services - HDD Idle“进入设置页
三、安装及设置Samba服务
1、安装Samba服务,目前有两个版本可供安装。如果Flash空间小,就只能安装Samba36,像我这个硬改成16MFlash的WR720N,就无法安装Samba4。
opkg install samba36-server luci-app-samba 或 opkg install samba4-server luci-app-samba4
2、Samba服务设置(以Samba36为例)
浏览器到Luci界面,点击“Services – Network Shares”就可以进入Samba服务的设置页面了
先点“Edit Template”,进入模板的编辑状态
将其中的 “invalid users = root” 注释掉;将 “max protocol = SMB2” 改为 “max protocol = NT1” ;然后再添加要共享的目录,并设置权限,如下图所示:
设置保存后重启路由器,然后再设置共享目录允许访问用户root的访问密码:
smbpasswd -a root
这样,所有的设置过程就算完成了。与该路由器连接的电脑、平板电脑、手机、网络机顶盒等都可以通过文件浏览器或具有局域网访问功能的程序直接访问共享目录了。
以电脑为例,打开Windows系统的资源管理器,点“网络”后,输入“\\192.168.1.1″,点回车就会出现要求输入root访问用户密码的界面:
输入密码后,点”确定“就可以进入共享目录了。
大功告成!!其它像平板电脑、手机、网络机顶盒的共享连接就让大家自己去慢慢摸索吧,Samba服务是局域网中非常基础的服务,大部分的设备都可以支持。Samba服务的优点是其在局域网内连接稳定、速度快,但是不足的是它在外网访问时,设置非常复杂并且连接速度特别慢。要享受完美的外网共享服务,你还是需要搭建NAS系统,这在以后的章节中我们会涉及。
另外,除OpenWrt系统外,你也可以在别的系统上部署Samba服务,具体可参考Samba官网 https://www.samba.org/ 的内容。