这是一个支持内网穿透的高性能反向代理应用~~~
本up猪采用的是服务端linux和客户端win搭建运行,故仅提供该系统下的搭建方法~~~
有关客户端frp的搭建方法详见另一篇文章:基于frp的内网穿透客户的端搭建
frp服务搭建
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
1.客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。 2.采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。 3.代理组间的负载均衡。 4.端口复用,多个服务通过同一个服务端端口暴露。 5.多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。 6.高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。 7.服务端和客户端 UI 页面。
网址:FRP github下载:releases
linux版本选择linux版本,windows端可以下载windows版本,服务器和客户端尽量保持版本一致,当前最新版本为0.57.0
注意:在更新到最新的frp服务后,所使用的文件从ini转换成toml,直接导致之前的教程大部分失效,本猪其实也不是很会www
服务端/lunix部署
linux端正常部署
1、创建frp目录
mkdir frp
2、创建一个frp目录后,进入该目录,使用如下命令
cd frp
//进入创建的frp目录
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_amd64.tar.gz
//下载frp0.49版本服务端软件包
若无wget命令,CentOS运行
yum install -y wget //安装wget软件
ubuntu或debian
apt install -y wget //安装wget软件
3、解压文件并进入解压文件夹
tar -zxvf frp_0.49.0_linux_amd64.tar.gz //解压文件
cd frp_0.49.0_linux_amd64 //进入解压文件夹
4、编辑frps.ini文件
vim frps.ini //编辑frps.ini文件
编辑以下内容
[common]
bind_port = 7000
# 启用面板
dashboard_port = 7500
# 面板登录名和密码
dashboard_user = admin
dashboard_pwd = xxxxxx
# 使用http代理并使用80端口进行穿透
vhost_http_port = 80
# 使用https代理并使用443端口进行穿透
vhost_https_port = 443
# 日志路径
log_file = ./frps.log
# 日志级别
log_level = info
# 日志最大保存天数
log_max_days = 7
# 认证超时时间
authentication_timeout = 900
# 认证token,客户端需要和此对应
token=123123123
# 最大连接数
max_pool_count = 5
max_ports_per_client = 0
保存退出
5、开放防火墙相关端口
CentOS系统开放端口命令(云服务器也需要在安全组加入对应端口):
firewall-cmd --zone=public --add-port=7000/tcp --permanent //开放7000端口
firewall-cmd --zone=public --add-port=7500/tcp --permanent //开放7500端口
firewall-cmd --zone=public --add-port=80/tcp --permanent //开放80端口
firewall-cmd --zone=public --add-port=443/tcp --permanent //开放443端口
firewall-cmd --reload //使能防火墙生效
ubuntu或debian系统:
ufw allow 80 //开启80端口
ufw allow 443 //开启443端口
ufw allow 7000 //开启7000端口
ufw allow 7500 //开启7500端口
ufw enable //启动防火墙
ufw disable //关闭防火墙
启动服务几种方式
正常启动
1、正常启动
./frps -c ./frps.ini
2、使用nohup后台挂起服务并记录日志
nohup ./frps -c frps.ini > ./frps.log 2>&1 &
关闭frp
ps -ef | grep frp //查看进程pid号
kill -9 pid号 //杀死进程
frp服务配置服务,并设置开机自启
1、建立启动脚本编写sh文件
#!/bin/bash
cd /frp/frp_0.49.0_linux_amd64/
echo 'pwd'|nohup ./frps -c frps.ini > ./frps.log 2>&1 &
将sh文件与frp服务放一起,命名为frp.sh
root@vultr:/frp/frp_0.49.0_linux_amd64# pwd
/frp/frp_0.49.0_linux_amd64
root@vultr:/frp/frp_0.49.0_linux_amd64# ls
frpc frpc_full.ini frpc.ini frps frps_full.ini frp.sh frps.ini frps.log LICENSE
给frp.sh 添加 可执行权限
vim /usr/lib/systemd/system/frp.service
注意ExecStart路径为自己本地的
[Unit]
Description=npc
After=network.target
[Service]
Type=forking
ExecStart=/frp/frp_0.49.0_linux_amd64/frp.sh
Restart=always
RestartSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动并测试
systemctl daemon-reload //使能服务生效
systemctl enable frp //配置开机自启
systemctl start frp //启动服务
systemctl status frp //查看服务状态
systemctl stop frp //关闭服务
docker部署
若还没安装Docker,请看我的另一篇文章Docker的安装与测试
1、创建frp.ini文件并创建目录
mkdir /frp
vim /frp/frps.ini
2、编辑frps.ini配置文件
[common]
bind_port = 7000
# 启用面板
dashboard_port = 7500
# 面板登录名和密码
dashboard_user = admin
dashboard_pwd = xxxxxx
# 使用http代理并使用80端口进行穿透
vhost_http_port = 80
# 使用https代理并使用443端口进行穿透
vhost_https_port = 443
# 日志路径
log_file = ./frps.log
# 日志级别
log_level = info
# 日志最大保存天数
log_max_days = 2
# 认证超时时间
authentication_timeout = 900
# 认证token,客户端需要和此对应
token=123123123
# 最大连接数
max_pool_count = 5
max_ports_per_client = 0
3、拉取镜像
docker pull snowdreamtech/frps:latest
4、启动docker容器
docker run --restart=always --network host -d -v /frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
5、docker相关命令
docker ps -a //查看运行中的容器
docker restart dockerID //重启镜像
docker stop dockerID //停止镜像
docker start dockerID //启动镜像
docker rm dockerID //删除镜像
6、配置docker自启,并镜像自动启动
systemctl enable docker //配置docker自启
docker ps -a //查看docker ID
docker update --restart=always dockerID //配置镜像自启
本文贴出up猪自己的配置文件以供参考:
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = '账号'
dashboard_pwd = '密码'
vhost_http_port = '端口号'
vhost_https_port = '端口号'
log_file = ./frps.log
log_level = info
log_max_days = 7
authentication_timeout = 900
token='你的token'
有关于客户端的frp配置稍后更细,诶嘿
虽然但是,反正也没人看。