单线多拨在OpenWrt系统中的实现

本文我们要讲解单线多拨在OpenWrt系统中的实现方法。在前面讲解mwan3应用时我们有讲到单线多拨的情况,即利用一路WAN物理口,来实现多拨的效果。在家庭宽带早期,带宽非常有限,宽带供应商对同账号多拨的情况也限制得不是太严厉,这时通过单线多拨及负载均衡应用,假设原宽带是20M的,同时允许你拨号5次的话,理论上我们就可以将带宽提升到100M,因此在前期这种应用还是非常吃香的。现在宽带的带宽已能满足大部分的家庭使用场景,而且供应商也限制了多拨的次数,有些干脆就不允许了,也有些允许2次,但限制2次多拨的带宽叠加不超过你所申请的带宽,因此这种应用在近几年的使用场景就变得越来越少了,但是做为一种技术储备,我还是想把它分享给大家。

一、安装

安装macvlan应用,将一个WAN物理接口虚拟出多个接口来,然后再用于建立多个WAN口。

root@OpenWrt:~# opkg update

root@OpenWrt:~# opkg install kmod-macvlan

二、配置

1、先删除原先的wan及wan6接口

在OpenWrt系统的Luci界面,点“Network – Interfaces”进入网络接口设置界面:

单线多拨在OpenWrt系统中的实现-1

分别点“Delete”按钮将wan、wan6接口删除(注:删wan、wan6时要将物理接口名称记下),再点“Save & Apply”按钮保存并应用:

单线多拨在OpenWrt系统中的实现-2

2、以原先wan口的物理接口为基础,虚拟出多个网络接口

以我的TL-WR720N为例,原物理接口名称是eth0,我们利用macvlan虚拟出两个网络接口,分别命名为veth1和veth2。

root@OpenWrt:~# ip link add link eth0 name veth1 type macvlan

root@OpenWrt:~# ifconfig veth1 up

root@OpenWrt:~# ip link add link eth0 name veth2 type macvlan

root@OpenWrt:~# ifconfig veth2 up

然后可以输入如下命令,看看veth1、veth2是否已经生成成功:

root@OpenWrt:~# ifconfig

单线多拨在OpenWrt系统中的实现-3

3、以新生成的虚拟接口设置多拨

在网络接口设置界面,点“Add new interfaces…”增加新接口:

单线多拨在OpenWrt系统中的实现-4

输入名称wan1,选PPPoe协议(注:其实选DHCP协议也是可以测试的),选接口veth1,再点”Create interface“按钮:

单线多拨在OpenWrt系统中的实现-5

在”General Settings“里,设置宽带拨号的账号及密码,然后再进入”Advanced Settings“:

单线多拨在OpenWrt系统中的实现-6

这里要设置metric值,再次重申这一步非常重要,如果不设置,后面mwan3配置将不起作用。然后再进入”Firewall Settings“:

单线多拨在OpenWrt系统中的实现-7

防火墙区域设置为wan,点”Save“按钮将以上所有输入保存,然后系统会自动回到Interfaces设置界面,点”Save & Apply“按钮使设置生效:

单线多拨在OpenWrt系统中的实现-8

看到没有:wan1接口通过PPPoe拨号已取得公网IP地址,显示连接成功。

同理,再利用veth2虚拟网络接口,设置wan2接口,PPPoe账号及密码与wan1一样,metric值输入20(与wan1的不一样就行),防火墙区域还是选wan,点”Save“,再点”Save & Apply“:

单线多拨在OpenWrt系统中的实现-9

设置完成后,可以看到wan2也取得了公网IP地址,而且与wan1的地址是不一样的,这表明该宽带运营商是至少支持两拨的,是否支持三拨、四拨,大家需要再增加虚拟网络接口进行测试才行,这里就不再展开了。

4、设置开机启动

按照上面的设置方法,veth1、veth2在系统重启后是不会自动产生的,因此为了保证单线多拨功能一直有效,我们需要设置开机启动。

点”System – Startup“进入开机启动设置界面,点”Local Startup“,在输入框的exit 0语句之前输入:

ip link add link eth0 name veth1 type macvlan
ifconfig veth1 up
ip link add link eth0 name veth2 type macvlan
ifconfig veth2 up

见下图:

单线多拨在OpenWrt系统中的实现-10

点”Save“保存,下次启动就OK了。

三、负载均衡

负载均衡就用mwan3应用,与多线多拨的设置方式一样,这个我们已经在前面的文章中详细讲解过了,这里就略过了。

 

OpenWrt的负载均衡及多线多拨控制应用mwan3

在家用路由器中,一般很少带负载均衡及多线多拨控制功能的,因为这些功能只在那些非常高端的路由器上才有,但你的路由器要是刷了OpenWrt系统,那要实现这些功能就非常简单了。本文我们就来讲解OpenWrt的负载均衡及多线多拨控制应用mwan3,让大家一起来享受一下这些看似很高深的功能是如何在OpenWrt环境下轻松实现的。

在实际应用中,WAN口的连接方式可以是多种多样的,就协议来说,它可以是DHCP的,也可以是PPPoe的;同样是采用PPPoe协议时,可以是单拨的,也可以是多拨的;涉及多拨时,可以是单线多拨的(即一个WAN口,多次拨号),也可以是多线多拨(即多个WAN口,多次拨号)。就传输的内容来说,可以是单播信号,也可以是组播信号,也可以是单播信号和组播信号混合传输的(即所谓的单线复用)。其中单线复用的情况我们在以后讲解“OpenWrt – 特殊应用 – IPTV”部分时会涉及到,这里略过。单线多拨的情况,虽然只存在一个物理WAN口,但是为了实现多拨功能,我们其实需要虚拟出多个WAN口来进行多拨任务,因此它比多线多拨的情况要更加复杂一些,我们留在后面的文章再讲解。今天我们主要还是讲解多线多拨的情况,另外因为有多个WAN口信号的存在(注:单线多拨情况也一样),需要对信号进行负载均衡及控制,即按一定的规则对传输的信号进行优先级及权重分配,以达到最优化使用的原则,而我们今天要讲解的mwan3应用就是为了实现这些功能而产生的。

前提条件:先设置多个WAN口

一般路由器都有1个WAN口,多个LAN口,我们需要在保留WAN口的同时,把其中一个或几个LAN变为WAN口。以Netgear R7800路由器为例,在OpenWrt系统的Luci设置界面,点“Network – Switch”进入交换机设置界面:

OpenWrt的负载均衡及多线多拨控制应用mwan3-1

从上图中,大家可以看出:在原设置下接口eth1.1所对应的交换机下,连接着LAN1、LAN2、LAN3、LAN4四个物理网口;接口eth0.2所对应的交换机下,连接着WAN物理网口。假设我们现在希望将LAN1物理网口单独拿出来也当WAN口来使用,那需要如何设置呢?请详见下图:

OpenWrt的负载均衡及多线多拨控制应用mwan3-2

首先将第一行中的,LAN1由“untagged”变更成“off“,然后再点”Add VLAN”按钮,在新增的第三行中将CPU(eth1)由“off”改为“tagged”,将LAN1由“off”改成“untagged”,最后点“Save & Apply”按钮即可。这时接口eth1.1所对应的交换机连着LAN2、LAN3、LAN4三个物理网口;接口eth0.2所对应的交换机下,还是连接着WAN物理网口没变,新增的接口eth1.3所对应的交换机连着LAN1物理网口,你可以用它来新增一个WAN口。同理如果你想新增多个WAN口,也可以将LAN2、LAN3、LAN4变为WAN来使用。

对于软路由来说上面的过程相对来说还要简单一点,因为其物理网口所对应的接口本来就是独立的,你可以在/etc/config/network里将任何一个或多个网口设置成WAN口来使用,具体我们在讲解“软路由”版块时再详细展开。

家里原先有两路宽带,一路是电信的,一路是移动的(套餐免费安装的),我曾经安装过mwan3测试过多线多拨的功能,总体效果还是可以的,但是后来我移动宽带的免费期限到了以后,我就停掉了移动宽带,而且当时设置时我也没有留下相应的过程图片等素材,所以现在讲解mwan3用多路PPPoe协议看来是条件不允许了,不过好在其基本原理是完全一样的,所以我这次准备用多路DHCP协议来代替PPPoe协议来演示mwan3的安装及配置过程,希望大家不要介意。

而且这次我们还要另辟蹊径,用TP-Link的TL-WR720N路由器来演示多线多“拨”功能的实现。前面我们已经讲过WR720N路由器只有一个WAN口和一个LAN口,唯一的一个LAN要连接电脑,不能设置用于WAN口,那怎么来实现多路DHCP协议的演示呢?“方法总比困难多”,对,想办法,就用无线作为另一个WAN口!很多人可能都要犯嘀咕了,无线当WAN口??路由器的无线不是拿来发射的吗?怎么还可以用作接收?对,就这么神奇,在OpenWrt系统中,所有的无线都可以配置成双向的,既可以是发射的(缺省状态),也可以设置成接收的。点“Network – Wireless”进入无线设置界面:

OpenWrt的负载均衡及多线多拨控制应用mwan3-3

点“Scan”查找可以连接的路由器,一步步按提示输入密码等,就可以将wlan0接口设置成WAN口,为了跟另一个WAN口区分,取名叫wwan,如下图所示(点“Network – Interfaces”:

OpenWrt的负载均衡及多线多拨控制应用mwan3-4

双WAN口设置完成,下面我们就可以进入mwan3的安装及配置过程了。

一、安装

root@OpenWrt:~# opkg update && opkg install mwan3 luci-app-mwan3

root@OpenWrt:~# reboot

二、配置

在Luci界面,点“Network – Load Balancing”(注:mwan3与其它常规应用不一样,不在Services菜单里)进入mwan3的设置界面:

OpenWrt的负载均衡及多线多拨控制应用mwan3-5

1、在Interfaces设置界面,会出现很多WAN口设置范例,你就留Name为wan的,其余的全部删除,然后再在Add输入框内输入wwan,点”Add“按钮,里面设置按wan的设置可以依葫芦画瓢。但这里有一个重要的事情要特别说明,大家看到Metric项没有,如果你在前面创建wan及wwan口没有特别设置的话,这里是不会有任何显示的。而且如果在没有显示的情况下,继续往下设置,即使后续的设置都没有问题,mwan3也无法正常运行,所以切记一定要事先设置好所有WAN口的Metric值。在哪里设置?点“Network – Interfaces”,再点wan及wwan行的”Edit“按钮,然后在“Advanced Settings”中就能发现Metric值的输入框了:

OpenWrt的负载均衡及多线多拨控制应用mwan3-6

找到“Use Gateway Metric”行,输入不同的Metric值即可,例如:wan输入10,wwan输入20。

Interfaces界面设置完成后,点“Save & Apply”保存并应用。Interfaces的设置主要用于判断要作用于mwan3的各WAN口的实时通断状态。

2、进入Members设置界面,设置mwan3要控制的WAN口成员,并且设置作用的先后顺序及权重。

OpenWrt的负载均衡及多线多拨控制应用mwan3-7

先将里面的范例全部删除,再新增wan1、wan2两个成员,分别对应wan口、wwan口,再设置两个成员的优先级,谁的优先级高,就一直用这个口的信号,除非这个口的信号断开了,才用优先级低的信号,也就是说如果设置了不同的优先级Metric值,后面Weight就会被忽略,因为优先级高的口其Weight权重值是100%。Metric值越小,其优先级越高。请注意这里的Metric值与Interfaces中我们设置的Gateway Metric值不是一回事,大家不要搞混了。上图中我设置wan1和wan2两成员的Metric值都为1,即他们的优先级是一样的,而且两成员的权重也都为1,即权重是各50%。在实际的多线多拨应用中,假设你的电信宽带是500M带宽的,移动宽带是200M带宽的,那你就可以设置电信的Weight为5,移动的Weight值为2,这样带宽高的就会被分配给更高权重的活,整个网络就会运行得更加高效。

3、进入Policies设置界面,在多个WAN口的情况下,你可能需要设置有些活是需要其中的某几个WAN口来共同完成的,就把这些WAN口放到同一个策略上,或者说某个服务就只有其中的某个WAN口能完成,那就把这个WAN口也设置成一个新的策略。

OpenWrt的负载均衡及多线多拨控制应用mwan3-8

我为了讲解方便,所以我的设置还是用最简单的。先将原先的范例全部删除干净,然后再增加一个叫balance的策略,设置这个策略要用到成员wan1,也要用到成员wan2,同时还设置其它成员是不使用的,即unreachable (Reject) 。

4、最后进入Rules设置界面,在这个界面中我们制定一些规则,即要设定具体的哪些活,例如http服务、https服务、FTP服务、Samba服务等等,交给哪个策略去完成。

OpenWrt的负载均衡及多线多拨控制应用mwan3-9

我又要偷懒了,就设置了一个rule,即将所有的服务都交给balance策略去完成。根据我们前面的设置,我们知道balance策略就wan1和wan2两个成员,即wan口和wwan口,它们将各按50%的权重去完成所有的任务。

其实Rules的设置是很复杂的,建议在删除所有范例之前,大家可以自己一个一个去研究一下其中的含义,以后再设置时就能做到心中有数了。

5、还有一个Globals全局设置界面,一般来说大家不需要去设置,保持原样就行:

OpenWrt的负载均衡及多线多拨控制应用mwan3-10

全部设置完成后,建议将路由器重启一下,然后再到Luci界面确认一下运行状态。

三、运行状态确认

mwan3专门设计了Luci形式的运行状态显示界面,点”Status – Load Balancing“就进入mwan3的运行状态显示界面,通过看里面的内容,大家就能发现mwan3到底有没有在正常运行:

1、Interface各接口运行状态

OpenWrt的负载均衡及多线多拨控制应用mwan3-11

2、运行细节Detail

OpenWrt的负载均衡及多线多拨控制应用mwan3-12

各接口都显示绿色,表明运行良好,接口一旦端口就会显示红色。wan口及wwan口的分工也很明确,权重为各50%,一切显示OK。

Ps:安装mwan3前,如果该路由器设置过DDNS,那么在多个WAN口的情况下,你还需要去DDNS设置界面设置一下,是将哪个WAN口的公网IP地址实时反馈回域名解析服务器。

 

OpenWrt系统下的动态域名解析应用DDNS

本文我们要讲解OpenWrt系统下的动态域名解析应用DDNS,不同于我们前面篇章中讲解的内网穿透应用Frp,DDNS不需要借助外部服务器的支持,通过将路由器WAN口所获得的非固定IP地址与固定域名相连,就可以实现远程对路由器进行访问及控制的目的。DDNS是Dynamic DNS的缩写,即动态域名解析,通常意义上的域名与IP地址都是一一对应的,但是对于路由器的PPPoe,每一次新的拨号(系统断电、重启、服务中断后刷新等情况)都会产生不同的IP地址,即路由器上WAN口的IP地址是经常会发生变化的,因此我们远程访问路由器时,你无法通过输入固定的IP地址来完成,因为你无法知道访问时的IP地址到底是多少。但有了DDNS,我们可以将随时变化的IP地址关联到同一个不变的域名上,然后用固定域名访问,反向解析出路由器实时的IP地址,就可以精准访问路由器了。

前提条件:

1、WAN口可获得非固定的公网IP地址,像电信、移动宽带拨号方式都可获得,联通没试过不知道行不行,华数宽带测试过不行(获得的是内网地址);

2、要有一个域名,网络上有可以免费注册的,也可以付费注册一个,一个域名一年也就几十块钱,一般都带免费解析的。

一、安装

在确认WAN口已通过PPPoe方式获得公网IP地址后(设置过程略),就可以进入Luci界面或命令行方式安装DDNS了:

WAN PPPoe

root@OpenWrt:~# opkg update

root@OpenWrt:~# opkg install ddns-scripts luci-app-ddns

将路由器重启后,就可以到Luci界面,点“Services – Dynamic DNS”进入DDNS的设置界面了:

Luci Dynamic DNS

这时你会发现设置界面仍有提示框即Hints,点“Show more…”,系统会把经检测以后需要你提前安装的应用程序信息告诉你,你按照提示将相应的应用都装好了,提示框就会消失。我这个路由器上因为以前安装了很多程序,这次只提示我要安装DNS的TCP协议支持,安装三个程序中的任一个,我就选择了安装bind-host程序。

root@OpenWrt:~# opkg install bind-host

好像还是要重启一下,然后再进入DDNS的Luci设置界面,你会发现提示框不见了:

Luci DDNS without Hints

二、详细配置

在上述Dynamic DNS的Luci设置界面,我们选”myddns-ipv4“这行,点”Edit“按钮进入详细配置页面:

DDNS Basic Settings

然后点“DDNS Service provider [IPv4]”这行的下拉款,看看自己申请的域名提供商(大部分是国外的,免费的、收费的都有)是否在列表中,如果在里面那恭喜你,直接选中,按提示进行后续的设置,过程会变得非常简单。如果没有在列表中,那么就得想办法自己添加进去,官方程序包中已有人开发了几个程序,可以通过安装程序的方式直接将相应的域名提供商添加到列表中,如图:

DDNS应用程序

官方程序包中目前能查询到的好像就Cloudflare、FreeDNS、GoDaddy这三家,如果你申请注册的域名也不是这三家,那就需要自己通过自编译应用程序来添加(这个在以后会讲解“OpenWRT – 自编译 – 应用程序自编译”),或者你还可以采用Shell脚本命令的方式。我的域名提供商是腾讯云DNSPOD,并没有包含在上述列表中,下面我就来跟大家分享一下利用Shell脚本命令方式来进行DDNS设置的全过程:

DDNS Basic Settings DNSPod e1606136502326

如上图所示,在Lookup Hostname行输入你要用于动态解析的域名,例如:****.red-yellow.net;DDNS Service provider [IPv4]处选择自定义custom;在Custom update-script行输入:/usr/bin/ddns_update.sh,当然我们需要将ddns_update.sh文件先准备好。

root@OpenWrt:~# vim /usr/bin/ddns_update.sh

输入语句:

#!/bin/sh
curl -k -X POST https://dnsapi.cn/Record.Modify -d “login_token=******,*****************&format=json&domain_id=********&record_id=********&
sub_domain=*****&value=$1&record_type=A&record_line=%e9%bb%98%e8%ae%a4”
return $?

其中curl命令中:

login_token值可进入DNSPOD的“账户中心 – 密钥管理“处获取,先输入ID值,再输入逗号,然后再输入token值

domain_id值可通过如下命令获取:

root@OpenWrt:~# opkg update && opkg install curl       #先安装curl命令

root@OpenWrt:~# curl -k -X POST https://dnsapi.cn/Domain.List -d ‘login_token=******,*****************&format=json’  #login_token值须自己输入

在反馈回的信息中,你可以很容易地发现domain_id值,当然如果你注册了多个域名,那么每个域名的ID值是不一样,别搞错了。

现在我们有了login_token值,也有domain_id值,采用如下命令就可以获得record_id值及对应的sub_domain值了:

root@OpenWrt:~# curl -k -X POST https://dnsapi.cn/Record.List -d ‘login_token=******,*****************&format=json&domain_id=********’

一般我们注册了主域名后,会使用多个子域名进行解析,上述命令会把所有子域名信息都反馈回来,但我们只须将那个用于路由器DDNS设置的子域名sub_domain值,及其对应的record_id值记录下来就可以了。

现在ddns_update.sh文件curl命令中的所有内容都清楚了,将相应值输入后保存,再将文件属性设置成可执行:

root@OpenWrt:~# chmod +x /usr/bin/ddns_update.sh

然后再回到DDNS的Basic Settings界面中,勾选Enabled,点”Save & Apply“后程序运行:

DDNS Overview OK e1606136545463

三、测试

1、远程访问路由器Luci界面

在远程浏览器地址栏输入:sub_domain.domain,例:123.red-yellow.net,但你会发现并没有出现OpenWrt的Luci界面,这主要原因是宽带运营商屏蔽了其提供的公网IP的http 80及https 443端口号,因此我们还需要做个端口转发才行,例如将远程访问的8888端口转发到80端口:

Port Forwards

然后在浏览器地址栏输入:123.red-yellow.net:8888,就可以看到OpenWrt的Luci界面了。

2、远程访问路由器的SSH服务

先要在路由器端设置允许远程访问SSH服务,点”System – Administration”,再点“SSH Access”按钮:

SSH远程 e1606136587646

勾选“Gateway Ports”,点“Save & Apply”就设置好了。

接下来我们就可以通过WinSCP来进行SSH服务的远程连接测试:

winscp远程登录

按上图设置完成后,要是以前的设置都OK的话,点“登录”就能进入路由器的文件系统了,也可以进入SSH的终端命令窗口。

还有其它的服务内容,例如:FTP服务等,大家都可以试着自己去设置、去远程登录一下,在这里就不再累述了。

Frp在OpenWrt系统中的应用

本文我们要讲解Frp在OpenWrt系统中的应用。如果你的路由器挂在一个没有公网地址的家庭局域网内,或者是挂在公司受限的局域网内,但你又想通过远程来操控这个路由器或者访问路由器上的一些服务,这时内网穿透应用就派上了用场。目前的内网穿透应用中有两个比较常用,一个是Frp,另一个是Ngrok,OpenWrt系统对这两个应用的支持都还可以,这次我们只讲解Frp,关于Ngrok大家可以去慢慢摸索。

Frp在本文中所涉及的内容,其工作原理可以简单的理解为:让内网路由器与拥有公网地址的服务器通过某个端口建立联系,然后你只要远程访问服务器,它就会自动去访问内网路由器中指定的服务,从外部看来就好像将内网穿透了一样。首先你需要有一个拥有公网地址的服务器端,你可以选择国内的阿里云、腾讯云等或国外的服务器空间提供商购买服务器空间(含公网地址),然后安装上相应的系统,如Windows、Linux等,再将Frps即Frp的服务端安装在这个服务器上,将Frp客户端Frpc安装在路由器上,最后设置好相应的配置文件即可。

上面说到要购买服务器空间,有人可能就想打退堂鼓了,其实如果你有一个安装了OpenWrt的路由器是挂在有公网地址网络上的话(注:电信、移动等宽带通过拨号方式就可以获得不固定的公网地址),可以通过DDNS应用固定域名(后面章节我们会讲到),再将Frps安装在OpenWrt系统上,就可以免去购买服务器空间的费用了。

Frp是一个在GitHub上维护的项目,项目网址为:https://github.com/fatedier/frp,源码及工作原理都介绍得非常详细,初次接触该应用的可以先去好好看一看。目前最新的发布版是v0.34.2,下载网址为:https://github.com/fatedier/frp/releases,你需要在什么平台安装你就下载相应平台的软件。

一、安装服务器端程序

以64位的Ubuntu20.04系统下安装Frps为例,我们要用到 frp_0.34.2_linux_amd64.tar.gz 这个文件,可以采用wget或curl命令直接下载,再解压文件。

root@localhost:/# cd /usr

root@localhost:/usr# wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

root@localhost:/usr# tar -xzvf frp_0.34.3_linux_amd64.tar.gz

frp解压后文件

解压后我们发现目录里既有服务器端程序,也有客户端程序,并且分别带配置程序及配置程序的所有参数说明;另外还有一个systemd子目录,里面的内容主要是帮助大家建立程序开机自启动的(注:经测试在CentOS7系统中可直接使用)。

服务器端安装,我们要用到frps及frps.ini文件,将其拷贝到指定目录:

root@localhost:/usr# cd frp_0.34.3_linux_amd64/

root@localhost:/usr/frp_0.34.3_linux_amd64# cp frps frps.ini /usr/bin/

接下来再设置Frps开机时自动启动:

》添加或修改 rc-local.service

root@localhost:/# vim /lib/systemd/system/rc-local.service

确认内容如下:

[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target
Alias=rc-local.service

》在rc.local配置中新建或添加Frps运行命令

root@localhost:/# vim /etc/rc.local

确认里面包含如下命令:

#!/bin/bash

/usr/bin/frps -c /usr/bin/frps.ini

》设置程序运行并开机自启动

root@localhost:/# chmod +x /etc/rc.local

root@localhost:/# ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/

root@localhost:/# systemctl start rc-local.service

root@localhost:/# systemctl enable rc-local.service

》重启后测试

root@localhost:/# reboot

root@localhost:/# ps aux     #看frps是否开机自动运行

如果看到Frps已经在后台运行,服务器端的缺省安装就算成功了。当然如果后续客户端配置有一些特殊要求,那么服务器端的frps.ini的内容也要配合做些改变才行,在配置部分我们会讲到。

二、安装客户端程序

Frp的官方项目中未提供OpenWrt系统下的对应程序,但是因为它提供了程序源码,所以原则上我们可以自编译生成在任何平台下的Frp程序。利用OpenWrt提供的自编译工具包,生成与我们所使用的路由器相匹配的应用程序是完全可能的,但因为此过程相对比较复杂(注:大家以后可参见”OpenWrt – 自编译 – 应用程序自编译“部分的内容),所以这次我们准备使用第三方(Kuoruan)已经编译好的程序。另外可喜的是,为了方便大家在客户端的设置工作,Kuoruan也开发并编译了Frpc的Luci界面:luci-app-frpc,具体大家可以参考以下网址:

》Kuoruan的OpenWrt-Frp项目

源码:https://github.com/kuoruan/openwrt-frp

发布版:https://github.com/kuoruan/openwrt-frp/releases

》Kuoruan的luci-app-frpc项目

源码:https://github.com/kuoruan/luci-app-frpc

发布版:https://github.com/kuoruan/luci-app-frpc/releases

下载时请选择与自己的路由器相匹配的程序,以我的WR720N为例,因为刷的是WR710N的固件,所以先在OpenWrt官网找到WR710N的平台信息,Package architecture是mips_24kc

wr710n路由器信息

然后到Kuoruan的GitHub项目下载相对应的Frpc及luci-app-frpc:

kuoruan openwrt frp 1

 

kuoruan luci app frpc

将下载的两文件通过WinSCP拷贝到 /tmp 目录下,然后进行后续安装;

或者全部采用以下命令行方式进行下载、拷贝及安装:

root@OpenWrt:~# opkg update && opkg install wget

root@OpenWrt:~# cd /tmp

root@OpenWrt:/tmp# wget https://github.com/kuoruan/openwrt-frp/releases/download/v0.33.0-1/frpc_0.33.0-1_mips_24kc.ipk

root@OpenWrt:/tmp# wget https://github.com/kuoruan/luci-app-frpc/releases/download/v1.2.1-1/luci-app-frpc_1.2.1-1_all.ipk

root@OpenWrt:/tmp# opkg install frpc_0.33.0-1_mips_24kc.ipk luci-app-frpc_1.2.1-1_all.ipk

root@OpenWrt:/tmp# reboot

路由器重启后进入Luci界面,点“Services – Frpc”就进入Frpc的Luci设置界面了:

frpc的Luci设置界面

三、配置

Frp的配置过程主要是在客户端进行的,服务器端配置很多是为了配合客户端的特殊配置要求而变化的。专业人员可以直接通过修改 /etc/config/frpc 文件来完成Frpc的配置过程,但对于初学者来说,建议还是采用Frpc的Luci设置界面最简单,也一目了然。

1、在Frpc的Luci界面先设置服务器

点”Servers“按钮,进入服务器设置界面:

frpc servers

如上图所示,在Alias框给服务器起个名,输入服务器的公网IP地址或域名到Server addr框,点”Save & Apply“就可以了。如果你为了数据传输的安全性,增加在Token栏输入Token码,那么在服务器端必须对frps.ini文件进行修改,增加以下语句:

token = **************    #将Frpc的Servers处设置的token码在这里再输一遍

然后重启frps服务:

root@localhost:/# systemctl restart rc-local.service

2、设置允许远程访问的服务

点”Rules“按钮,就进入了允许远程访问服务的设置界面了:

frpc luci rules

点”Add“可以添加服务,点”Edit“可以对服务设置进行修改,设置完成后点”Save & Apply“。

3、让Frpc运行起来

点”Setting“,进入”General Options”设置界面:

frpc运行

勾选“Enabled”,再点”Save & Apply“,你就会发现Frpc运行起来,显示”Running“就表明设置OK了。

四、测试

上面的”Rules“设置中我们开放了80端口的web服务,对应的远程端口号是7080,那我们只要在任一联网的电脑浏览器地址栏输入:服务器IP或域名:7080,你就能进入内网路由器的Luci设置界面了,对路由器进行远程的操控了,跟你在内网里直接访问是一样的。

Frp远程访问界面

同理,你也可以在Frpc中设置SSH、FTP等其它服务,然后通过远程访问它,达到内网穿透的效果。

本文对设置部分只采用了最简方式,实际上Frp的设置非常复杂。希望大家先掌握了简单的,以后就可以举一反三,试试其它复杂的设置,相信大家最后一定会大有收获的!

 

FTP在OpenWrt系统中的应用

SSH服务的应用中,我们有提到利用WinSCP的SCP方式建立电脑与路由器之间的文件传输,但这种方式有一定的局限性,虽然其在局域网内连接的速度尚可,但如果是电脑远程访问路由器的话,传输速度会变得非常慢,而且传输的安全性也是大打折扣。本文要讲解FTP在OpenWrt系统中的应用,FTP是最基本的文件传输协议,我们通过在路由器端安装FTP服务,就可以让FTP客户端(不管是局域网内,还是远程的)都可以轻松的与路由器建立安全、快捷的文件传输任务。

1、FTP服务安装

root@OpenWrt:~# opkg update && opkg install vsftpd

2、配置

目前OpenWrt系统的FTP服务未开发Luci设置界面,所以需要我们直接对配置文件进行修改:

root@OpenWrt:~# vim /etc/vsftpd.conf

通过WinSCP直接打开文件编辑,如下图:

ftp配置文档

设置允许FTP访问的目录,即在配置文档中添加如下语句

local_root=/mnt/sda1/ftp

3、设置开机启动

root@OpenWrt:~# /etc/init.d/vsftpd enable

root@OpenWrt:~# /etc/init.d/vsftpd start

4、测试

》网页下载方式:以前一些网站提供文件下载,常采用此种方式

在浏览器地址栏输入:ftp://192.168.1.1,就会出现登录界面:

ftp网页登录界面

输入账号及密码后,点“登录”按钮,就进入FTP文件下载界面了:

ftp下载目录

点任一文件,就会自动将文件下载到客户端。

》文件资源管理器方式:可以用WinSCP,也可以用FileZilla应用程序

1)先以WinSCP为例,打开WinSCP程序,以下图方式新建站点:

ftp的winscp登录界面

注:文件协议选“FTP“,端口号选”21“。

等其它设置内容全部输入完成后点”登录“,就进入电脑文件与路由器FTP目录之间的交互界面了。

ftp的winscp文件交互界面

2)下面再介绍一下FileZilla的使用

FileZilla的Windows客户端版大家可以通过官网 https://filezilla-project.org/ 下载,也可以在本网站的”DIY专栏 – 下载中心”直接下载(百度网盘的提取码:lyzj)。

程序安装后在电脑桌面双击打开,然后如下图进行设置:

FileZilla设置

再点“快速连接”,会出现一个提示框,显示这是一个不安全的FTP连接:

ftp连接提示 1

先不管它,后面我们会讲到如何采用更安全的连接方式,点“确定”就可以进入电脑与路由器FTP目录的文件交互界面了。

FileZilla的文件交互界面

5、增强数据传输的安全性

以上的设置都是基于采用缺省端口号及明码传输的方式来进行的,在实际应用中我们可能需要考虑的更加全面一些,让数据传输更加安全。接下来我们就来介绍两种增强数据传输安全性的方法:

1)将数据传输的主动模式active变为被动模式passive

主动模式下,FTP服务端口为21,数据传输端口号为20,因为端口号都是缺省已知的,黑客可以通过监听指定的端口号来窃取数据。而被动模式下,虽然FTP服务端口号仍为21,但是其数据传输端口号是可以有客户自己来随意设定的,你可以设置一个端口号,也可以设置一个区间。有那么多随意的端口号(1024-65535)可供选择,而且数据可以分在区间内不同的端口号传输,黑客再要监听就不大容易了。

# 变主动模式为被动模式,需要 /etc/vsftpd.conf 文件中增加如下语句:

pasv_enable=YES             #使ftp服务工作在被动模式
pasv_min_port=9964      #设置被动模式下,数据传输的端口号区间的最小端口号
pasv_max_port=9965     #设置被动模式下,数据传输的端口号区间的最大端口号

注:最小、最大端口号大家可以自行设定,上例中我只选择了9964、9965两个端口作为数据传输端口。

# 设置修改后保存文件,然后重启FTP服务:

root@OpenWrt:~# /etc/init.d/vsftpd restart

# 然后你可以按本文第4点的测试方式测试一下,FTP服务运行是否正常。

如果你想更进一步,连FTP的服务端口21也一起换掉,那建议你将FTP服务安装在二级路由上,在一级路由(同样也安装OpenWrt系统)上设置端口转发:

在Luci界面,点”Network – Firewall“进入防火墙设置界面后,再点选”Port Forwards“进行端口转发设置。例如外网访问二级路由上的FTP服务时采用9966端口,则需要先将一级路由Wan口的9966端口转发到二级路由Lan口的21端口;再将一级路由Wan口的数据端口也转发到二级路由Lan口相同的端口上,有几个转接几个(具体数量由pasv_min_port,pasv_max_port确定)。

假设一级路由拥有公网地址,并动态关联了域名,如 wiserouter.red-yellow.net,则只要在浏览器网址上输入:ftp://wiserouter.red-yellow.net:9966 就可以远程连接二级路由上的FTP服务了。同理,在WinSCP、FileZilla上做相应设置也能很轻松地实现文件交互了。

filezilla远程访问ftp设置

2)数据采用密码传输方式

这种方式的安装及设置方法相对来说比较复杂,下面我们来详细展开:

# 安装带加密功能的FTP服务

root@OpenWrt:~# opkg update

root@OpenWrt:~# opkg remove vsftpd     # 如果以前已经安装了vsftpd,则需要先将其卸载

root@OpenWrt:~# opkg install vsftpd-tls

# 安装openssl

root@OpenWrt:~# opkg install openssl-util ca-certificates

# 生成证书及密钥文件(注:以下命令你可以在vsftpd.conf文件中找到)

root@OpenWrt:~# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd_privkey.pem -out /etc/vsftpd/vsftpd_cert.pem -subj /C=”DE”/ST=”Saxony”/L=”Leipzig”/CN=”OpenWrt”

# 修改配置文件

root@OpenWrt:~# vim /etc/vsftpd.conf

增加以下内容:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Disable SSL session reuse (required by WinSCP)
require_ssl_reuse=NO
# Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH
rsa_cert_file=/etc/vsftpd/vsftpd_cert.pem
rsa_private_key_file=/etc/vsftpd/vsftpd_privkey.pem

# 保存退出后,重启FTP服务

root@OpenWrt:~# /etc/init.d/vsftpd restart

# 测试

数据传输设置密码方式后,将无法采用浏览器直接访问的方式,但是采用Winscp、FileZilla等专用程序实现FTP服务访问是完全OK的,而且安全性大大提升了。

以FileZilla登录为例:

filezilla证书确认

多了一个证书确认的界面,信任证书后点”确定“,就又可以进入熟悉的文件交互界面了。

Filezilla文件交互界面

以上讲述的两种增强安全性的方法都是经常使用,而且是非常有效的。当然其它像设置非root账户进行传输也是增强数据安全性的一种方法,大家可以去试着操练一下!!

OpenWrt系统下的网络下载应用Transmission

接下来我们要介绍另一个OpenWrt系统下的网络下载应用Transmission,关于Transmission在其它常用平台下的安装及使用设置,还是请详见其官网:https://transmissionbt.com/

本文只讲述Transmission在OpenWrt系统下的安装及设置过程:

1、安装

root@OpenWrt:~# opkg update && opkg install transmission-daemon-openssl transmission-cli-openssl transmission-remote-openssl luci-app-transmission

为方便后续使用,我们将其Web页界面也一并装上;

root@OpenWrt:~# opkg install transmission-web

然后请重启一下系统;

root@OpenWrt:~# reboot

重启完成后,在Luci界面,点“Services – Transmission“就可以看到如下设置界面了:

Transmission的Luci设置界面

2、设置

》与Aria2一样,建立并修改下载目录“Files and Locations” – “Download directoy”;

》为安全起见,设置RPC认证的账号及密码;

》勾选”Enabled“使程序运行;

最后点”Save & Apply“,简单的设置过程就完成,其它的设置项大家可以慢慢去摸索。

3、使用说明

点”Open Web Interface“,会提示输入RPC的账号及密码:

进入Transmission的Web使用界面前要求输入账号及密码的提示框

输入账号及密码后,就可以进入Transmission的Web下载界面了,然后点”Open Torrent“图标,按提示框输入种子文件或链接地址:

Transimission添加任务时的输入框

进入下载页面,静静等待任务完成就行了。

Transmission下载任务进行中

 

 

 

OpenWrt系统下的网络下载应用Aria2

网络上的资源取之不尽,对于一些有用的或自己感兴趣的内容,你总希望能下载到本地硬盘中供自己学习或与家人一起分享,这时OpenWrt的网络下载应用就派上了用场。目前比较常用有Aria2、Transmission 两个应用,今天我们就先从OpenWrt系统下的网络下载应用Aria2开始讲起。

关于Aria2的详细介绍,大家可以去其官网 https://aria2.github.io/ 查询,这里就不再累述。这里只讲解Aria2在OpenWrt系统下的安装及使用设置过程。

1、安装过程

root@OpenWrt:~# opkg update && opkg install aria2 luci-app-aria2

2、Aria2设置

Luci界面,点“Services – Aria2″进入Aria2的设置页面:

Aria2的Luci设置界面

对于一般的应用,点选”Enabled“就可以运行,但Aria2的设置要稍微复杂一点:

Aria2启动

上图就是我们直接点选”Enabled“,并”Save & Apply“以后的显示结果:”The Aria2 service is not running”。主要原因是我们对下载目录还没有设置,如果想使用设置页面中的缺省设置:/mnt/sda1/aria2,须添加相应目录,并设置目录的操作权限,例如:

root@OpenWrt:~# mkdir /mnt/sda1/aria2

root@OpenWrt:~# chmod 777 /mnt/sda1/aria2

再刷新一下Luci界面,就会显示Aria2服务已经在正常运行中了。

Aria2正常启动后界面

3、设置Aria2的远程访问控制RPC

有时你可能希望通过公司的电脑,或出差时通过远程电脑,控制家中路由器的下载任务,然后一回到家就可以使用下载的内容,例如远程控制Aria2下载一部影片,回到家中就可以直接观看。这时你就需要设置Aria2的RPC选项。

在Aria2的设置界面,点”RPC Options“,然后再选择”RPC authentication method“即RPC认证方式,可选账号密码方式及Token方式两种,我一般采用Token,再随机产生Token码,如下图所示。

Aria2的RPC设置

再点”Save & Apply“就OK了。

*** 其它的设置项,如:”HTTP/FTP/SFTP Options”、“BitTorrent Options”、”Advanced Options“,这里就不展开了,大家自己后续再慢慢琢磨吧。

4、添加Aria2的Web使用界面

关于Aria2的Web使用界面,比较常用的有WebUI和AriaNg两个,你可以任选其中的一个安装,也可以将两个都安装上。

root@OpenWrt:~# opkg install webui-aria2

root@OpenWrt:~# opkg install ariang

两个都安装完成后的界面如下:

Aria2安装WebUI和AriaNg

这里只简单介绍一下WebUI-Aria2的使用设置,Ariang的设置大家可以”举一反三“,还是容易掌握的。

点一下”WebUI-Aria2″按钮就可以进入Aria2的Web使用界面了:

WebUI-Aria2使用界面

如果你前面设置了RPC及Token,这时会显示连接不成功。点“设置”,再点“连接设置”,按下图输入设置的Token值就OK了。

WebUI的连接设置

连接成功后,就可以添加下载任务了。目前版本的Aria2支持“链接下载”(含“磁链接”)和种子下载,基本可以满足大部分人群的需求了。

点“添加”菜单就可以选择“使用链接下载”和“使用种子下载”,大家视情况选择,进入后界面分别如下:

》使用链接下载

WebUI添加链接下载任务

》使用种子下载

WebUI添加种子下载任务

输入相应的下载源就可以进入Aria2的下载过程了,这时即使你关闭Web使用界面后,下载过程仍会继续在后台运行,所以你只需要静等它下载完成就行了!

如何修改OpenWrt系统中的路由器型号?

在路由器刷入OpenWrt系统的过程中,部分路由器因为暂时没有官方的路由器固件可以下载,所以要刷其它型号的路由器固件来代替,但是会存在一个小问题,就是在输入密码进入OpenWrt系统首页”Status – Overview“时,在”Model“一栏显示的是其它路由器的型号,例如本网站刷机时曾涉及到的:WR886N-V5显示的是WR940N-V4;WR720N-V3显示的是WR710N-V1。这对于完美主义者或者有强迫症的人来说,实在时没法接受的。所以本文就来讲解一下如何修改OpenWrt系统中的路由器型号,让其与路由器本体一致。

特别申明:本文所讲解的方法只对本文所引用的版本有效,其它版本有可能需要修改的文件及所在的目录都有所不同,大家可以慢慢去摸索,本文只是做一下“抛砖引玉”的作用。

以WR886N-V5刷WR940N-V4的自编译固件为例,固件的版本号为OpenWrt18.06.8,最初的Luci界面如下:

WR886N-V5刷WR940N-V4的自编译固件后原始界面

“Model”一栏显示的时“TP-Link TL-WR940N v4″,现在我们要想办法给它改过来。

通过WinSCP连接路由器后,打开 /usr/lib/lua/luci/view/admin_status/index.htm 文件,然后找到下图红线划的那一行。

WR886N-V5刷WR940N-V4的自编译固件后型号修改文件

将这行中的Model取值语句直接变更为输入实际的路由器型号,见下图:

WR886N-V5刷WR940N-V4的自编译固件后型号修改成正确值

保存后退出,然后在浏览器里刷新原Luci界面,你就会发现Model值已变成到你想要看到的样子的。

WR886N-V5刷WR940N-V4的自编译固件后型号修改

当然这是一种临时的应变之道,最好的方法还是在自编译固件的时候,就把路由器型号也一起改好了,这在后续我们讲解自编译固件时会涉及到。

 

 

Samba局域网内数据共享服务

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电源口,确实非常适合经常出差的人员使用。

WR720N

一、硬改及刷机简要过程(其它部分可参考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界面了。

wr720n v3刷openwrt

 

二、添加USB支持

1、安装USB驱动

root@OpenWrt:~# opkg update

root@OpenWrt:~# opkg install kmod-usb-core kmod-usb2

2、安装USB存储器支持

root@OpenWrt:~# opkg install kmod-usb-storage kmod-usb-storage-uas

3、安装USB诊断工具

root@OpenWrt:~# opkg install usbutils

1)未插USB盘时测试

root@OpenWrt:~# lsusb -t

/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M

2)插上U盘或USB移动硬盘后测试

root@OpenWrt:~# 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、设置系统自动加载

root@OpenWrt:~# opkg install block-mount mount-utils

1)如果使用的U盘或USB移动硬盘的数据格式是Linux常用的,如:ext3、ext4等;

root@OpenWrt:~# 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;

root@OpenWrt:~# opkg install kmod-fs-ntfs ntfs-3g

〉设置启动时自动挂载

root@OpenWrt:~# vim /etc/rc.local

增加如下语句:

sleep 3

ntfs-3g /dev/sda1 /mnt/sda1 -o rw,sync

注:如果重启后挂载不成功,则先在/mnt目录下创建sda1子目录;另外,如果一个盘中有多个分区,那么其它分区也要挂载,如sda2、sda3 …

root@OpenWrt:~# mkdir /mnt/sda1

〉设置U盘或移动硬盘热拔插时自动卸载或挂载

root@OpenWrt:~# 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

通过以上的设置,当U盘或USB移动硬盘插入时,我们就可以在/mnt/sda1目录下看到盘里面的数据了。

5、从安全考虑,建议为USB大容量移动硬盘再添加自动休眠保护

root@OpenWrt:~# opkg install hdparm

root@OpenWrt:~# hdparm -S 240 /dev/sda1 # 设置空闲时间超过20分钟(240*5S)即自动休眠

root@OpenWrt:~# opkg install luci-app-hd-idle # 设定时间请进入Luci界面,点 ”Services – HDD Idle“进入设置页

HDD Idle
三、安装及设置Samba服务

1、安装Samba服务,目前有两个版本可供安装。如果Flash空间小,就只能安装Samba36,像我这个硬改成16MFlash的WR720N,就无法安装Samba4。

root@OpenWrt:~# opkg install samba36-server luci-app-samba

root@OpenWrt:~# opkg install samba4-server luci-app-samba4

2、Samba服务设置(以Samba36为例)

浏览器到Luci界面,点击“Services – Network Shares”就可以进入Samba服务的设置页面了

samba general settings

先点“Edit Template”,进入模板的编辑状态

samba edit template

将其中的 “invalid users = root” 注释掉;将 “max protocol = SMB2” 改为 “max protocol = NT1” ;然后再添加要共享的目录,并设置权限,如下图所示:

samba 设置内容

设置保存后重启路由器,然后再设置共享目录允许访问用户root的访问密码:

root@OpneWrt:~# smbpasswd -a root

这样,所有的设置过程就算完成了。与该路由器连接的电脑、平板电脑、手机、网络机顶盒等都可以通过文件浏览器或具有局域网访问功能的程序直接访问共享目录了。

以电脑为例,打开Windows系统的资源管理器,点“网络”后,输入“\\192.168.1.1″,点回车就会出现要求输入root访问用户密码的界面:

Samba局域网内数据共享服务

输入密码后,点”确定“就可以进入共享目录了。

samba 进入共享目录

大功告成!!其它像平板电脑、手机、网络机顶盒的共享连接就让大家自己去慢慢摸索吧,Samba服务是局域网中非常基础的服务,大部分的设备都可以支持。Samba服务的优点是其在局域网内连接稳定、速度快,但是不足的是它在外网访问时,设置非常复杂并且连接速度特别慢。要享受完美的外网共享服务,你还是需要搭建NAS系统,这在以后的章节中我们会涉及。

另外,除OpenWrt系统外,你也可以在别的系统上部署Samba服务,具体可参考Samba官网 https://www.samba.org/ 的内容。

OpenWrt系统设定(三)- 系统设定备份及固件升级

 

三、系统设定备份及固件升级

受益于OpenWrt系统维护团队及全球开发者的不懈努力,OpenWrt系统得以不断地完善和发展,通常每隔一段时间就会有新的发布版Release Version出现。OpenWrt系统爱好者们可以经常去OpenWrt官网看看是否有适合自己路由器的最新版本发布,觉得需要的话就下载下来给路由器升级一下系统,使其能够应用到最新的技术、发挥出最佳功效。OpenWrt系统的固件分“发布版”和“开发版”两条线管理,“Release发布版”是给一般使用者使用的;而“Snapshot开发版”是为OpenWrt系统的开发人员或测试人员使用的。每个版本又同时会出两个针对不同环境应用的固件,即“出厂固件Factory Firmware”和“升级固件Sysupgrade Firmware”。“出厂固件”是为第一次刷OpenWrt系统固件时使用的,“升级固件”是为已刷旧版OpenWrt的用户升级而用的。见下图,大家看一下固件的文件名就能很容易区分开来:

OpenWrt固件分类

所以在升级系统前,你需要根据自己的需求先下载好合适的固件,这是第一步。然后再到系统设定备份及固件升级页面进行下一步的操作,点“system – Backup / Flash Firmware”。

因为系统安装之后,多多少少会对系统进行设置,所以为了避免在升级之后重复设置过程,通常需要将设置的内容进行”备份Backup“。点”Generate archive“按钮,就会生成备份文件,如:backup-OpenWrt_Office-2020-10-29.tar.gz;等固件升级完成之后,再点”Upload archive…”,选择备份文件,再点“Upload”上传即可。

如果要升级系统文件,则点“Flash image…”,再选择下载的升级文件,点”Upload“上传完成升级过程,系统在升级完成后会自动进行重启。

特别需要注意的是,系统升级完成后,哪怕你做了备份恢复,但是你会发现你原先安装的一些应用程序都不见了,这是目前系统升级还不完善的地方,对于自己安装的应用程序都需要重新进行安装,相信在后续的版本更新中会逐渐解决这个问题。但在目前这个阶段,如果你的系统平时运行都很正常,也完全可以满足你的各项需求的话,不建议你经常去升级系统!!