一、Frp简介
frp是一个可用于内网穿透的高性能的反向代理应用,支持tcp、udp协议,为http和https应用协议提供了额外的能力,且尝试支持了点对点穿透。
二、环境准备
1、需要一台可以直接访问外网的服务器,比如腾讯云的云服务器(CVM)服务端
2、需要做内网穿透的服务器,比如公司内部的局域网测试服务器(客户端)
下载地址:
https://github.com/fatedier/frp/releases

选择最新的就行,一般都是Linux环境。
三、内网穿透案例
1、服务端(又公网IP的)
# 创建frp存放目录
[root@VM-16-54-centos ~]# mkdir frp
# 下载压缩包
[root@VM-16-54-centos ~]# wget https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.3_linux_386.tar.gz
# 解压
[root@VM-16-54-centos ~]# tar -zxvf frp_0.34.3_linux_386.tar.gz -C ./frp
[root@VM-16-54-centos frp_0.34.3_linux_386]# pwd
/root/frp/frp_0.34.3_linux_386
[root@VM-16-54-centos frp_0.34.3_linux_386]# ll
total 19348
-rwxr-xr-x 1 1001 116 8392704 Nov 20 2020 frpc
-rw-r--r-- 1 1001 116 8328 Nov 20 2020 frpc_full.ini
-rw-r--r-- 1 root root 132 Jul 25 14:35 frpc.ini
-rwxr-xr-x 1 1001 116 11366400 Nov 20 2020 frps
-rw-r--r-- 1 1001 116 4928 Nov 20 2020 frps_full.ini
-rw-r--r-- 1 1001 116 250 Jul 25 12:48 frps.ini
-rw-r--r-- 1 root root 250 Jul 25 13:21 frps.ini.bak
-rw-r--r-- 1 1001 116 11358 Nov 20 2020 LICENSE
-rw------- 1 root root 2147 Jul 25 15:31 nohup.out
drwxr-xr-x 2 1001 116 4096 Nov 20 2020 systemd
说明:
frpc:客户端可执行程序
frpc_full.ini:客户端所有配置项(可以再此文件查看frp的所有的配置项)
frpc.ini:客户端配置项
frps:服务端可执行程序
frps_full.ini:服务端所有配置项(可以再此文件查看frp的所有的配置项)
frps.ini:服务端配置项
LICENSE:许可证
●服务端只需要编辑frps.ini文件
●客户端只需要编辑frpc.ini文件
# 服务端配置
[root@VM-16-54-centos frp_0.34.3_linux_386]# vim frps.ini
[common]
# 与客户端建立连接端口
bind_port = 7001
# 与客户端校验的token
token = my_token
# 提供web界面端口
dashboard_port = 7600
# web界面登录用户名
dashboard_user = admin
# web界面登录密码
dashboard_pwd = password
说明:默认的配置信息中只有一个绑定端口为7000,意思是我们在外网服务器中绑定7000端口和客户端进行通信。注:端口可以自定义,但是需要客户端和服务端进行统一,腾讯云cvm要在安全组开放7000端口
# 启动
[root@VM-16-54-centos frp_0.34.3_linux_386]# ./frps -c frps.ini
# 后台启动
[root@VM-16-54-centos frp_0.34.3_linux_386]# nohup ./frps -c frps.ini &
2、客户端(内网服务器)
1)客户端服务器可以访问外网
上传压缩包查看frpc.ini文件,修改为如下内容
[common]
# 连接frps的IP地址
server_addr = 124.222.214.105 #公网ip
# 连接frps的端口
server_port = 7001 #和bind_port要一直
# 和frps服务端校验的token
token = my_token
# 这里取名随意,一般有意义就行
[ssh1]
type = tcp
# 本地访问的IP地址
local_ip = 10.9.0.6 # 转发到的内网ip地址
# 本地访问的端口
local_port = 36000
# 在frps服务器上对应的端口 # 通过公网的端口进行转发
remote_port = 6000
#也可以在开放一个端口,看需求
[ssh2]
type = tcp
# 本地访问的IP地址
local_ip = 10.9.0.6
# 本地访问的端口
local_port = 36000
# 在frps服务器上对应的端口
remote_port = 6002
# 启动就好了
nohup ./frpc -c ./frpc.ini > file.log 2>&1 &
2)客户端服务器不可以访问外网
首先自己的pc端需要链接内网服务器的交换机
在自己的pc端安装frp到指定文件夹
修改文件:
# 修改frpc.ini文件
[common]
# 连接frps的IP地址
server_addr = 124.222.214.105
# 连接frps的端口
server_port = 7001
# 和frps服务端校验的token
token = my_token
# 这里取名随意,一般有意义就行
[ssh1]
type = tcp
# 本地访问的IP地址
local_ip = 10.9.0.6
# 本地访问的端口
local_port = 36000
# 在frps服务器上对应的端口
remote_port = 6000
[ssh2]
type = tcp
# 本地访问的IP地址
local_ip = 10.9.0.6
# 本地访问的端口
local_port = 36000
# 在frps服务器上对应的端口
remote_port = 6002
# 添加静态路由
C:\WINDOWS\system32>route add 10.9.0.0 mask 255.255.255.128 10.9.80.1
永久添加就是:route -p add 10.9.0.0 mask 255.255.255.128 10.9.80.1
# pc端启动服务
C:\Users\郭伟杰\Desktop\frp\frp_0.34.3_linux_386>./frpc -c frpc.ini

启动成功。别人就可以通过公网加指定端口链接穿透的服务器了,会直接跳转到内网服务器
[c:\~]$ ssh -p6000 root@124.222.124.105