frp内网穿透

1. 简介

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

场景:钉钉免登回调地址需要一个公网地址,在开发过程中,可以通过frp完成本地调试,钉钉先回调到公网服务器地址,然后frp转发到本机,实现实时调试。

准备: 一台外网可以访问的服务器(Linux),例如:阿里云服务器 一台本地服务器,能够连接到互联网 下载地址:https://github.com/fatedier/frp/releases

2. 服务器安装配置

# 访问网址,下载最新linux版本
https://github.com/fatedier/frp/releases

2023-04-12_144321

# 上传到服务器,解压
tar -zxvf frp_0.48.0_linux_amd64.tar.gz
# 解压后,里面包括服务器配置文件和客户端配置文件,主要关注服务器配置文件
vim frps.ini
​

# 修改配置,注意服务器需要开通对应端口
[common]
# frp服务的端口号,可以自己定
bind_port = 9490
# frp的web界面的端口号
dashboard_port = 9491
# web界面的登陆账户,自己修改
dashboard_user = user
# web界面的登陆密码,自己修改
dashboard_pwd = pass
authentication_method = token
# frp客户端连接时的密码,自己修改
token = xxxxx
#启动
./frps -c ./frps.ini

3. 客户端安装配置

# 访问网址,下载最新windows版本
https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_windows_amd64.zip
​

解压后,编辑客户端frpc.ini

# 修改配置
[common]
# 解决login to server failed: EOF问题
tls_enable=true
# 你的云服务器的公网ip
server_addr = xx.xx.xx.xx
authentication_method = token
# 刚刚配置的frp连接密码
token = xxxxx 
# 刚刚配置的frp服务端口
server_port = 9490 
​
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 20022
​
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 23389
​
[web01]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 9492

客户端启动,文件目录下新建一个bat文件,双击直接运行

@echo off
frpc -c ./frpc.ini
pause

4. 添加开机启动脚本

# 编辑frps.service
vim /usr/lib/systemd/system/frps.service

[Unit]
Description=Frp Server Service
After=network.target
​
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp_0.48.0_linux_amd64/frps -c /usr/local/frp_0.48.0_linux_amd64/frps.ini
​
[Install]
WantedBy=multi-user.target

# 修改配置文件后更新
systemctl daemon-reload
# 启动
systemctl start frps.service
# 查看状态
systemctl status frps.service
# 停止
systemctl stop frps.service