背景说明

这两天由于疫情的原因,很多公司都得在家远程上班,然后像我们这类小公司有没有 VPN 这些东西。传统的远程回公司只能依靠 Teamviewer 或者向日葵等工具。但是由于最近用户量很多,可能会造成卡顿,本着能不花钱就不花钱的原则,就得找一个折中的方案。既不用收费,也不会像花生壳,nat123 这种从第三方别人的服务器进行数据传输。于是便找到了本次的主角:FRP。

项目说明

该项目的开源地址:

https://github.com/fatedier/frp

在文档中有这样一个架构图:

简单的说明一下:

就是我们需要一个中间机器用于运行 FRP 的 Server(服务端),而且该机器需要有公网 IP。

在我们后端的电脑上门安装 FRP 的 Client(客户端),可以在这上面运行 tcp 或者 http 等服务。

用户 User 可以通过访问官网 IP 的机器映射到后端 FRP 的机器,进行服务访问。

当然,我们本次的需求肯定不是这个,这个只是用于搞搞什么 web 访问,远程连接等操作,我们这一次使用的是这个的升级版,架构如下:

说明:

1. 左边为用户在家的电脑,右边为用户在办公室的电脑。

2. 公网 IP 的服务器为公司一台云上面的服务器,需要运行 FRP Server(服务端)。

3. 用户在家里的电脑和公司的电脑上面需要运行 FRP Client(客户端)。

安装配置

1. 下载服务:

https://file.kskxs.com/?dir=frp

我这里以 0.29 版本为例!

2. 在具有公网 IP 的机器上面安装配置 Server 端,我这个是 CentOS 7 的,Windows 也是同理,只是需要下载对应的系统版本:frp_0.29.0_linux_amd64.tar.gz

# 解压
tar -zxf frp_0.29.0_linux_amd64.tar.gz
mv frp_0.29.0_linux_amd64 /opt/FRP-Server # 删除不需要的配置
cd /opt/FRP-Server
rm -rf frpc* frps_full.ini frps.ini LICENSE systemd
mkdir logs

添加配置:

vim frps.ini

内容如下:

[common]
# 配置IP端口
bind_addr = 这台机器的公网IP
bind_port = 10000
bind_udp_port = 10001
# 配置管理页面的端口,用户密码
dashboard_port = 10002
dashboard_user = admin
dashboard_pwd = admin
# 配置日志保存位置和等级
log_file = ./logs/frps.log
log_level = info
log_max_days = 3
# 客户端连接的token,最好是随机生成的
token = H99h8HHXSHXSSSCCC

启动服务:

./frps -c frps.ini &

后台运行,可以通过查看端口看到服务!

3. 在公司的电脑上面安装启动 FRP Client 端,由于是 Windows,所以需要下载 Windows 的包:frp_0.29.0_windows_amd64.zip

为了便于区分,解压后将文件夹重命名为:FRP-remote

同理删除没用的文件,只留下 frpc.exe 和 frpc.ini 即可:

其中 frpc.ini 的内容如下:

[common]
server_addr = 公网服务器的公网IP地址
server_port = 10000
# 公网服务器 FRP Server 配置文件里面的 token
token = H99h8HHXSHXSSSCCC # 名字随意,但是待会儿家里电脑必须和这个一致
[dylan_p2p_rdp]
type = stcp
# 值随意,但是待会儿家里电脑必须和这个一致
sk = dylan123131223131
local_ip = 127.0.0.1
# 由于是远程桌面,所以是 3389 端口
local_port = 3389

启动方法,进入文件夹,在地址栏输入 cmd,打开命令行:

命令行执行命令:

frpc.exe -c frpc.ini

效果如下类似:

注意:该窗口由于没用后台运行,所以不能关掉!

显示 Success 启动完成以后,在公司的电脑开启远程桌面:

开启远程:

至此,公司的电脑配置完成!

4. 家里的电脑配置:

家里的电脑也是 Windows,所以一样使用安装包:frp_0.29.0_windows_amd64.zip

除了配置文件不一样,其他配置和公司电脑一样,但是为了便于区分,我们将其解压改名为 FRP-vistor,frpc.ini 内容如下:

[common]
# 公网服务器的IP和端口和token
server_addr = 公网服务器的公网IP地址
server_port = 10000
token = H99h8HHXSHXSSSCCC # 自定义的名字
[dyaln_RDP_visitor]
type = stcp
role = visitor
# 这个就是 RPC-remote 中配置的,必须一致
server_name = dylan_p2p_rdp
# 这个就是 RPC-remote 中配置的,必须一致
sk = dylan123131223131
bind_addr = 127.0.0.1
# 这个本机远程端口,自己随便定义,远程的时候使用
bind_port = 53389

然后在命令行一样的方式启动即可,效果如下:

5. 远程测试:

输入家里电脑 配置文件中的 IP 和端口即可,然后验证远程电脑的用户密码:

效果如图:

远程成功!

特别说明

1. 如果公网服务器带宽有限卡顿,可以将两个 FRP Client 配置中的协议由 stcp 换成 xtcp,但是这种穿透方式不一定能够成功。在文档中有这样一个说明:

2. windows 10 远程可能出现默认输入法无法使用输入中文的问题,公司电脑安装搜狗输入法就解决。

3. 服务自带了仪表盘,之前我们也配置过,可以通过公网 IP + 仪表盘端口登录访问:

至此,基本的远程办公功能就实现了!其他复杂功能可以看官方文档和默认自带的 full 配置,注释都很详细。

最后也感谢这位老哥的开源!!!

使用 FRP 让部门同事都能直接远程桌面办公( 适用于 TEAM 和向日葵卡顿的用户)的更多相关文章

  1. 我写的 Python 代码,同事都说好

    原文链接: 我写的 Python 代码,同事都说好 人生苦短,我用 Python. 程序员的追求就是不写代码,早日财务自由.不对,一不小心把实话说出来了,应该是将代码写得简洁,优雅. Python 程 ...

  2. Win10企业版远程桌面结合frp实现公网远程

    Win10企业版远程桌面结合frp实现公网远程 前言 由于经常下班后还要处理问题,但是又没有运维那么频繁,就不想天天背着电脑来回跑,刚开始用的teamviewer,后来被商业劝退了(就是不让用了,让买 ...

  3. FRP+WoL实现远程开机+远程桌面

    FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...

  4. 利用阿里云搭建frp实现外网远程桌面链接内网电脑

    主要应用场景:针对学生放假回家使用外网无法远程操作学校的服务器或者电脑,这里通过阿里云的云服务器搭建一个frp服务,实现内网穿透,从而可以直接通过远程桌面或者其他工具实现对校园网内的服务器或者电脑进行 ...

  5. 解决Windows远程桌面连接每次都提示输入密码的问题,远程桌面记不住密码

    FROM:http://www.veryhuo.com/a/view/80444.html Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每 ...

  6. 阿里云 windows frp 远程桌面

    环境: 阿里云服务器 server 2008 ,想要被远程访问的终端(本机)是win7 x64 目的:实现在别的地方(家里,出差在外) 用 远程桌面 访问 位于公司内部的电脑 frp 介绍:https ...

  7. frp 内网穿透远程桌面(Windows 10)配置

    一.服务端配置 服务端需要公网环境,一般用一台云服务器就行了,我选择的是 Linux 服务器,Windows 服务器也是可以的. 下载 frp: wget https://github.com/fat ...

  8. 使用 Frp 和 Docker 通过远程桌面和 SSH 来远程控制 Windows(反向代理)

    最新博客文章链接 大体思路 使用 Docker 容器,在云服务器上部署 Frps 容器来中转流量,在被控制的 Windows 上部署 Frpc 容器来暴露内网的服务,在主控制端的 Windows 上直 ...

  9. frp服务利用云主机实现Windows远程连接

    frp服务利用云主机实现Windows远程连接 1.下载所需要的安装包 https://github.com/fatedier/frp/releases 下载 frp_0.44.0_linux_amd ...

随机推荐

  1. $loj530\ [LibreOJ\ \beta\ Round \#5]$ 最小倍数 数论

    正解:数论 解题报告: 传送门$QwQ$! 不想做题,来水点儿简单点的$QwQ$. 一个显然的点在于可以直接对不同质因子分别算$n_{min}$最后取$max$. 这个正确性还是蛮显然的?因为只要有$ ...

  2. WeihanLi.Npoi 1.7.0 更新

    WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ColumnOutputF ...

  3. Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来

    Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来 要了解一个新知识我们可以从三个方面入手:是什么,有什么用,怎么用.下面我们就从这三个方面进行讲解Reveal.js噢 ...

  4. 洛谷P1035 级数求和 题解 简单模拟

    题目链接:https://www.luogu.com.cn/problem/P1035 题目描述 已知:\(S_n= 1+1/2+1/3+-+1/n\).显然对于任意一个整数 \(k\),当 \(n\ ...

  5. 1033 旧键盘打字 (20 分)C语言

    题目描述 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入描述: 输入在2行中分别给出坏掉的那些键.以及应 ...

  6. 小小知识点(三十)集中式大规模和无小区大规模MIMO

    集中式大规模MIMO 同一小区的所有接入点( access point,AP) 布置在同一个基站( base station,BS) 中,并且 AP 之间的间距非常小,这种布置方式称为集中式大规模MI ...

  7. ubuntu(linux)虚拟主机部署桌面,使用window链接

    买的ubuntu只有命令行,想安装一个桌面,远程操控 网上教程很多,我主要遇到一个问题,百思不得其解 之间安装的不是连接超时,就是拒绝连接 又重新参考这篇博客安装后才解决 说一下大致流程,详细的见这位 ...

  8. 观察者模式的应用:Winform窗体之间传值

    观察者模式的应用:Winform窗体传值 观察者模式的概念: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并更新. 今天我们就学着用一下这个观察者模式,先想象 ...

  9. Scala与Mongodb实践4-----数据库操具体应用

    目的:在实践3中搭建了运算环境,这里学会如何使用该环境进行具体的运算和相关的排序组合等. 由数据库mongodb操作如find,aggregate等可知它们的返回类型是FindObservable.A ...

  10. 6、使用基元类型而不要使用 FCL 类型

    基元类型: int string object uint long ulong 等 ; FCL (Framework Class Library ) System.Int32 等. 一些定义在一些语言 ...