目录

Frps使用说明

frp 简介

frp 让本地局域网的机器可以暴露到公网,简单的说就是在世界的任何地方,你可以访问家里开着的那台电脑。 FRP 支持 TCP、UDP、HTTP、HTTPS, 就是说不仅仅限于本地web服务器可以暴露,整台机器都可以暴露,windows的远程控制,mac和linux的ssh都可以被暴露。

配置 FRP 服务端的前提条件是需要一台具有**公网 IP **的设备,得益于 FRP 是 Go 语言开发的,具有良好的跨平台特性。你可以在 Windows、Linux、MacOS、ARM等几乎任何可联网设备上部署。

frp 架构

https://mingyue-1300243549.cos.ap-chengdu.myqcloud.com/picgo/20191205/frp-index.png

frp 原理

frp 主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。隐藏用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信

https://tc.ctq6.cn/tc/未命名文件.png

  • 首先启动frpc,frpc启动后会向frps注册,也就是内网WEB服务器会向VPS请求注册。
  • 客户端请求frps,也就是当我们的攻击机去访问frps。
  • frps告知frpc有新请求,需要建立连接,也就是VPS告知内网WEB服务器,需要建立连接。
  • frps收到frpc的请求,建立新的连接,也就是VPS接收到了内网WEB服务器的请求,建立了新的连接。
  • frps把frpc和攻击机的流量互相转发,将frps服务器当成流量中转站,也就是VPS将攻击机的流量转发给内网WEB服务器,把内网WEB服务器的流量转发给攻击机

frp 使用systemd管理

安装frps

1
2
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz -P /usr/local/src

配置服务端frps

 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
# 复制进程
cp /usr/local/src/frp/frps /usr/local/bin/frps
cp frps.ini /etc/frp/frps.ini
# 拷贝配置文件
cp frps.ini /etc/frp/frps.ini
# 服务端配置文件说明
cat > /etc/frp/frps.ini <<- 'EOF'
[common]
bind_port = 7000
vhost_http_port = 8000
#subdomain_host = 01member.com
log_level = debug
pool_count = 0
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456
EOF
# 配置systemd管理
cat > /usr/lib/systemd/system/frps.service <<- 'EOF'
[Unit]
Description=frps
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl enable frps
systemctl start frps
systemctl status frps

配置客户端frpc

 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
# 复制进程
cp /usr/local/src/frp/frpc /usr/local/bin/frpc
# 拷贝配置文件
cp /usr/local/src/frp/frpc.ini /etc/frp/frpc.ini
# 客户端配置文件说明
cat > /etc/frp/frpc.ini <<- 'EOF'
[common]
server_addr = 10.100.29.41
server_port = 7000

[ssh]
type = tcp
local_ip = 10.20.127.65
local_port = 6667
remote_port = 6667
EOF

# 配置systemd管理
cat > /usr/lib/systemd/system/frpc.service <<- 'EOF'
[Unit]
Description=frpc
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl enable frpc
systemctl start frpc
systemctl status frpc