参考文章:
十分钟教你配置frp实现内网穿透CentOS7 安装frp与开机启动frp实现内网穿透(centos7)

视频讲解


手把手带你在CentOS7搭建Frp


下载安装

官方项目地址:https://github.com/fatedier/frp

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端

下载

这里下载的是0.32.1版

wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz

解压

tar -xvf frp_0.32.1_linux_amd64.tar.gz

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_客户端_02

移动至 /usr/local

新建个文件夹mkdir /usr/local/frp 全部移动到 /usr/local/frp 里面 mv frp_0.32.1_linux_amd64/* /usr/local/frp/

配置systemctl来控制,服务端运行

vim打开文件 vim /usr/lib/systemd/system/frp.service 写入以下内容,注意上文的路径和此处有关。这里是启动的服务端

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

重新加载服务的配置文件 systemctl daemon-reload 现在就可以用 systemctl 套装来控制 frp 了。

启动/停止/重启,查看状态,设置开机自启/关闭开机自启

systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端_03

具体配置

参考文章:frp实现内网穿透(centos7) 服务端 frps.ini, 客户端 frpc.ini
各类配置可以参考官网:https://github.com/fatedier/frp/blob/master/README_zh.md

服务端

[common] 必须设置
bind_port 是自己设定的frp服务端端口
vhost_http_port 是自己设定的http访问端口
[ssh] ssh反向代理(不是必须设置)
listen_port 是自己设定的ssh访问端口
auth_token用于身份认证(以下皆是)。
[web] http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]);
type 为服务类型,可以设为http,https
custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。
[web2]同上(可设置多个)

实例

[common]
bind_port = 7000
vhost_http_port = 80
[ssh]
listen_port = 6000
auth_token = 123
[web]
type = http
custom_domains = test1.a.com
auth_token = 123
[web2]
type = http
custom_domains = test2.a.com
auth_token = 123

客户端

[common]必填
server_addrfrp服务端的ip(也就是外网主机的IP)
server_portfrp服务端的bind_prot。
[ssh]
local_port客户端ssh端口。
[web]
type对应服务端配置
local_port客户端访问端口。
[web2]同上

实例

[common]
server_addr = 10.10.10.10
server_port = 7000
auth_token = 123
[ssh]
local_port = 22
[web]
type = http
local_port = 80
[web2]
type = http
local_port = 8080

直接运行服务端效果

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_客户端_04

安装Windows客户端

官方下载传送门:https://github.com/fatedier/frp/releases 现在已经更新到0.32.1了。github下载慢可以去这里下载http://diannaobos.com/frp/

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_客户端_05


CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_客户端_06


解压打开来

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_07


配置一下 frpc.ini ,type填的http也可以根据需要修改。

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_08

[common]
server_addr = <远程frp服务器ip>
server_port = 远程frp服务器端口
privilege_token = 远程frp服务器token

[http]
type = http
local_ip = 127.0.0.1
local_port = 本地端口号
remote_port = 远程frp服务器的http服务端口号
custom_domains = 配置的域名

打开cmd,cd到这个路径,frpc.exe运行

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_09


运行会打印信息,出错就自行调整吧。

内网 web实际使用

服务端配置

frps.ini

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端_10


启动服务 systemctl restart frp 绑定本地7000端口,http访问端口8080,记得开放端口(安全组)。

客户端配置

frpc.ini

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_08


打开cmd,cd到这个路径,frpc.exe运行

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_09


看到打印成功了。

访问服务端的8080端口就相当于访问你本地的8080端口.

custom_domains:remote_port = local_ip:local_port

我们打开浏览器,访问 域名加端口,我的配置没域名,所以是公网IP:端口,即公网IP:8080。看到本地的web项目了。

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端_13

客户端web项目

我这里用的phpstudy,快速搭建的默认页面。

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_14


直接 localhost:8080 或 127.0.0.1:8080 即可访问

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_github_15

SSH

客户端frpc.ini配置参考

[common]
#frp服务端地址,可以填ip或者域名
server_addr = x.x.x.x 
#frp服务端端口,即填写服务端配置中的 bind_port
server_port = 7000 

[ssh]
#连接类型,填tcp或udp
type = tcp      
#填127.0.0.1或内网ip都可以        
local_ip = 127.0.0.1    
#需要转发到的端口,ssh端口是22
local_port = 22 
#frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口
remote_port = 6000

服务端frps.ini配置参考

[common]
bind_port = 7000
vhost_http_port = 8080
[ssh]
listen_port = 6000
auth_token = 123

ssh连接地址:server_addr:remote_portx.x.x.x:6000

记得放行remote_port(6000)端口

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端_16

文件访问服务

服务端常规配置

[common]
bind_port = 7000
vhost_http_port = 8080
bind_udp_port = 7001
privilege_token = 12345678
log_file = ./frps.log
log_level = info
log_max_days = 3

[ssh]
listen_port = 6000
auth_token = 123

客户端配置

[common]
#frps服务端IP
server_addr = x.x.x.x
#frps服务端端口
server_port = 7000
#校验
#privilege_token = 12345678 
#pool_count = 2
#log_file = ./frpc.log
#log_level = info
#log_max_days = 3

[static_file]
type = tcp
local_ip = 127.0.0.1
#frps服务端端口放行
remote_port = 7777
plugin = static_file
#本机目录,注意写法 此例子为windows linux则为/usr
plugin_local_path = D:\java8
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
#账号
plugin_http_user = admin 
#密码 
plugin_http_passwd = admin

访问地址为 x.x.x.x:7777/static/server_addr:remote_port/plugin_strip_prefix/

CentOS7搭建Frp 实现访问部署于内网的 web 服务 ssh访问内网机器 文件访问服务_服务端_17