感谢GitHub开源项目 https://github.com/fatedier/frp

2年前刚听说这个东西,用上之后爱不释手,强大之处毋庸置疑。

frp是一个开源的内网穿透工具,科学点叫点对点协议(隧道穿透)。

frp分为2块,一部分是server,部署在一台有公网ip的服务器上;另一部分是client,部署在内网的机器上(需要把服务暴露到公网的机器)

一、服务端配置

配置文件路径 /usr/local/frps/frps.ini
配置内容
[common]
bind_addr = 0.0.0.0 ##所有ip
bind_port = 7000 ##frp通讯端口
vhost_http_port = 80 ## http端口 可以不要
vhost_https_port = 443 ## https端口 可以不要
dashboard_port = 7500 ## 监控面板端口
dashboard_user = admin ##监控面板用户名
dashboard_pwd = admin ##监控面板密码
privilege_mode = true ##启用模块私有化 可以不要
privilege_token = 12345678 ##私有化权限token 可以不要
subdomain_host = test.com  ## 泛域名 可以不要,注意泛域名的a记录设置,否则解析不到哦

服务端启动   /usr/local/frps/frps -c /usr/local/frps/frps.ini

注意安全组和防火墙配置哦,确定公网服务是对外的

二、客户端配置

配置文件路径 /usr/local/frpc/frpc.ini
配置内容

[common]
server_addr = 服务端的公网ip
server_port = 7000 ##frp通讯端口
privilege_token = 12345678 ##私有化权限token 根据服务器端配置来
auth_token = 123 ## 自动授权

[ssh] ##创建一个ssh连接
type = tcp ##声明协议类型是tcp
local_ip = 192.168.0.26  ## 本地内网ip地址(可以配到别的电脑上,只要当前客户端电脑能与其通讯)
local_port = 22 ##ssh默认的端口 22 
remote_port = 6000 ## 远程端口,对应服务器上的一个端口

访问 ssh -oPort=6000 user-name@xxx.xxx.xxx.xxx   输入你的客户端账户名对应的密码就行了

[eureka]
type = http
auth_token = 123
local_ip = 192.168.0.26
local_port = 8761
subdomain = eureka  ##当服务器配置了 subdomain_host 属性时,可以增加此配置

访问 http://eureka.test.com 就可以访问到这个服务了

[mysql]
type = tcp
local_ip = 192.168.0.27
local_port = 3312
remote_port = 3312
[redis]
type = tcp
local_ip = 192.168.0.28
local_port = 6379
remote_port = 6379
可以加非常多种配置,1m的公网带宽都可以承受很多的服务,也比较稳定,唯一的问题是客户端声明一个服务端口,对应的服务器也要声明一个端口与之对应,可以不一样但是一定得对应上。
客户端启动   /usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini

有空了我会给出基于docker的frp虚拟化方式,等不及的同学可以直接私信或者关注我个人订阅号哦

axios 内网穿透 内网穿透方案_frp