试想以下这样的场景,当我们了解了DDNS、端口转发等功能,却发现家里的路由器并不支持;或者当家里的路由器对于拦截广告等功能已经不堪重负时,我们应该怎么办?

最好的方式当然是换一台路由器,但是当我们手边刚好有一台NAS的时候,不妨使用NAS搭建旁路由(软路由)的方式来解决这些问题。

NAS安装旁路由的两种方式

网上流传比较多的有两种方式:

通过NAS自带的虚拟机安装

通过Docker安装。

笔者在当时安装的时候,刚开始是使用Docker的方式,中间也对网络也进行了各种设置,但是让我崩溃的是,安装完后对笔者的某些应用有限制。不得已只好放弃,转而采用虚拟机进行安装。建议在有NAS的时候采用虚拟机的方式安装,而在无法提供虚拟机的时候再采用Docker的方式。

安装虚拟机VMM

在这里使用群晖NAS进行安装,其他NAS流程是类似的。

VMM是虚拟机程序Virtual Machine Manager的简称,群晖套件中心就有,打开套件中心,搜索Virtual Machine Manager,第一个就是,点击安装

主板开启虚拟化

进入群晖系统–>控制面板–>网络–>选中“局域网”–>点击“管理”,在下拉菜单中选择“Open vSwitch 设置”

在弹出界面中选中“启用”

下载OpenWRT

2023-01-06精简版下载
2024-01-01精简版下载

2023-01-06大而全版下载
2024-01-01大而全版下载

安装OpenWRT

解压刚才下载的文件得到.img后缀的文件,然后打开群晖内的Virtual Machine Manager,选择映像–>新增–>从PC上传文件并上传刚才解压出来的img文件,之后点击下一步。

勾选存储空间并点击应用

状态处显示良好,表明此次上传没有问题。

上传完映像之后,我们点击网络–>新增,为网络命名为ETH1,勾选连接网线的接口(一般局域网1就是),随后应用。

之后我们点击虚拟机,导入刚才的镜像。

从硬盘映像导入,选择刚才上传的映像,然后点击下一步

选择存储空间后继续下一步

为虚拟机命名,选择CPU和内存容量,继续下一步。

设置虚拟盘大小,其他默认,下一步。

网络选择ETH1并设置,在里面的型号中选择e1000。(不选也可以使用,但网络为半双工的,改为e1000后,网络变成全双工)。

自动启动选择是,其他默认,下一步

设置管理员权限,只勾选admin,下一步

勾选创建后启动虚拟机,随后应用。

至此,虚拟机已经安装成功了。但是openwrt的默认ip地址是192.168.1.1,而我家里的路由器IP地址是192.168.31.1,需要将openwrt的IP地址设置成192.168.31.X,在此我设置成192.168.31.2(需要和主路由一个网段)。

如下图,选择旁路由后点击连接,在弹出的标签页进入openwrt的终端。

设置网络

输入命令修改ip地址

1
vi etc/config/network

VI编辑器简单实用方式:按 i 键进行修改,修改完后按Esc退出,接着输入命令 :wq ,保存刚才的修改

之后输入service network restart命令重启网络就可以了。

待重启之后,在浏览器输入刚才修改过的IP,就可以进入Openwrt的登陆界面了,OpenWRT的默认账号密码是root:password,进入系统后可以修改密码。

配置OpenWRT

安装完成后,要想正常使用还需要再配置一下,找到左侧菜单 网络–>接口,选择LAN的接口进行修改

这里主要设置IPv4地址、IPv4网关和自定义DNS服务器。

同时在下方勾选忽略此接口,来禁用OpenWRT的DHCP功能,保存并应用就可以了。

OpenWRT常用功能

拨号上网

默认情况下,运营商提供的光猫是不支持DDNS和端口转发等功能的,那么我们就需要使用OpenWRT来进行拨号上网,并在里面进行DDNS和端口转发等功能。

首先来看下网络组成情况。

我们需要将光猫改成桥接模式(可以找维修师傅远程处理即可),然后在OpenWRT里进行如下操作:

点击网络–>接口–>LAN–>修改–>物理设置,取消桥接接口选项。

在网络–>接口中添加新接口,如图所示进行设置,点击提交。

修改WAN口,在基础设置中输入拨号账号和密码即可。

PC上网时,将默认网关设置成旁路由的IP地址(我这里是192.168.31.2)。

端口转发

点击网络–>防火墙–>端口转发来进行端口转发的设置。

设置DDNS

首先我们要了解DDNS的原理。

如图为PC正常上网的流程,PC根据域名到DNS服务器请求IP地址,DNS服务器根据A 记录查找IP地址并返回给PC,PC使用IP地址请求web服务。(当然这些流程对用户来说都是透明的)

了解了这个流程我们再来说DDNS,DDNS其实就是动态的调整DNS服务器中的A记录,实现的前提就是域名服务商提供API来修改域名的A记录,我们在需要使用DDNS的地方通过脚本来获取可能动态会变动的公网IP,然后通过API告诉域名服务商修改A记录。

我以DNSPOD为例进行演示,在DNSPOD的控制台找到域名解析,并添加一条A记录,这里我设置主机记录为home,IP地址先随便填写.

在DNSPOD的控制台点击我的账号并选择我的密钥,查看对应的SecretId和SecretKey .

点击服务–>动态DDNS–>端口转发来进行端口转发的设置,在下方输入框输入DNSPOD并点击添加.

勾选启用,查询主机名填写刚才添加记录的域名,DDNS服务提供商,选择dnspod.cn,域名填写刚才添加记录的域名,用户名和密码对应SecretId和SecretKey,然后点击保存并应用.

当下图红线处出现域名和IP对应关系时,即为配置成功.

其他功能

OpenWRT是搭载在Linux系统之上的,里面的服务还有很多,比如frp内网穿透、DNS过滤器、广告过滤大师、Docker等,在此就不再一一列举了,感兴趣的可以在评论区留言共同交流.