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即可