frp使用说明

frp项目地址:https://github.com/fatedier/frp

你下载他的release后windows defener一直报病毒,按理来说这种开源项目应该是没有问题的,哎,我也不懂,但我知道不用不行。。

软件是基于client server cs的逻辑设计的。

在服务器上用frps,在客户端上用frpc,这样就可以实现把客户端的一个端口映射到服务器上的一个端口。所以服务器是有公网ip的服务器,客户端能联网就行。

简单的样例:

服务端配置frps.ini:

token 就是密码的意思,不设置也可以,服务端客户端保持一致即可

[common]
server_port = 7000
token=xxxxxxxxxxxxxxxxxx

服务端运行命令:

frps -c frps.ini

客户端配置frpc.ini:

server_addr 填写服务器的公网ip

server_port是服务器frps的服务端口

token密码与服务器保持一致

下面中括号ssh,这里只是个人命名而已,写啥都行

意思是把本地的22绑定到服务器的8000上

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
token=xxxxxxxxxxxxxxxxxx

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8000

客户端命令:

frpc -c frpc.ini

为了持久化链接,你需要把这些命令搞成一个服务,我喜欢用init.d,下面给出一个init.d 的样例

服务器:

在/etc下创建一个frp文件夹,存放frp的可执行文件和配置文件,再写一个持久化连接脚本:

start_frps.sh:

#!/bin/bash

while true
do
ssans=`ps -aux | grep "/etc/frp/frps" | wc -l`
if [ $ssans -lt 2 ]
then
        (/etc/frp/frps -c /etc/frp/frps.ini >/dev/null 2>&1 &)
fi
sleep 60
done

windows直接传文件过去的话有可能有\r导致错误,建议cat出来,再复制到新创建的文件中,避免出现格式错误

ssans 小于2是因为,ps命令自己会带一个gerp的字符串,导致计数为1,如果存在目标进程,那么进程数就为2,否则我们就要创建了

在/etc/init.d下写一个服务frps内容为:

#!/bin/bash
### BEGIN INIT INFO
# Provides: frps
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: frps
### END INIT INFO

case "$1" in
start)
  ps -aux | grep "/etc/frp/start_frps.sh" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  ps -aux | grep "/etc/frp/frps" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  (bash /etc/frp/start_frps.sh > /dev/null 2>&1 &)
  ;;
stop)
  ps -aux | grep "/etc/frp/start_frps.sh" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  ps -aux | grep "/etc/frp/frps" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  ;;
restart)
  ps -aux | grep "/etc/frp/start_frps.sh" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  ps -aux | grep "/etc/frp/frps" | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
  (bash /etc/frp/start_frps.sh > /dev/null 2>&1 &)
  ;;
esac
exit 0

修改服务文件的权限为755

chmod 755 /etc/init.d/frps

添加服务

update-rc.d frps defaults

删除服务的命令是下面这个,如果出错调试会用到

update-rc.d -f frps remove

服务状态查看

service frps status

服务启动

service frps start

服务重启

service frps restart

服务停止

service frps stop

客户端是类似的,把frps改成frpc即可

文章目录