原因前文已述,不再多言。
frp 是一个反向代理应用。这里简单说一下啥是代理,代理可分为正向与反向两种。
正向代理,比如你想通过Google查点资料,结果被和谐了。这时呢,你下载了一款科学上网软件,装上它之后再连接Google,妥了。
背后原理是什么呢?
在这里科学上网充当了一个正向代理的角色,当你访问Google时,它把你浏览器的请求拿过来发到它在国外的服务器上,国外的服务器再向Google请求。 因为国外没有墙,自然能访问Google了。得到Google的回复后再转给你。对于Google来说,它认为是那个服务器访问的它。 服务器就是正向代理,正向代理隐藏了真实的客户端(你)。
反向代理,与此相反。
当你在北京访问 www.baidu.com 服务器 nginx 时,nginx 指派北京的服务器把你要的内容返还给你,因为北京这台服务器离你近,反应快; 当你在广州时,nginx 指派广州的服务器把内容返回给你,因为此时它发现广州的服务器离你近,反应快。
但是对于你来说,这一切都是透明的。你一直认为自己访问的就是 baidu,到底是那台服务器响应你的,你根本不关心。在这里 nginx 就是反向代理, 反向代理隐藏真实服务端。
我们安装的 frp 就是一个类似 nginx 的反向代理,你通过远程桌面连接它,它就指派公司电脑响应你。实现了远程办公的功能。
前提条件:
- 一个公网服务器(阿里云、腾讯云、华为云……);
- 公司电脑一台;
- 家里电脑一台。
配置服务端 frps:
下载
安装包地址https://github.com/fatedier/frp/releases,选择适合服务器的版本;
解压
解压之后可以看到一些frps为前缀的文件,这些是服务端(server)使用的;frpc前缀的文件是客户端(client)使用的。
frps_full.ini是示例文件,供我们参考。我们主要编辑frps.ini文件。
1 2 3 4 5 6 7 8 9 10 11
# 配置开始设置 [common] # frp 服务端端口(必须) bind_port = 7000 # frp 服务端token(必须) token = 12345678 # 仪表盘端口、用户名、密码(方便后台查看连接情况) dashboard_port = 7500 dashboard_user = admin dabshboard_pwd = admin
启动
1
frps -c frps.ini
这时就可以访问仪表盘查看连接情况等信息。例如 http://xxx.xxx.xxx.xxx:7500 ,输入用户名/密码(admin/admin)就 OK 了。
为了保证关闭终端后它依然工作需要使用nohup命令,例如:
1
nohup frps -c frps.ini
配置客户端 frpc:
下载安装包到公司电脑上任意目录,比如我放到 D:\tools\frp_0.28.0_windows_amd64.zip。解压。
打开frpc.ini,配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 配置开始 [common] # 你的服务器ip地址或者域名(就是上面配置服务端所在机器的地址) server_addr = 0.0.0.0 # 服务器端口,默认为7000(与上面服务端配置保持相同) server_port = 7000 # 类似于密码(与上面服务端配置保持相同) token = 12345678 # 远程桌面连接的名字,随意命名 [rdp] # 远程连接使用的协议 type = tcp # 本地ip,填你需要转发到的目的ip # 如果是转发到frp客户端所在本机则填 127.0.0.1 # 否则填对应机器的内网ip local_ip = 127.0.0.1 # 远程桌面连接使用的端口 local_port = 3389 # frp 服务端的远程监听端口,即你访问服务端的 remote_port 就相当于访问 # 客户端的 local_port,如果填0则会随机分配一个端口 remote_port = 7001
运行,使用 cmd 或者 PowerShell 进入目录,执行
1
frpc.exe -c frpc.ini
这样当在家用使用 mstsc 访问 xxx.xxx.xxx.xxx:7001 时,服务器就会指定这个客户端响应,也就是我们远程连接到公司电脑上了。
开机自启,编写批处理脚本frp.bat:
1 2 3 4 5 6 7 8
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM cd 你的目录 frpc -c frpc.ini exit
生成bat的快捷方式,并放在启动目录下
所有用户目录:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
或者当前用户:C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
即可开机自启。