2020年注定是个不平凡的一年,在这一年里有很多人像我一样不得不被动远程办公,虽然在这之前个人已经有使用Teamviewer、向日葵等软件远程办公的经历,之前个人用Teamviewer比较多,也觉得Teamviewer很强大很好用,确实好用。可是在“新冠疫情”期间突然发现Teamviewer卡到不行(个人猜测可能是用的人太多了,Teamviewer服务器性能不够用了),甚至卡到完全没法用的地步,具体点就是很难连接上、连上很难看到界面、看到界面又基于控制不了。后面在朋友的推荐下试用了下国产的“向日葵”远程办公软件,说实话这软件很让我欣喜,虽然功能没有Teamviewer多,但质量上个人觉得已不输Teamviewer,在Teamviewer卡到不能用时,“向日葵”还是能够稳定又高清远程,当然这还要归功于“向日葵”公司在疫情期间取消免费用户带宽限制政策。
无论是Teamviewer还是“向日葵”对我这种穷人来说,用起来都是有些问题的,首先是Teamviewer有个免费用户商业使用限制,如果被检测到是在商业环境中(比如公司)使中,连接时长被限制在5分钟,5分钟一到就会自动断开远程,根本用不了; 而“向日葵”则是免费用户会有个带宽限制,说白了就是画面不够清晰。
难道真就没有免费的午餐?难道穷人就不能远程控制了?贫穷再次激发了我的斗志,突然到window明明自带远程桌面,大家都没推荐,难道是不好用吗?加之个人有局域网内使用过window自带远程桌面工具经历,难道不可以用它来远程吗,真的没有办法吗?当然不是,经过小编的一通百度终于找到用window自带远程桌面工具经历实现远程办公的方法:
window自带远程桌面连接工具可以通过快捷命令WIN+R 然后输入 mstsc + 回车来快速启动。远程桌面连接工具需要知道目标电脑的IP地址或计算机名,在局域网中这个目标电脑IP地址很好搞定(不行就走到目标电脑那里查一下),但是现是中大多数人的家里电脑与公司电脑不在同一个局域网内,而且公司电脑也没有一个对应的公网IP,这也是为什么window自带远程桌面连接工具很少用来远程不在同一局域网电脑的原因。
要用window自带远程桌面连接工具不能实现控制公司电脑远程办工,办法当然也是有的,这时你就需要一款内网穿透工具来让外网与你家内网建立起连接,实现无公网 IP 的远程访问了。「Frp」是一款流行的跨平台开源免费内网穿透工具,支持 Windows、macOS 与 Linux。你只需一台快速稳定的 VPS 服务器即可愉快地进行内网穿透,实现家中设备公网直接访问了……
很多地方宽带都已不再提供公网 IP 了,如果你想家里的设备如 NAS、电脑可在外网访问,那么只能通过内网穿透工具实现。考虑到安全和稳定性,最优方案是买一台 VPS 服务器用于内网穿透。其中阿里云、腾讯云、Vultr 也值得考虑。
在内网也需要一台机器用于运行 Frp 的客户端,可以是 Windows 电脑、Mac,或者是树莓派、NAS 等 Linux 设备。
市面上也有其他方案,比如花生壳相关软硬件产品,免费限制很多,付费价格贵,浪不起来。其他小公司的产品安全性又无法保证,那还不如自己买 VPS 建一个,有自己的服务器,日后各种建站的玩法还更多更实用,还能顺便学学 Linux 呢。
什么是 Frp?
内网穿透工具有很多,其中 Frp (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站,帮你实现 公网 ←→ FRP(服务器) ←→ 家庭内网 的连接,让内网里的设备也可以被公网访问到。
而目前 FRP 还推出了“点对点穿透”的试验性功能,连接成功后可以让公网设备直接跟内网设备“点对点”传输,数据流不再经过 VPS 中转,这样可以不受服务器带宽的限制,传输大文件会更快更稳定。当然,此功能并不能保证在你的网络环境 100% 可用,而且还要求访问端也得运行 FRP 客户端 (因此目前手机是无法实现的,只有电脑可以)。由于实现条件较多,所以有文件传输需求的朋友还是建议买带宽稍大一点的 VPS 会比较省心。
简单的 Frp 安装配置教程:
现在假设你已经有一台 VPS 服务器了,那么只需按照下面的步骤,一步一步来来即可搞定 FRP 的安装和配置。当然,这里涉及到一些 Linux 基础操作命令,如果完全未接触过的朋友,可以找一些「Linux 入门教程」先了解一下。
1、服务器端安装配置 Frp:
FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包并解压就可用了。这里以 Linux 系统为例:
export FRP_VERSION=0.31.2
sudo mkdir -p /etc/frp
cd /etc/frp
sudo wget "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz"
sudo tar xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz
sudo mv frp_${FRP_VERSION}_linux_amd64/* /etc/frp
其中,第一行等号后面的 0.31.2 是 frp 的版本号 (截稿为止最新版本)。你安装的时候可以到官网查看下有没更新的版本,只需将新版本的号码替换掉 0.31.2 即可。
FRP 默认提供了 2 个服务端配置文件,一个是简化版的 frps.ini,另一个是完整版的 frps_full.ini。初学者只需用简版配置即可,在简版 frps.ini 配置文件里,默认设置了监听端口为 7000,你可以按需修改它。
防火土啬和安全组开放指定的端口:
请一定要记住,你需要将服务器的系统防火墙,以及阿里云、腾讯云后台里找到“安全组策略”的相关配置,设置 7000 或你修改过的对应端口的「允许入站和出站」,否则会一直连接不上的哦!!!这个切记!!
启动 FRP 服务端
./frps -c ./frps.ini
如服务器使用 Win 系统,假设解压到 c:\frp 文件夹,那么只需这样启动:
c:\frp\frps.exe -c c:\frp\frps.exe
2、配置 Frp 客户端 (安装在内网的机器上)
设置好服务器上 Frp 服务端后,我们就需要在内网的机器上安装 Frp 的客户端了。 Frp 的客户端程序 frpc (frpc.exe) 与服务器端都在同一个压缩包里, 我们同样下载对应系统版本的软件包。
你可以将 Frp 客户端安装在内网的 Windows 电脑、Linux 设备 (比如树莓派) 或者 NAS,甚至部分路由器等设备上。Linux 客户端的安装和启动与服务器端没有太多区别,只是对应运行程序是 frpc 而不是 frps。
为了简单起见,我们这里以 Windows 电脑来安装 Frp 客户端,因为 Frp 是绿色程序,下载软件包回来解压后,启动 frpc.exe 即可。
但在启动前,我们需要先修改配置文件,我们以配置“Windows 远程桌面控制”以及“群晖 NAS 管理界面”为例。假设你的 FRP 服务器端所在的 VPS 公网 IP 为 1.2.3.4, 而客户端是 Win 电脑,我们来修改 frpc.ini 配置文件:
[common]
# server_addr 为 FRP 服务端 (VPS 服务器) 的公网 IP-(注释内容,使用时请删除)
server_addr = 1.2.3.4
server_port = 7000
[DSM]
type = tcp
local_ip = 192.168.1.40 #群晖 NAS 在局域网中的内网 IP-(注释内容,使用时请删除)
local_port = 5000
remote_port = 7001
[RDP]
type = tcp
local_ip = 192.168.1.30 #电脑在局域网中的内网 IP- (如是本机,也可使用 127.0.0.1) (注释内容,使用时请删除)
local_port = 3389
remote_port = 7002
这样就在本地上新增了“DSM”和“RDP”两个可供公网访问的服务了 (它们名称可以自己取),这里分别对应内网的群晖 NAS 的后台管理界面和 PC 远程桌面。如果你需要添加更多的设备和服务供外网访问,那么只需照样画葫芦,指定正确的 IP 地址和端口号即可。
注意放行端口
每个服务的 remote_port 是远程访问时要用到的端口号,注意这些端口号也要在服务器的防火土啬和安全组里放行才能顺利访问的,如上面的 7001、7002。
启动 FRP 客户端:
假设你已将 Frp 的客户端解压缩到 c:\frp 目录中,那么启动 Frp 客户端的命令就是:
c:\frp\frpc.exe -c c:\frp\frpc.ini
Linux 启动 Frp 客户端命令:
./frpc -c ./frpc.ini
启动之后看到 “start proxy success”字样就表示启动成功了。
3、进行远程访问:
前面搞了这么多,我们终于可以正式使用 Frp 内网穿透来进行远程访问内网里的设备了!按照上面的配置,我们想要访问群晖 NAS 的界面,只需打开浏览器,在地址栏输入 服务器公网IP:7001 即可访问到群晖后台管理界面。
而如果需要远程桌面连接到家里的 Windows 电脑,那么打开“微软远程桌面客户端”后,在地址栏里填入 服务器公网IP:7002 即可连接。
由此,借助 Frp,你就能轻松地为本地局域网内网的设备提供公网直接访问的能力了,你可以用 Frp 来转发包括但不限于 ssh、http、https、转发 Unix 域套接字等服务。
上面只是最基础的教程,Frp 还有很多很多高级功能,比如给 Web 增加密码保护、点对点内网穿透、设置端口白名单等等,Frp 官网上也提供了很详细的文档,感兴趣的朋友可以去研究一下。
写在后面:
最后,有了 Frp,我们就能轻松解决没有公网 IP 的老难题了!无论家里的 NAS 、电脑还是其他网络设备,都能轻松在外访问,这可以说是无公网 IP 用户必备的工具了,最后也给大家分享一下编在这个过种中学习过的一些文章资料:
https://www.cnblogs.com/ingxx/p/12255241.html
https://www.iplaysoft.com/frp.html
https://post.smzdm.com/p/a5k6r3x8/
https://diannaobos.com/post/808.html
https://java-er.com/blog/frp-udp-ssh/