一、需求
- 远程管理办公室电脑,查看程序运行状态、远程传输文件等等,都需要远程到Windows桌面。一般用远程工具teamviewer和向日葵远控,teamviewer因为被国内流氓公司代理的缘故,变得极其恶心,向日葵好久没用了,印象中不是很顺畅。Windows自带远程桌面连接,一般大家的IP会有变化,需要使用DDNS,如果网络有NAT嵌套,还需要内网穿透。
- 家里有一台群晖,需要远程到群晖的管理页面添加下载的BT任务,还需要查看备份的照片、文件和视频,也可以通过cloud drive同步和备份电脑的文件。远程访问可以通过群晖自带的quickconnect,非常方便,只需要一个群晖账号,傻瓜式操作。不过需要到群晖的服务器中转,速度并不快,至少我移动的宽带是这样,据说电信的速度不错,没有测试,也懒得换宽带了。
同步数据是我最大的需求了,之前一直用着GoodSync的同步软件,缺点是要经常带着移动硬盘到处跑,颇为不便。以前用的百度同步网盘,但是鉴于百度的恶心行径,还是远离的好,劝大家也最好别用百度的东西。朋友推荐说坚果云不错,不过没有找到大硬盘的套餐,我的同步数据有几百GB,不太够。还有一个办法是onedrive,之前用学校邮箱申请的5T空间版,应该算是够用了,而且速度也还凑合,几百kB吧。但是这类A1账户,有个大问题,就是管理员可以随意查看你的文件,虽然相信James Zhang应该没兴致来看我的,但是毕竟是自己很重要的隐私数据,放到网盘也不够安全和放心。
剩下来就是FRP的内网穿透方案了。以前没搞懂这个到底是怎么工作的,后来蹭了一下别人的服务器,慢慢熟悉了点,后来学着自己搭了一个frp的服务端,简单好用,还安全放心。
二、frp服务端安装
首先得有一台具有公网IP的服务器,我用的阿里云的香港轻量云,优点是延迟低,网络稳定,虽然带宽限制30Mb,但是足够个人使用了。延迟低很重要,不然远程桌面的时候一个操作等半天,卡顿太严重,会疯的。
我的frp安装是看的这个教程,https://www.jianshu.com/p/00c79df1aaf0
大家可以自行学习,我直接用的文章最后面的一键脚本:
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh bash install-frps.sh
按照提示一步步走下来,自己设置一下面板的ID、密码和token即可,不过其实面板没啥必要登陆。
安装完成后,会得到如下的提示文字:
+--------------------------------------------------+ | Manager for Frps, Written by Clang | +--------------------------------------------------+ | Intro: http://koolshare.cn/thread-65379-1-1.html | +--------------------------------------------------+ Starting Frps(0.15.1)... done Frps (pid 3325)is running. +---------------------------------------------------------+ | frps for Linux Server, Written by Clang | +---------------------------------------------------------+ | A tool to auto-compile & install frps on Linux | +---------------------------------------------------------+ | Intro: http://koolshare.cn/thread-65379-1-1.html | +---------------------------------------------------------+ Congratulations, frps install completed! ============================================== You Server IP : 12.34.56.78 Bind port : 7000 KCP support : true vhost http port : 8080 vhost https port : 443 Dashboard port : 7500 Privilege token : mike tcp_mux : true Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== frps Dashboard : http://12.34.56.78:7500/ Dashboard user : admin Dashboard password : admin
把这部分内容保存下来,比较重要的是你的IP、Bind port和token。
三、Windows上的frp客户端(frpc)
frp的客户端文件我打包放在了https://www.ljchen.com/file/frp%E6%95%99%E7%A8%8B/frpc_win.zip
配置文件我是用以前蹭的一个网友的服务器的配置改的,chuantou.org,貌似现在已经无法访问了。
里面包含的文件如下:
其中frpc.ini是配置文件,要与你的服务器设置相对应,比如我的这个文件内容如下:
#配置文件如果失效,请访问www.chuantou.com获取最新配置文件 [common] server_addr = 12.34.56.78 server_port = 7000 token = mike # user:标注你的代理名字,随便选择一个跟别人不一样即可 user = ljchen login_fail_exit = false #protocol = kcp #根据自身情况选择是否开启kcp协议 tls_enable = true [xxorg] type = http local_ip = 127.0.0.1 local_port = 80 # 选择一个可用的子域名,你的访问地址将会是http://xxorg.frp1.chuantou.org subdomain = ljchen [tcp3389] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 1234
与上面的服务器配置信息是契合的,在Windows电脑上运行的话,就相当于把电脑的3389端口(Windows远程桌面)映射到了服务器12.34.56.78的1234端口,那么访问1234端口就能够连接到这台电脑的远程桌面了。像下面图中这样访问该电脑即可。
文件包里的其它文件都不需要修改,下载后只需要修改frpc.vbs文件的内容。
set ws=WScript.CreateObject("WScript.Shell") ws.Run "d:\download\frpc_win\frpc.exe -c d:\download\frpc\frpc.ini",0
这表明我的这个文件包所处的位置是d:\download\frpc_win这个目录。修改成你放的位置即可。路径最好用英文和数字,不要有中文。
开机启动:
右键点击frpc.vbs这个文件,创建快捷方式,然后在开始菜单里找到“启动”,右键打开这个文件夹,把创建的快捷方式复制进去,每次开机的时候就会自动运行frpc这个程序,保证能够从其它电脑远程桌面连接至此了。
四、群晖的客户端
群晖里的客户端文件我放在了:https://www.ljchen.com/file/frp%E6%95%99%E7%A8%8B/frpc_nas.zip
里面就两个文件,执行文件和配置文件frpc.ini。
其中frpc.ini的内容如下:
#配置文件如果失效,请访问www.chuantou.com获取最新配置文件 [common] server_addr = 12.34.56.78 server_port = 7000 token = mike # user:标注你的代理名字,随便选择一个跟别人不一样即可 user = ljchen login_fail_exit = false #protocol = kcp #根据自身情况选择是否开启kcp协议 tls_enable = true [xxorg] type = http local_ip = 127.0.0.1 local_port = 80 # 选择一个可用的子域名,你的访问地址将会是http://xxorg.frp1.chuantou.org subdomain = ljchen [tcp3389] type = tcp local_ip = 127.0.0.1 local_port = 5001 remote_port = 1235 [tcp6690] type = tcp local_ip = 127.0.0.1 local_port = 6690 remote_port = 1236
表明群晖管理页面的5001端口使用的是服务器的1235端口,cloud drive的端口用的是服务器1236端口。
访问群晖管理页面可以使用https://12.34.56.78:1235这个网址,再使用群晖的账号密码登陆;在cloud drive中添加服务器的时候要填写“12.34.56.78:1236”,注意这个时候没有https。
cloud drive同步界面:
其中6690是群晖cloud drive同步的端口,群晖其它服务的端口可以在官网查到:https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/Network/What_network_ports_are_used_by_Synology_services
群晖内的开机自启动:
刚才的客户端文件我放在了群晖的/home/ljchen/frpc目录,ljchen是群晖的用户名。
这部分内容参考的是:https://free-e.net/109
下面是开机启动的一些设置。
- 新建脚本文件
vi /usr/syno/etc.defaults/rc.sysv/S99frp.sh
- 编辑脚本内容
#/bin/bash cd /volume1/homes/ljchen/frpc nohup ./frpc -c ./frpc.ini &
注意第二行的路径,这个教程的作者放在了root路径下面,我是放在home目录下的,因为root目录只能ssh连到群晖才能访问,为了修改配置方便,就放在了home目录下面,毕竟通过smb或者群晖的file station就可以管理这些文件了。
- 设置文件权限
chmod +x S99frp.sh
设置自启动:
- 登录群晖 NAS 系统
- 进入控制面板
- 创建一个触发的任务 -> 用户定义的脚本
- 常规。
设置名称名称,如:frp;用户账号:root;事件:开机。
- 任务设置
用户定义的脚本,上面创建的脚本/usr/syno/etc.defaults/rc.sysv/S99frp.sh
则以后开机的时候群晖会自动运行这个脚本,脚本会自动启动frp的客户端。