背景说明

这两天由于疫情的原因,很多公司都得在家远程上班,然后像我们这类小公司有没有 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-vistorfrpc.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. 微信生成二维码 PHP

    <?php /** * Created by PhpStorm. * User: liyiming * Date: 2019/8/8 * Time: 14:23 */ # 生成二维码 class ...

  2. JS 中检测数组的四种方法

    今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...

  3. hexo搭建博客系列(三)美化主题

    文章目录 其他搭建 1. 添加博客图标 2. 鼠标点击特效(二选一) 2.1 红心特效 2.2 爆炸烟花 3. 设置头像 4. 侧边栏社交小图标设置 5. 文章末尾的标签图标修改 6. 访问量统计 7 ...

  4. css label两端对齐

    上面这种效果很常见,实现的代码如下: html部分 <ul> <li class="detail_item"> <span class="d ...

  5. kubernetes基础概念知多少

    kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用.高扩展性和可预测性的方式来管理容器应用的生命周期.通过k8s,用户可以定义程序运行方式.部署 ...

  6. 全网最详细!Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为程序猿这当然不 ...

  7. Java入门 - 语言基础 - 22.异常处理

    原文地址:http://www.work100.net/training/java-exception.html 更多教程:光束云 - 免费课程 异常处理 序号 文内章节 视频 1 概述 2 Exce ...

  8. 网鼎杯题目“phone”--十六进制mysql注入

    注册后,即可点击查看谁的电话和我类似. 注册时有三个必填项,分别是用户名.密码和电话.电话要求必须数字. 注册个1111的电话后,点击查看,返回有1个人电话和我类似,在注册一个为1111的,返回有2人 ...

  9. ERR : undefined reference to something

    序言: define : 定义.相信你用过 #define PI 3.141592653 (千万记得别在这句代码后加分号) reference : 引用 undefined reference to ...

  10. vwmare 十月第 1 弹

    step one 不管 是 ubuntu 还是 win vm tools 都是需要在虚拟的系统里面的去安装的. 这一点是相同的.