frp简介
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
内网穿透工具来让外网与你家内网建立起连接,实现无公网 IP 的远程访问了。
FRP 服务端和客户端是同一个压缩包,下载链接:
https://github.com/fatedier/frp/releases
我这边服务端是 CentOS7 系统,客户端是Windows10。
注: 除http(s)以外,客户端内任何本地端口的修改,必须在以下范围内:
默认端口白名单:2000-3000,3001,3003,4000-50000
客户端 frpc.ini
文件的 server_port
值和服务端 frps.ini
的 bind_port
值必须一致。
服务端
服务端下载 Linux amd64 版本:
wget -c https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar xzf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
ls
解压后程序目录共有以下文件:frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
frpc frpc_full.ini frpc.ini
这三个是客户端文件,可以直接删除
rm -rf frpc*
查看服务端配置文件 frps_full.ini frps.ini
可知,FRP访问默认监听端口为 7000,管理面板默认端口为 7500,账户和密码都默认为 admin
如阿里云或腾讯云,记得设置 安全组策略
使得以上端口 允许入站和出站
默认端口白名单:2000-3000,3001,3003,4000-50000frps_full.ini
allow_ports = 2000-3000,3001,3003,4000-50000
修改 frps.ini 设置
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = xx
dashboard_pwd = xx
运行一下命令即可启用 FRP 服务:
./frps -c frps.ini
或启动守护进程到后台运行
nohup ./frps -c frps.ini > nohup.out 2>&1 &
CTRL+Z
暂停正在执行的进程,并放入后台jobs
查看当前后台进程bg %1
继续执行后台暂停的进程。程序后台运行,信息输出仍然在前台屏幕输出
jobs
查看后台进程作业号fg %1
重新放回前台
http://blog.catmes.com/archives/nohup.html
客户端
远程服务器的 remote_port
端口,由本地客户端配置文件决定
默认端口白名单:2000-3000,3001,3003,4000-50000
frpc.ini
配置客户端。
remote_port
远程服务器端口(映射到本地电脑) 对应远程服务器nginx proxy_pass反向代理的端口local_port
本地机器端口(与 remote_port 配对)
将本地的8000端口映射到远程服务器的8888端口
[common]
server_addr = 121.46.36.159
server_port = 7000
; [ssh]
; type = tcp
; local_ip = 127.0.0.1
; local_port = 22
; remote_port = 6000
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8000
remote_port=8888
启动客户端:
Windows 10
c:\frp\frpc.exe -c c:\frp\frpc.ini
Linux
./frpc -c frpc.ini
shell
#!/bin/bash
frpdir=/opt/apps/frp_0.36.2_linux_amd64/
${frpdir}frpc -c ${frpdir}frpc.ini
使用 NGINX 对80和443端口进行端口转发
出于访问80和443端口的需要,FRP 默认的端口白名单,无法满足需求。
而服务端刚好又安装了 NGINX ,默认监听 80 和443 端口。可用 NGINX 对指定域名做反向代理设置。
例:把 80 端口的请求转发到本地 8888 端口(8888端口为客户端的frpc.ini文件remote_port设置项)
server {
listen 80;
server_name yourtest.test;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8888;
}
}
proxy_pass http://127.0.0.1:8888;
nginx 每一行语句必须以 分号 ; 结束。
反向代理的地址,不加 http ,直接用IP会报错。
proxy_set_header Host $host;
此项不设置,无法获取访问的域名和站点,所以本地NGINX会解析到访问默认站点。
FRP 简单入门安装配置教程 - 开源免费内网穿透工具,无公网 IP 远程访问 https://www.iplaysoft.com/frp.html
frp内网穿透学习 https://www.cnblogs.com/BOHB-yunying/p/12693675.html
内网穿透服务器 https://blog.csdn.net/deng_xj/article/details/88952420
利用nginx与frp/ngrok实现内网穿透,将网站架在自己家里或者公司内部 https://blog.csdn.net/miw__/article/details/89355689