简介
frp全名Fast Reverse Proxy, 是一个可用于内网穿透的高性能的反向代理应用,主要用于解决一些内网服务没有公网ip但是却需要提供外网访问的问题。使用frp可以将内网中的TCP、UDP、HTTP、HTTPS等协议类型的服务发布到公网,并且支持Web服务根据域名进行路由转发。
优点:小巧方便,部署简单
截至本文完成,frp的最新版本为v0.36.1,本文使用最新版本。
云服务器一台(或者有公网ip的机器);
内网服务器一台;
Frp脚本文件;
域名一个(可选);
基本linux操作命令。
下载地址:https://github.com/fatedier/frp/releases
注意事项:
1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透
2)根据服务器系统选择合适的脚本
Frp 结构很简单,分为 frps/frpc 两个可执行程序,在有公网地址的 VPS 上运行 frps 然后在家中内网运行 frpc 就行:
1、 查看结果,如果是“X86_64“即可选择”amd64”,
2、运行如下命令,根据架构不同,选择相应版本并进行下载
SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frp(以下两种命令均可)
arch
uname -m
3、新建目录 mkdir -p /usr/local/frp,上传frp_0.36.1_linux_amd64.tar.gz至linux服务器该目录下
4、解压tar -zxvf frp_0.36.1_linux_amd64.tar.gz
5、改个名字 cp -r frp_0.36.1_linux_amd64 frp
6、进入解压目录cd frp_0.36.1_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。
脚本主要分为服务端与客户端文件
1.服务器端用到的是Frps和Frps.ini
2.客户端用到的是Frpc和Frpc.ini
比如想把家中服务器的 ssh 端口 22 代理代理到外网 vps 202.115.8.1:221 上,那么在 vps 上编辑 frps.ini 配置文件:vim frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
#该端口就是以后访问web服务需要用到的端口
vhost_http_port = 10080
vhost_https_port = 10443
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。
个人配置如下
端口自行配置 修改完后 启动 frps
注:需要切换到文件目录
./frps -c frps.ini
如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。
此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面
至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。
后台启动:nohup ./frps -c ./frps.ini &
如果您出现了此类错误:在使用nohup命令的时候,经常由于输出nohup.out的路径没有写入权限,而无法使用nohup。
这是可以使用Linux重定向的方法,将nohup.out重定向至一个有写入权限的路径,或者直接扔到/dev/null中。
nohup ./program >/dev/null 2>/dev/null & program 为你的项目文件
此教程直接执行下面语句
nohup ./frps /dev/null &
再执行上面的后台启动命令
这样就会后台启动
同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。(这里仅介绍centos)
[common]
#外网-服务器端ip
server_addr = xx.xx.xx.xx
#外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000 #与服务端bind_port一致
公网通过ssh访问内部服务器
[ssh]
type = tcp #连接协议
local_ip = 192.168.40.128 #内网服务器ip
local_port = 22 #ssh默认端口号
remote_port = 6000 #自定义的访问内部ssh端口号
[web]
#配置类型为http协议
type = http
#内网机器的IP
local_ip = 127.0.0.1
#内网需要监听的端口
local_port = 80
#公网服务器的IP或者已解析的域名 这里如果你填了域名 请千万记得解析
custom_domains = xxx.xxxx.xxxx
如果上方代码custom_domains填的域名没有解析 ,则会出现以下情况!!!
所以一定要记得填的域名必须解析到对应服务器
下面是我个人配置:
启动命令: ./frpc -c frpc.ini 这是前台启动
后台启动命令:nohup ./frpc -c ./frpc.ini &
如果还是出现问题 显示下面这个就还是在本地的虚拟机执行上面服务器中那个命令
服务器开启后台启动成功了有时候也会出现上面的东西,请自行检查穿透是否成功!!
参考网址: