什么是frp

frp是一个使用非常简单的开源内网穿透软件,代码地址:https://github.com/fatedier/frp ,使用条前提你需要有一台公网服务器,大致原理是:公网服务器监听某个端口等待内网服务器连接,内网服务器连接成功后用户访问公网的某一个端口,访问的所有内容都会转发到内网服务器,也就是所有的请求都会经过公网服务器转发一次,还不是真正的完全内网穿透。

准备工作

  • 准备一台公网服务器,内网服务器可以直接用本地电脑模拟;
  • 本地电脑准备一个可访问的 http://127.0.0.1:8080 地址供测试;
  • 2端各下载好对应平台软件,下载地址:https://github.com/fatedier/frp/releases

 

java开源内网穿透项目 内网穿透 源码_运维

 

配置&启动

3.1 公网服务器

tar -zxvf frp_0.43.0_linux_amd64.tar.gz
mv frp_0.43.0_linux_amd64 frps
cd frps
# 删除客户端相关无用文件
rm -rf frpc*
vim frps.ini

frps.ini配置:

[common]
# 等待内网服务器连接的端口
bind_port = 7000
# 最终用户访问的端口(http)
vhost_http_port = 7080
# 最终用户访问的端口(https)
vhost_https_port = 7081
# 密钥,最好设置,避免你的服务器被他人冒用
token = 123456

启动:./frps -c ./frps.ini,不出意外的话就启动成功了:

java开源内网穿透项目 内网穿透 源码_java开源内网穿透项目_02

 

3.2 内网服务器(mac)

也就是你本机,假设以Mac为例:

tar -zxvf frp_0.43.0_darwin_arm64.tar.gz
mv frp_0.43.0_darwin_arm64 frpc
cd frpc
# 删除服务端相关文件
rm -rf frps*
vim frpc.ini

frpc.ini配置:

[common]
# 你的公网IP
server_addr = 112.*.*.*
# 前面设置的连接端口
server_port = 7000
# 前面设置的密钥
token = 123456

# 这个名字可以随便取web1、web2等,但是需要保证所有客户端唯一
[web1]
type = http
# 需要转发的内网端口
local_port = 8080
# 自定义域名,如果没有域名直接填写公网服务器的IP
custom_domains = 112.*.*.*

然后启动:./frpc -c ./frpc.ini,不出意外的话已经内网穿透成功了:

java开源内网穿透项目 内网穿透 源码_java开源内网穿透项目_03

 访问 http://公网IP:7080 返回的应该是 http://127.0.0.1:8080 的内容。

参考链接:frp内网穿透实战_u012804784的博客-使用条前提你需要有一台公网服务器,大致原理是:公网服务器监听某个端口等待内网服务器连接,内网服务器连接成功后用户访问公网的某一个端口,访问的所有内容都会转发到内网服务器,也就是所有的请求都会经过公网服务器转发一次,还不是真正的完全内网穿透。直接使用IP最多只能允许一台内网服务器访问连接,自定义域名可以解决此问题。内网服务器将即可看到的内容。

3.3 内网服务器(win)

下载 win 版本压缩包

【解压frp安装包】将frpc相关文件复制到内网服务器任意目录,在目录里创建start.cmd文件.

.\frpc.exe -c frpc.ini

frpc.ini配置:与 3.2 mac 版配置相同

3.4 其他配置 (web界面&多端口配置)

公网服务器frps配置

[common]

bind_port = 7000
dashboard_user = admin
dashboard_pwd = 123456

双击打开start.cmd,启动frp服务端

内网服务器frpc配置

[common]
server_addr = 168.130.10.8
server_port = 7000
dashboard_user = admin
dashboard_pwd = 123456

[frp-work]
type = tcp
local_ip = 192.168.1.122
local_port = 80
remote_port = 80

[frp-web]
type = tcp
local_ip = 192.168.1.133
local_port = 3081
remote_port = 3081

[frp-api]
type = tcp
local_ip = 192.168.1.133
local_port = 3082
remote_port = 3082

双击打开start.cmd,启动frp客户端

参考链接:

windows 使用frp实现内网映射到多个端口_ChinaLzw的博客_frp多端口转发设置准备1、公网服务器2、内网服务器3、安装frp,文档在这里,安装包在这里4、【解压frp安装包】将frps相关文件复制到公网服务器任意目录,在目录里创建start.cmd文件.\frps.exe -c frps.ini5、【解压frp安装包】将frpc相关文件复制到内网服务器任意目录,在目录里创建start.cmd文件.\frpc.exe -c frpc.ini如果有域名,先云解析,添加A记录公网服务器frps配置[common]bind_port = 7000dashboa

3.5 官方文档

文档 | frp了解如何部署、使用 frp。https://gofrp.org/docs/

开机自启:使用 systemd | frp

配置域名访问:https://gofrp.org/docs/examples/vhost-http/ 

        或试用 nginx 代理

server {
    listen       80;
    server_name  testfrp.haoji.me;
    location / {
           proxy_pass http://testfrp.haoji.me:7000;
    }
}

 提供文件访问:对外提供简单的文件访问服务 | frp

web界面:Web 界面 | frp 

配置参数:参考 | frp 

多端口:TCP & UDP | frp