刚买了一个入门级的群晖NAS个人云网盘,一直在想既然NAS上自带操作系统,而且又可以通过外部互联网读写网盘上的文件,那么可不可以在个人的NAS网盘上搭建一个SVN服务器呢?
群晖设置
群晖到手以后通过说明书上的设置向导初始化成功之后,通过电脑端访问群晖,在套件中心有丰富的第三方套件可以安装,一直往下拉,果然找到了熟悉的SVN Server
安装好SVN以后开始创建代码仓库以及用户名和密码,参见链接: https://www.doc88.com/p-5857836376020.html,SVN服务器部分只需要关注创建代码仓库及设置用户名密码的部分即可,其他地方我在我的NAS上没找到相应的设置部分,也没有设置成功。
经过一番设置之后点击打开刚刚创建的代码仓库,会发现在最下方出现了访问网址这一栏信息,不过在我刚刚设置完以后访问网址里并不是像上面教程里出现的IPV4地址,而是类似于群晖的Quick Connect ID一样的东西,下图是我现在已经设置好的状态,访问网址为一个IPV4地址:
这个时候直接通过SVN客户端连接,果然连接不上,经过查询得知:此时的SVN服务器是处于一个内部局域网的位置,内部局域网中的所有设备的IPV4地址都是经过一个唯一的公网IPV4地址通过一个服务器虚拟化出来并分配给局域网中挂载的所有设备。也就是说在个人电脑或者群晖NAS中所看到的IPV4地址其实都只是一个局域网内的IP地址,该地址在一个局域网内唯一且可以互相访问,但不能被外部网络直接访问,此时的SVN Server如果想要被外部网络所访问到,只有两种办法:
1.内网穿刺
2.打电话给网络服务商申请一个公网IP
我选择的是后者,因为我的宽带网络是电信的,听说比较好申请,所以我直接打10000找电信客服要了一个公网IP,过程非常顺利,几分钟就搞定了。
服务器连接到外网
公网的IP和非公网的IP日常使用起来并没有什么区别,唯一的区别就是公网的IP可以搭建服务器,但这个时候我并不知道我的公网IP有没有申请成功,然后百度:
“百度搜索IP会直接显示设备所在的公网IP,进入路由器设置查看路由器IP,如果两个IP地址相同则公网IP成功。”
路由器IP地址:
百度到IP地址:
上面两张图只是演示公网IP的判断方法,截至写文章时查询结果已经发生改变。
当时我查询到的结果是两个IP地址不一样,于是又百度了另外一种查询方法:具体操作方式是在cmd中敲:tracert <百度到的IP>如果跳数为1,则为公网IP。链接: 如何判断自己家的宽带是否有公网IP
我tracert的结果为公网IP,但是为什么百度到的IP地址和路由器上的IP地址不一样呢?我怀疑是我家光猫上自带的路由功能已经把IP地址分配好了,所以从光猫出来的信号到了路由器就已经是一个局域网的IP地址了。
登陆光猫查看:果然光猫端显示的IP地址和百度到的IP地址是相同的。
红色圈出来的部分在当时显示的IP为公网IP,由于光猫自带路由功能所以从LAN口出去的IP就已经是经过光猫路由分配好的局域网IP了,接下来去光猫的另一个设置界面关闭光猫路由,设置为桥接模式:手机连入光猫WIFI,或者使用连入光猫网络的电脑,在浏览器中访问192.168.0.1:8080。
具体做法参见链接: 电信光纤天翼网关将默认的路由模式修改为桥接模式
光猫改为桥接模式以后再次登陆路由器的设置页面,将上网方式由“自动获得IP地址”改为“宽带拨号上网”,并输入宽带账号和密码即可重新联网:
DDNS和端口映射
搞定了公网IP之后还需要搞定路由器的DDNS设置和SVN服务器的端口映射,DDNS服务的功能是将不固定的公网IP地址绑定到一个具体的域名上,因为电信给的公网IP属于个人IP,这个IP地址每隔几天或者重新拨号上网就会改变,此时如果在通过以前的公网IP访问服务器,将找不到原来的服务器。通过DDNS服务,可以自动匹配到改变后的IP地址,即每次输入相同的域名,都能访问到原来的服务器。
端口映射的意思是:通过外部设备访问到路由器上的公网IP以后,再将路由和具体群晖设备所在的局域网IP地址以及SVN服务器所占用的端口号连接起来。
DDNS和端口映射的详细解释参见:
链接: svn是什么?如何从外网访问svn服务器?
TP-LINK的DDNS和端口映射设置教程参见:
链接: [云路由器] TP-LINK DDNS动态域名的使用方法 链接: [云路由器] 如何映射服务器到外网
另外SVN服务器也需要在群晖NAS上面分配一个端口号,这个端口号在路由器设置端口映射的时候需要用到,具体设置方法参见:
链接: 群晖SVN Server远程访问
感觉上面“群晖SVN Server远程访问”的链接写的很没有逻辑,博主自己其实也不知道是怎么搞通的,具体只用参考第三条“设置群晖外部访问的路由器配置”就可以了,其他的操作个人觉得没有必要。
结束
至此群晖NAS上的SVN服务器搭建就算完成了,不出意外的话这个时候已经可以通过外网访问自己私有的SVN服务器了。需要注意的是当时在我关闭光猫路由功能并重新设置路由器路由功能以后,我突然通过网络访问不到我的群晖NAS了,这个时候我把NAS重新启动了一下即可继续访问,具体原因我也不知道。
访问NAS上的SVN服务器测试: