# 配置 frp 实现内网穿透

frp 中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

一、frp 的作用

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

二、安装 frp

1. github下载地址:https://github.com/fatedier/frp/releases

公网、内网服务器都下载一份。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcv9vyWe-1591679254327)(https://cdn.learnku.com/uploads/images/202006/05/34227/V8d7lKRevc.png!large)]
找到第一条,然后下载frp_windwos_amd64.zip这个(amd64是64系统,386是32位系统,现在电脑基本64位了),比如图片上的frp_0.33.0_windows_amd64.zip

2、将frp_0.33.0_windows_amd64.zip解压至任意目录

3、进入解压目录这里所有 frpc 开头的文件都是客户端文件,所以全部删了,我们服务器只需要 frps 开头的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBUywWwI-1591679254329)(https://cdn.learnku.com/uploads/images/202006/05/34227/x1YyH5irtN.png!large)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RQlFQU2f-1591679254330)(https://cdn.learnku.com/uploads/images/202006/05/34227/odaQAGg6MW.png!large)]

4、配置服务端(公网服务器)
我们打开frps.ini(我用的notepad++编辑器,记事本也可以)
注意配置文件不支持注释,请不要把汉字复制进去

[common]
bind_port = 7000           #与客户端绑定的进行通信的端口
vhost_http_port = 6081     #访问客户端web服务自定义的端口号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k3gkYCkZ-1591679254332)(https://cdn.learnku.com/uploads/images/202006/06/34227/OyRcAXZViQ.png!large)]

保存然后打开cmd进入当前目录(cmd不会用自行百度),输入:frps.exe -c ./frps.ini,此时会提示网络防火墙安全警告,点允许
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z3CbuvNE-1591679254334)(https://cdn.learnku.com/uploads/images/202006/05/34227/aPLZULPGp4.png!large)]
提示 start frps success则服务启动成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owb5oH8y-1591679254335)(https://cdn.learnku.com/uploads/images/202006/05/34227/IaVLgIaxis.png!large)]
警告:云服务器一定要开放端口,不会开放自行百度,图中的7000是frp绑定的默认端口要打开,另外一个是http(用不到可以删了)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsg0L9Wm-1591679254335)(https://cdn.learnku.com/uploads/images/202006/05/34227/vsJNvzCYCM.png!large)]

至此服务端配置完成!

5、配置客户端(内网服务器),首先删掉 frps 开头文件文件,然后再进行配置,编辑 frpc.ini
注意配置文件不支持注释,请不要把汉字复制进去

[common]
server_addr = 155.94.169.143   #公网服务器ip
server_port = 7000            #与服务端bind_port一致

[yclj]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 3389是windows的远程连接端口
remote_port = 24567 # 远程服务器端口(自定义)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PRm58N98-1591679254336)(https://cdn.learnku.com/uploads/images/202006/06/34227/WwUDslb5Wm.png!large)]
保存然后执行
windows 使用cmd或者powershell进入当前目录,执行

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

6、访问方式
(1) 远程连接windows bind_post要绑定3389,其他的不行
ip:155.94.169.143:24567 (这个是服务器开放的端口,映射本地的3389)

三、结尾

1.客户端连接服务端提示访问被拒绝,则需要服务端开放防火墙端口(学习的话全开就行了,生产环境除外)。

2.其他功能请阅读 frp 中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md