frp内网穿透搭建

研究frp笔记,内网穿透,基于Ubuntu20.04的frp安装

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

一、下载frp

在github地址:https://github.com/fatedier/frp

Release:https://github.com/fatedier/frp/releases

以下是在服务器中的操作

1
2
3
4
5
6
7
8
9
# 创建文件夹
mkdir frp && cd frp

# 下载frp0.38版本(如果下载速度慢,可采用本地下载后,通过ftp传输到服务器中)
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gzß

# 解压指定目录
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64

当前所在目录即为frp

image-20220116194742762

二、运行frps

frp的服务端,需在服务器中运行

修改配置文件

根据frps_full.ini选出自己所需要的配置

常用配置信息:

frps.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[common]
; 绑定frps地址
bind_addr = 0.0.0.0
; frps端口号
bind_port = 7000

; 仪表盘配置
dashboard_addr = 0.0.0.0
dashboard_port = 7500

; 仪表盘账号密码
dashboard_user = admin
dashboard_pwd = admin

; 当前server端的日志输出文件
log_file = ./frps.log

; 日志等级 trace, debug, info, warn, error
log_level = info

; 日志保存最大天数
log_max_days = 3

; 验证方法
authentication_method = token

; token验证
token = 12345678

; if you want to support virtual host, you must set the http port for listening (optional)
; Note: http port and https port can be same with bind_port
; 虚拟http端口
vhost_http_port = 8080
; vhost_https_port = 443

; 域名设置
subdomain_host = yother.cn

将frps.ini保存在与frps同级目录下,运行命令

./frps -c frps.ini

将不会显示log信息,因为在frps.ini中设置了log_file的地址,如果想要在控制台中输出日志,注释即可

image-20220116195947509

如果服务器中有防火墙,需要打开70007500这两个端口,

并且在服务器后台管理中,将端口加入规则

1
2
3
4
# 使用的是ufw管理Ubuntu防火墙
# 开启端口
ufw allow 7000
ufw allow 7500

三、网关设置

个人服务器使用的nginx做网关,操作如下

设置子域名

在域名解析中,将子域名解析到当前服务器的ip

nginx配置

1
2
3
4
5
6
7
server {
listen 80;
server_name 域名解析中的子域名/域名;
location / {
proxy_pass http://127.0.0.1:7000;
}
}

四、运行frpc

在本机中设置frp的Client端

将release中的文件,下载到本机中,注意架构的选择

配置frpc.ini

解压目录下的frpc_full.in为所有的frpc的配置信息,同上

常用配置:

frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[common]
; 连接frps
server_addr = yother.cn
server_port = 7000

; 认证token
token = 12345678

; 日志保存目录
; log_file = ./frpc.log
; 日志等级 trace, debug, info, warn, error
; log_level = info
; 日志保存最大天数
; log_max_days = 3

# your proxy name will be changed to {user}.{proxy}
user = xxxxx

; [ssh]
; type = tcp
; local_ip = 127.0.0.1
; local_port = 22
; remote_port = 6000

[web1]
type = http
; 本机监听地址/端口
local_ip = 127.0.0.1
local_port = 8081
; 是否加密
use_encryption = false
; 是否压缩
use_compression = true
; 子域名[frp.yother.cn]
subdomain = frp

五、仪表盘

frp的web端,可直接查看frp的状态

image-20220116203404245

在frps.ini中的dashBoard配置信息

...frps.ini

1
2
3
4
5
6
7
; 仪表盘配置
dashboard_addr = 0.0.0.0
dashboard_port = 7500

; 仪表盘账号密码
dashboard_user = admin
dashboard_pwd = admin

注意,需要将7500端口打开

HTTP的连接信息

image-20220116203741823

六、运行结果

创建RestFul项目

image-20220116205502579

在浏览器测试连通

http://frp.yother.cn:8080/ping

image-20220116205700720