Frp 反向代理

2019-12-13 599点热度 0人点赞 0条评论

项目简介

https://github.com/fatedier/frp | https://github.com/fatedier/frp/releases

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

准备工作

  • 公网ip服务器(阿里云、腾讯云等) - 服务端
  • 内网服务器 - 客户端
  • frp

服务端安装

frps.ini是服务端的配置文件,这是一个简化版本,只包含了必须的配置项。 其余的配置项在frps_full.ini中,可以根据自己的需要在frps.ini中添加。

配置完成后可以使用命令直接运行

frps -c ./frps.ini

当然你也可以使用docker来部署,我做了一个frp及vlmcsd的镜像。

git clone https://gitee.com/Jalena/tools.git
cd tools 

# Use docker-compose service 
docker-compose up -d 

部署客户端

# 下载文件
wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd64.tar.gz

# 解压
tar zxvf frp_0.29.1_linux_amd64.tar.gz
cd frp_0.29.1_linux_amd64

# 拷贝程序及配置文件
mv frpc /usr/bin/frpc
mv frpc.ini /etc/frp/frpc.ini

# chown
chown root:root /usr/bin/frpc
chwon root:root /etc/frp/frpc.ini

自动启动

关于 systemd

systemd 是一个专用于 Linux 操作系统的系统与服务管理器。当作为启动进程(PID=1)运行时,它将作为初始化系统运行,也就是启动并维护各种用户空间的服务。

systemd 服务单元

systemd 拥有 11 个单元类型,分别是:服务(service)、套接字(socket)、设备(device)、挂载点(mount)、自动挂载点(automount)、 启动目标(target)、交换分区或交换文件(swap)、被监视的路径(path)、任务计划(timer)、 资源控制组(slice)、一组外部创建的进程(scope)。

其中,服务单元是以 .service 为后缀的单元文件,封装了一个被 systemd 监视与控制的进程。

服务的单元文件包括三个部分:[Service]、[Unit] 和 [Install]。

frps.service

[Unit]
Description=Frp Server Service # 服务描述
After=network.target # frps 将会在 network.service 启动完毕之后再启动

[Service]
Type=simple # 不论进程是否启动成功,systemctl start 都执行成功
User=nobody # 设置进程在执行时使用的用户
Restart=on-failure # on-failure 表示仅在服务进程异常退出时重启
RestartSec=5s # 设置在重启服务前暂停多长时间
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini # 在启动该服务时需要执行的命令行

[Install]
WantedBy=multi-user.target # 用于 systemctl enable 时创建软连接

frp的软件包中已经包含了systemd启动脚本,如果你不想修改脚本的话,可以直接将文件放到对应的位置,并将systemd启动脚本放到/lib/systemd/system即可。

cp frps.service /lib/systemd/system/

# 自动启动
systemctl enable frpc
systemctl start frpc

# 停止
systemctl stop frpc

# 查看启动状态
systemctl status frpc -l

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

文章评论