简介
frp 是一个可用于内网穿透的高性能的反向代理开源应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
frp 使用Go 语言开发,得益于此,我们使用非常简单,只需要添加执行权限就可以运行了。如果需要将它运行在后台,作为服务的运行的话,就需要我们对系统有一定的了解了,下面我简单介绍一下,如何将 frp安装为系统服务
注意:在安装服务之前,请确保你的 frp 已经参照官方文档进行了正确的配置。
windows
若要将 frp 安装为 windows 的服务,我们需要借助第三方的开源工具 nssm 来实现,以下是操作步骤:
- 去
nssm
官网下载对应的工具,并解压到 D盘根目录 - 以管理员方式运行 cmd, 直接输入
d
按回车 切换到d盘 - 在cmd中运行 命令
.\nssm install
,此时会弹出 Gui - GUI 中选择你的frp路径,以及在
Arguments
中 正确的填入-c
完整配置文件路径,如图: - 点击
install service
后,cmd会提示:Service "frpc" installed successfully!
表示安装完成
以上就是将frpc 安装为windows服务的操作步骤了,如果是 frps 也是同样的操作,就不再赘述了。
Linux
相比 Windows,Linux 其实更简单,只需要将启动脚本放到相应的目录并加上执行权限就可以了
以下以 frpc 为例
init.d
建议使用 后面的 systemd 来管理
操作步骤:
- 将
frpc
文件写入在到/etc/init.d/frpc
, 并添加执行权限:chmod +x /etc/init.d/frpc
添加开机启动:
Centos:
chkconfig frpc on
Debian:update-rc.d frpc defaults
- 启动:
service frpc start
- 停止:
service frpc stop
- 重启:
service frpc restart
- 查看状态:
service frpc status
## File: /etc/init.d/frpc
#!/bin/sh
#
# frps: FRP-Client Daemon
#
# description: FRP-Client Daemon
# 请按实际情况修改
PID_FILE=/run/frpc.pid
CONFIG_FILE=/etc/frpc.ini
FRPC_File=/usr/local/frp/frpc
start()
{
if [ ! -f $PID_FILE ]; then
echo -n $"Starting FRP client..."
nohup $FRPC_File -c $CONFIG_FILE < /dev/null > /dev/null 2> /dev/null &
echo $! > $PID_FILE
echo ""
else
PID=$(cat $PID_FILE)
if [ ! -f /proc/$PID/cmdline ]; then
echo -n $"Starting FRP client..."
nohup $FRPC_File -c $CONFIG_FILE < /dev/null > /dev/null 2> /dev/null &
echo $! > $PID_FILE
echo ""
else
echo "FRP client is already running..."
fi
fi;
}
stop()
{
if [[ -f $PID_FILE ]]; then
echo -n $"Shutting down FRP client..."
kill -9 $(cat $PID_FILE)
rm -f $PID_FILE
echo ""
else
echo "FRP client is not running..."
fi;
}
status()
{
if [ -f $PID_FILE ]; then
PID=$(cat $PID_FILE)
if [ -f /proc/$PID/cmdline ]; then
echo "FRP client is running..."
else
echo "FRP client is not running..."
rm -f $PID_FILE
fi
else
echo "FRP client is not running..."
fi;
}
[ -f $FRPC_File ] || exit 1
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
sleep 3
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
systemd
将frpc.service 放到 /lib/systemd/system 后,执行以下命令就可以了:
- 重载命令:systemctl daemon-reload
- 添加开机启动:systemctl enable frpc
- 启动 frpc: systemctl start frpc
- 查看 frpc 状态: systemctl status frpc
- 重启 frpc : systemctl restart frpc
# 说明:如果是 frps 只需要修改相应的名字和路径就可以了
# frpc.service
[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target
[Service]
Type=simple
# 注意修改 frpc 和 frpc.ini的路径
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini
Restart=always
RestartSec=20s
User=nobody
[Install]
WantedBy=multi-user.target
指导
一、定义
NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。
二、下载地址
https://nssm.cc/download
三、使用说明
解压即可,进去目录 nssm-2.24/win64
目录输入cmd进入Powershell窗口
四、输入命令
.\nssm install
常用命令
安装服务:nssm install 服务名
删除服务:nssm remove 服务名
删除服务确定:nssm remove 服务名 confirm
修改服务(显示界面修改):nssm edit 服务名
启动服务:nssm start 服务名
停止服务:nssm stop 服务名
重启服务:nssm restart 服务名
注意
对于暴露到外网的端口,请务必使用强密码,最好生成20位的随机密码,在线生成随机密码
因 frp 使用弱密码被XX的例子,希望大家引以为戒!
实在要使用弱密码,请配合 frp 的 stcp 使用
参考:
https://gist.github.com/fenying/7684afbe24f20e07201fa790aec1511c
Comments | NOTHING