frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp,udp,http,https,stcp 协议。
frp需要服务端和客户端共同作用,服务端为 frps,一般安装在 vps 服务器上;客户端为 frpc,一般安装在路由器或 NAS 上。
frps 和 frpc 配置使用,可以远程访问或控制内网设备。
frps 一键安装
为了节省精力,这里使用 clangcn 的一键安装脚本
支持的平台:
Centos 6/7 32/64bit
Debian 6/7 32/64bit
Ubuntu 14 32/64bit
安装
下载脚本
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
修改权限
$ chmod 700 ./install-frps.sh
开始安装
$ ./install-frps.sh install
安装过程选项的说明
选项 说明 默认
download url frp 镜像源下载地址 aliyun
bind_port frp 提供服务的端口 5443
vhost_http_port http 服务端口 80
vhost_https_port https 服务端口 443
dashboard_port frps 仪表盘
用于查看 frp 工作状态 6443
dashboard_user 仪表盘登录账号 admin
dashboard_pwd 仪表盘登录密码 随机
token frps 和 frpc 通讯密码 随机
max_pool_count 每个代理的连接上线 50
log_level 日志等级 info
log_max_days 日志保留天数 3
log_file 是否开启日志 enable
tcp_mux 是否开启多路复用
减少 tcp 的握手延迟 enable
kcp support 是否开启 kcp enable
注意设置安全组或者防火墙
功能命令
命令 说明
frps start 启动
frps stop 停止
frps restart 重启
frps status 当前服务状态
frps config vi 编辑配置
frps version 查看版本
install–frps.sh update 更新脚本
install–frps.sh uninstall 卸载
fprc 配置
客户端以 Windows 系统为例,路由器或者 NAS 的对照参考即可
下载
在这里 frp 下载对应 frps 的版本
下载后只需要这三个文件即可
frpc.exe
frpc.ini
frpc_full.ini
配置
修改 frpc.ini 文件
[common]
server_addr = xxxxxx # 服务器 IP
server_port = 5443 # bind_port
token = xxxxxx # 与服务器一致
[test]
type = http # 类型
local_ip = 127.0.0.1 # 本地 IP
local_port = 80 # 本地端口
use_encryption = true # 传输加密
use_gzip = true # gzip 压缩
custom_domains = xxxxxx # 自定义域名
http_user = xxxxxx # 可选,访问账号
http_pwd = xxxxxx # 可选,访问密码
[test2]
type =
local_ip =
local_port =
use_encryption =
use_gzip =
custom_domains =
http_user =
http_pwd =
log_file = /dev/null
log_level = info
log_max_days = 3
启动
打开 cmd,运行 frpc.exe 即可
Nginx 端口转发
80 端口被 Nginx 占用的情况下
利用 Nginx 进行端口转发
这里 7080 是 frps 的 http 服务端口
添加站点文件 test.conf,内容如下:
server
{
listen 80;
server_name www.cnguu.cn;
location / {
proxy_pass http://127.0.0.1:7080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log off;
error_log /dev/null;
}