跳到主要内容

Frp_搭建及使用

· 阅读需 4 分钟

Frp 搭建及使用

服务端设置

下载安装包

wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz

解压,进入目录

tar -zxvf frp_0.22.0_linux_amd64.tar.gz
cp -r frp_0.22.0_linux_amd64 frp #方便使用
cd frp
ls -a #查看文件

#只需要关注如下几个文件
frps
frps.ini
frpc
frpc.ini

前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。 因为我们正在配置服务端,可以删除客户端的两个文件

rm -f frpc

rm -f frpc.ini

然后修改frps.ini文件

vim frps.ini

这个文件应有如下格式

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
#如果没有必要,端口均可使用默认值,token、user 和 password 项请自行设置。
  • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
  • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
  • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
  • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
  • “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。

运行 frps 服务端

./frps -c frps.ini

此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面

后台运行 server 端

nohup ./frps -c frps.ini &

客户端设置

同上下载 tar 包,解压,删除 frps* 的文件

修改配置文件

vim frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000
token = won517574356
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

其中common字段下的三项即为服务端的设置。

  • “server_addr”为服务端IP地址,填入即可。
  • “server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
  • “token”是你在服务器上设置的连接口令,原样填入即可。

运行 frpc 客户端

./frpc -c frpc.ini

#放入后台运行
nohup ./frpc -c frpc.ini &

windows 放入后台运行 frpc

frpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。 在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit

frp 原理图

frp

nginx反向代理配置

修改 nginx.conf 文件

	# frp的接收http请求的反向代理
server {
listen 80;
server_name *.dev.yss.com dev.yss.com;

location / {
# 7071端口即为frp监听的http端口
proxy_pass http://127.0.0.1:7071;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;

}
# 防止爬虫抓取
if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
{
return 403;
}
}

nginx热加载配置文件

nginx -s reload

防火墙端口开放

# 开启防火墙端口   7000端口和7071端口即为上面配置的bind_port和vhost_http_port端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7071/tcp --permanent

# 开启后重启防火墙,使得刚刚的修改生效
firewall-cmd --reload