frp用于没有公网IP的场合,比如办公室电脑连接的网络没有公网IP,你在外面就无法访问到家中电脑(除非使用向日葵等软件,这些软件也是内置了内网穿透的客户端,服务器是他们公司提供,所以这类软件不可能会免费使用,就会对客户端进行限速,远远没有windows自带的远程桌面流畅,当然也可以自制远程桌面软件)。这时就需要用到frp内网穿透,将你的电脑数据发送到frp服务器上,这样你在外网可以通过访问frp服务器来访问你家中的电脑。
  具体操作:需要先在具有公网IP的服务器(电脑)上安装frp服务端,再在需要被访问的电脑(或路由器)上安装frpc客户端,然后修改客户端配置文件,连接服务端,服务端打开对应的端口。


frpc 客户端

  先在github上下载frp的软件包,里面包含客户端和服务端,只有十几兆大小。frp中文文档 https://github.com/fatedier/frp/blob/master/README_zh.md frp下载地址https://github.com/fatedier/frp/releases 下载windows amd64.zip.

  解压后先将文件夹放进安全隔离区,否则系统会删除,编辑frpc.ini文件,文本打开

#服务器数据匹配认证
[common]
server_addr = fd.laohu.space #公网服务器ip
server_port = 7000 #与服务端bind_port一致 不修改
taken = 123 #服务器端密钥

#客户端数据
[zhuji-AAA] #客户端名称 必须修改,每个客户端名称必须不同
type = tcp #网络通讯协议
local_ip = 127.0.0.1 #本地IP地址,默认即可
local_port = 3389 # 需要穿透的端口,3389是windows远程桌面的连接端口
remote_port = 24567 # 远程服务器端口(自定义) 必须修改

设置完后 使用cmd/powershell 进入当前目录,执行下列命令启动客户端

./frpc.exe -c ./frpc.ini

报错1:

2023/03/19 10:32:39 [E] [service.go:289] token in login doesn't match token from configuration
2023/03/19 10:32:39 [W] [service.go:133] login to server failed: token in login doesn't match token from configuration
token in login doesn't match token from configuration

chatgpt:这个报错提示登录时提供的 token 值与配置文件中的 token 值不匹配。这可能是由于在配置文件中使用了错误的 token 值或者在登录时使用了错误的 token 值导致的。请检查配置文件中的 token 值是否与登录时提供的值匹配,并尝试重新登录。

这个问题就很麻烦,因为我服务器是在openwrt路由器上安装的,可能是它上面设置的密码的格式和客户端设置的密码格式不一样,就导致即使输入相同的密码也无法连接。只能是把密码取消掉,但是如果客户端在路由器上登录,又必须要填写密码,就搞得很头疼。

报错2:

lk, jm hngbvgcfxdsznjmk hbgvfcx 

端口要设定在服务器允许的范围内,默认是 10000-50000
服务器需要开放对应的端口,不然防火墙就阻止了。

如果电脑是通过路由器的frp客户端连接frp服务器,电脑需要开启防火墙的7000端口。

开机自启动frp客户端

新建个bat文件

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd frp所在路径
frpc -c frpc.ini
exit

创建bat文件的快捷方式,放到开机自启动文件夹内

win+r 输入:shell:startup 进入自启动文件夹

frps 服务端

服务端跟客户端类似,