frp实现内网穿透
前置条件:
- 需要一台有公网IP的云服务器
这里使用debian系统:
安装与使用
下载frp包
进入到/usr/local目录:
cd /usr/local
下载frp
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
等待下载完成

解压frp
tar -zxvf frp_0.65.0_linux_amd64.tar.gz
配置frp服务端
# 重命名
mv frp_0.65.0_linux_amd64 frp
# 进入目录
cd frp
# 修改配置文件
vim frps.toml
输入i编辑
配置文件:
# 服务端端口
bindPort = 7000
输入:wq保存退出。
启动服务
./frps -c frps.toml

启动成功
ps:配置完成后,需要开放服务器对应端口,云服务官网配置或防火墙配置,这里开放7000端口。
客户端配置
根据系统下载对应的frp包,这里windows下载amd64包。

解压,配置frpc.toml文件:
#你frp服务端的ip和端口
serverAddr = "<你的服务器ip>"
serverPort = 7000[[proxies]]
#映射名称和类型
name = "test"
type = "tcp"
#映射内网的ip和端口
localIP = "127.0.0.1"
localPort = 80
#你要映射的服务器端口
remotePort = 7001
保存,打开CMD命令行并进入到当前目录启用:
frpc.exe -c frpc.toml

启动成功!
浏览器访问<ip>:<远程端口>,成功访问到本地内网:

ps:配置完成后,需要开放服务器对应端口,云服务官网配置或防火墙配置,这里开放7001端口。
服务管理与开机自启
安装systemd
使用systemd管理,debian安装systemd(云服务器默认一般会有):
apt install systemd
创建frps service
新建一个服务文件
vim /etc/systemd/system/frps.service
写入内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml[Install]
WantedBy = multi-user.target
输入:wq保存退出
使用systemd管理frp
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

启动成功!
设置开机自启
systemctl enable frps
共享文件
如果需要使用文件共享,客户端做以下配置:
#你frp服务端的ip和端口
serverAddr = "<你的服务器ip>"
serverPort = 7000[[proxies]]
name = "test_static_file"
type = "tcp"
remotePort = 7009
[proxies.plugin]
type = "static_file"
# 本地文件目录,对外提供访问
localPath = "frp共享文件"
# URL 中的前缀,将被去除,保留的内容即为要访问的文件路径
stripPrefix = "static"
# 账号密码,可不写进行无账号密码访问
httpUser = "abc"
httpPassword = "123456"
浏览器打开对应路径可共享文件

ps:配置完成后,需要开放服务器对应端口,云服务官网配置或防火墙配置,这里开放7009端口。
以上是frp技术的分享:更多细节参考github或官方文档。