杂货屋

frps服务端搭建教程(linux)

说明

前面本博客已经有文章说明了frp服务端客户端推荐的配置,详情请查看frp配置推荐模板,不过很多人对于搭建自己的frp服务端还是一头雾水,这里手把手详细的说一遍,适用于linux(包括可以ssh登录的路由器),网上也可以搜索到很多一键脚本什么的,不过看了一下,配置都很旧,而且搭建过程中遇到的各种坑也没有说明,这里也详细记录说明一下。

前期准备

1、一台具有公网ip的机器(动态的也可以),这里以vps为例,点击购买
2、putty+winscp(点击下载,当然也可以用其他类似的工具)

搭建

很多人都在用宝塔linux面板,也的确挺好用,这里就以安装了宝塔面板的机子搭建frp为例

一、安装宝塔
当然也可以不安装,不想安装或者在路由器上搭建的可以忽略这一步。

1、putty登录vps服务器

首次次连接,会出现以下弹窗。点击是即可

根据提示,输入你要登录的账户,请使用root账户登陆,输入root回车,
然后输入密码,输入密码时是没有反应的,一直输入完成,然后回车就可以了。

2、安装宝塔面板
选择对应系统的命令,复制然后到putty右键单击即可粘贴。这里以系统centos7_64为例

Centos安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

其他系统参见宝塔linux面板

安装过程中会有提示,选择y继续即可

安装完成后会出现面板地址及默认账号与密码

访问ip:8888,输入账号与密码即可使用宝塔

二、搭建frps服务端

这里以最新版本的服务端搭建为例

1、下载frp
这里系统为linux64位,所以选择frp_0.24.1_linux_amd64.tar.gz,其他的选择相应版本(一般路由器为arm或者mips,苹果系统为darwin)

然后解压

可以看到包含客户端和服务端文件,只需要图中两个文件就够了(frp是由go编写的,使用时并不需要安装,相当于平时win里面的绿色版,直接配置完启动即可)

2、winscp登录vps/路由器,把frps和frps.ini两个文件拖进去

一般我们放在/root文件夹,当然也可以放其他的

3、配置frps
打开frps.ini文件,把以下内容复制进去,完全不需要改也可以(当然可以部分更改,比如token,详细说明见frp配置推荐模板

[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
kcp_bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
log_max_days = 7
authentication_timeout = 0
token = frp888
allow_ports = 1-65535
max_pool_count = 20
max_ports_per_client = 20
log_file = ./frps.log
log_level = info

4、提高frps执行权限

在winscp里右键frps文件-属性,把frps权限改为0755

5、启动frps

用putty登录linux/路由器,使用命令./frps -c ./frps.ini启动

如果是放在其他目录,则先用cd命令切换到对应目录,再用以上命令启动

常见问题

1、端口占用
很多人搭建服务端时报错,提示端口占用,一般是80、443端口占用(linux查看端口占用情况

1.1、一般centos会默认自带Apache,它的httpd会占用80端口,用winscp登录以后,进入路径/etc/httpd/conf/httpd.conf,打开httpd.conf文件,搜索80,然后把80改成其他端口(有443的,把443改为其他端口)。

1.2、宝塔里面如果建了网站的话,nginx/apache也会占用80端口导致启动frps失败
登录宝塔面板,进入路径/www/server/panel/vhost/nginx或者/www/server/panel/vhost/apache

一个个打开路径下的文件,把里面的80都改为81(有443的,把443改为448)

这样宝塔里面的网站就用的81端口,而frps就用80端口了(如果网站也想用80怎么办?再在vps/路由器里搭一个frpc客户端,把81穿透到80即可,我的https://freenat.win 就是448端口穿透到了443)

2、客户端连不上搭建的frps服务端

搭建好服务端后我们首先要确认的是frps是否正常启动运行中了,而不是拿frpc客户端直接去连。

浏览器打开server_ip:7500,如果打不开,基本上是frps服务端没启动或者防火墙没打开端口,

在putty里用 ps aux | grep frps命令查看进程是否存在,如果存在,则检查防火墙问题。

2.1、防火墙有两种,一种是vps面板的防火墙(像腾讯云、阿里云、ucloud这些面板里都有一个防火墙,需要把用到的端口都打开,包括tcp、udp等,自行百度怎么开启);
2.2、还有一种是系统防火墙,linux基本上都有,不同系统的防火墙不一样,有iptables、firewall、ufw等,用宝塔面板可以接管系统防火墙,只需要在宝塔面板设置即可(不用宝塔linux面板的,自行百度开启防火墙)

这里我开启了全部端口1:65535,
注意:这里有一个坑,宝塔这里开启的只是tcp端口,udp并没有开,如果frp要用kcp连接的话还需要手动开启相应的udp端口。

以centos7为例,系统防火墙为firewall,打开文件/etc/firewalld/zones/public.xml
手动加上udp的那一条规则

3、保持后台运行
一般./frps -c ./frps.ini命令启动是不能关闭ssh窗口,也不能动它,不然运行会停止,
确认frps没问题后,我们可以用nohup ./frps -c ./frps.ini & 来启动frps,这样我们就可以安心退出窗口了。

4、开机启动/进程守护
其实有了进程守护基本都不需要设置开机启动了,进程守护比开机启动更好用,这里以宝塔面板为例设置进程守护(当然也可以用supervisor来进程守护)
进入宝塔面板,添加计划任务,复制以下脚本内容进去,保存即可。

ps aux | grep /root/frps.ini | grep -v grep >/dev/null
if [ $? -ne 0 ];then
/root/frps -c /root/frps.ini &
fi

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »