Frps 与 Frpc 搭建

图片[1]-Frps 与 Frpc 搭建-RSG-人生观前言:

Frp 对于那些没有公网的小伙伴,可能并不陌生,可以提供穿透,进行访问到内网,用起来也很方便,但是Frp的速度,会受制于中转服务器的带宽影响,速度可能不会向zt这种udp打洞的方式穿透的带宽高,但是好处是他不需要双边都开一个客户端,而是更像是直像是反响代理了你家里的服务器。

教程:

Frp在GitHub的项目地址:GitHub – fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

Frp 远程转发服务器一段叫Frps,家里的客户端叫Frpc,两者都有Docker版本,和可执行的单文件版本,可以通过Linux发行的系统的systemctl或者rc.d 开机启动执行,所以基本上市面上的Linux系统都可以运行。

此教程,演示一下分别用Docker和直接在系统部署,这两种方式来搭建服务端,和客户端!

服务端:

Docker:Frps

docker部署,使用GitHub项目页面作者提供的镜像进行配置,因为服务端大部分都是Linux,这里我就不演示其他NAS系统的安装方法了。

这里我用的是docker compose 搭建的,docker官方搭建的脚本

curl -sSL https://get.docker.com | sh

这个命令因为是官方脚本,所以云服务器是在国内的请自行百度aliyun docker的加速安装地址,这里我就不提供了!

新建一个docker-compose.yaml文件,然后将下面的内容复制进去。

version: "2.1"
services:
  frps:
    network_mode: "host"
    container_name: frps
    volumes:
      - /mnt/frp/frps.ini:/etc/frp/frps.ini
###注意crt是映射的证书,如果不需要TLS加密等操作,西面这条请删掉或者用#注释。
      - /mnt/frp/crt:/etc/frp/crt 
    restart: always
    image: snowdreamtech/frps

这里有个需要注意的点,创建好docker-compose.yaml文件后红色的位置,是宿主系统的路径,在容器开始之前,请提前创建好路径以及内容,这里写的配置,是直接映射的配置文件,如果不线做好配置,在容器启动的时候会报错(以后docker版本更新可能会不报错,教程发布日docker的版本是会报错的)

cd /mnt/frp  ##进入要操作的路径
touch ./frps.ini  ##创建一个frps.ini的空文件

将下面的内容复制到frps.ini

nano ./frps.ini   ##用nano 编辑frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 61551
kcp_bind_port = 60551
bind_udp_port = 60552
#TLS加密
#tls_cert_file = /etc/frp/crt/server.crt
#tls_key_file = /etc/frp/crt/server.key
#tls_trusted_ca_file = /etc/frp/crt/ca.crt
#token 通讯鉴权密码
token = www.lxg2016.com
#dashboard_user 用户名
dashboard_user = lxg2016.com
#dashboard 密码
dashboard_pwd = lxg2016.com
#dashboard 面板端口,启动成功后可通过浏览器访问如http://ip:7500
dashboard_port = 7500

配置文件内的。token 、dashbord_user、dashbord_pwd可以根据自己需要更改。

配置完成后用Ctrl+o保存Ctrl+x退出编辑,在进入docker-compose.yaml文件路径使用docker compose up -d启动容器。

注意:如果使用docker compose up -d 提示无此命令,或者无法启动,这个是docker版本导致的差异,请改用docker-compose up -d l来启动容器。

启动后,可以用docker compose logs 查看容器日志,是否出现错误。

注意:部分云服务器,有独立的防火墙,或者安全组,请配置61551/tcp , 60551/tcp/udp , /60552/udp/tcp 端口开放。

Linux部署:Frps

Linux这边,我演示一下使用systemctl进行安装,rc.d的启动方式现在用的相对较少,所以这里就不演示了。

访问Release v0.45.0 · fatedier/frp · GitHub下载对应自己系统的版本,因为云服务器都是X86_x64的架构,所以在列表内找AMD64的版本即可。

图片[2]-Frps 与 Frpc 搭建-RSG-人生观

找到版本后,在需要的版本上右键选择复制链接,然后在云服务器上用wget命令下载。

wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz

解压下载到的文件。

tar -xzvf frp_0.45.0_linux_amd64.tar.gz

进入目录。

cd frp_0.45.0_linux_amd64

复制文件到指定目录

cp ./frps /usr/bin/
cp ./frps.ini /etc/
修改权限
chmod +x /usr/bin/frps
编辑配置
nano /etc/frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 61551
kcp_bind_port = 60551
bind_udp_port = 60552
#TLS加密
#tls_cert_file = /etc/frp/crt/server.crt
#tls_key_file = /etc/frp/crt/server.key
#tls_trusted_ca_file = /etc/frp/crt/ca.crt
#token 通讯鉴权密码
token = www.lxg2016.com
#dashboard_user 用户名
dashboard_user = lxg2016.com
#dashboard 密码
dashboard_pwd = lxg2016.com
#dashboard 面板端口,启动成功后可通过浏览器访问如http://ip:7500
dashboard_port = 7500

配置文件内的。token 、dashbord_user、dashbord_pwd可以根据自己需要更改。

配置systemctl:

进入systemctl的配置路径。

cd  /etc/systemd/system
创建frps的配置文件
touch ./frps.service

编辑frps.service

nano ./frps.service

复制下面内容到frps.service

[Unit]
Description=FRP Server Daemon

[Service]
Type=simple
ExecStartPre=-/usr/sbin/setcap cap_net_bind_service=+ep /usr/bin/frps
ExecStart=/usr/bin/frps -c /etc/frps.ini
Restart=always
RestartSec=20s
User=nobody
PermissionsStartOnly=true

[Install]
WantedBy=multi-user.target

Ctrl+O保存 Ctrl+x 退出编辑

使用systemctl 启动frps

systemctl start frps

查看frps启动状态

systemctl status frps

图片[3]-Frps 与 Frpc 搭建-RSG-人生观

添加开机启动

systemctl enable frps

注意:部分云服务器,有独立的防火墙,或者安全组,请配置61551/tcp , 60551/tcp/udp , /60552/udp/tcp 端口开放。

客户端:

客户端这边,我也做两种启动方式,一种是docker,一种是systemctl,docker演示的使用UNRAID来做。

docker:Frpc

在运行前,我们先写好配置文件,方便下一步直接启动,这里演示的是UNRAID的路径操作方法,其他系统仅供参考。

用UNRAID的命令窗口输入

进入appdata配置路径

cd /mnt/user/appdata

创建frpc 配置文件夹

mkidr ./frpc

进入frpc文件夹

cd ./frpc

创建配置文件

touch ./frpc.ini

编辑frpc.ini

nano ./frpc.ini

将下面的置内容复制到配置文件中。

[common]
##frps服务器ip
server_addr = 8.8.8.8
server_port = 61551
# protocol = kcp
##与服务器的token 相同的鉴权密码
token = www.lxg2016.com 
login_fail_exit = false
#tls_enable = true

##反代的项目名称
[traefik_http]
##穿透类型
type = tcp
##本地需要穿透服务的ip
local_ip = 192.168.1.3
##本地端口号
local_port = 80
##远程端口号
remote_port = 80
##传输真实ip
proxy_protocol_version = v2
##加密
use_encryption = true
##压缩
use_compression = true

[traefik_https]
type = tcp
local_ip = 192.168.1.3
local_port = 443
remote_port = 443
proxy_protocol_version = v2
use_encryption = true
use_compression = true

Ctrl+O保存 Ctrl+x 退出编辑

这里有一些需要注意的内容,我这里演示的,只是穿透到traefik,如果你启动了proxy_protocol_version = v2,请按照我之前的教程进行配置traefik,如果不需要传输真实ip的情况下,可以不添加此项目,加密还有压缩,都会额外消耗cpu的性能,具体根据实际情况选择性开启。

[ri-post id=”56002″ thumb=”left”]

[ri-post id=”55989″ thumb=”left”]

这时候就可以使用frps的IP加远程端口号(remote_port)进行访问本地的服务器了。

Linux配置:Frpc

Linux这边,我演示一下使用systemctl进行安装,rc.d的启动方式现在用的相对较少,所以这里就不演示了。

访问Release v0.45.0 · fatedier/frp · GitHub下载对应自己系统的版本,我这里演示的机器是x86_x64架构的处理器,如果是arm的请选arm架构。

图片[2]-Frps 与 Frpc 搭建-RSG-人生观

找到版本后,在需要的版本上右键选择复制链接,然后在云服务器上用wget命令下载。

wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz

解压下载到的文件。

tar -xzvf frp_0.45.0_linux_amd64.tar.gz

进入目录。

cd frp_0.45.0_linux_amd64

复制文件到指定目录

cp ./frpc /usr/bin/
cp ./frpc.ini /etc/
修改权限
chmod +x /usr/bin/frpc
编辑配置
nano /etc/frpc.ini
[common]
#frps服务器ip
server_addr = 8.8.8.8
server_port = 61551
# protocol = kcp
##与服务器的token 相同的鉴权密码
token = www.lxg2016.com 
login_fail_exit = false
#tls_enable = true

##反代的项目名称
[traefik_http]
##穿透类型
type = tcp
##本地需要穿透服务的ip
local_ip = 192.168.1.3
##本地端口号
local_port = 80
##远程端口号
remote_port = 80
##传输真实ip
proxy_protocol_version = v2
##加密
use_encryption = true
##压缩
use_compression = true

[traefik_https]
type = tcp
local_ip = 192.168.1.3
local_port = 443
remote_port = 443
proxy_protocol_version = v2
use_encryption = true
use_compression = true

这里有一些需要注意的内容,我这里演示的,只是穿透到traefik,如果你启动了proxy_protocol_version = v2,请按照我之前的教程进行配置traefik,如果不需要传输真实ip的情况下,可以不添加此项目,加密还有压缩,都会额外消耗cpu的性能,具体根据实际情况选择性开启。

[ri-post id=”56002″ thumb=”left”]

[ri-post id=”55989″ thumb=”left”]

配置systemctl:

进入systemctl的配置路径。

cd  /etc/systemd/system
创建frps的配置文件
touch ./frpc.service

编辑frpc.service

nano ./frpc.service

复制下面内容到frpc.service

[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/bin/frpc -c /etc/frpc.ini
Restart=always
RestartSec=20s
User=nobody

[Install]
WantedBy=multi-user.target

Ctrl+O保存 Ctrl+x 退出编辑

使用systemctl 启动frps

systemctl start frpc

查看frps启动状态

systemctl status frpc

图片[3]-Frps 与 Frpc 搭建-RSG-人生观

注意:状态图是frps启动的,因为只需要观察active(running)所以并没有重新制作!

添加开机启动

systemctl enable frpc

到此,服务端和客户端,配置就结束了,配置完成后,可以用云服务器的ip:7500 登录到frps的状态面板,可以在面板内看到链接状态,以及流量使用状况,如果7500无法访问,请检查配置云服务器的安全组。

结尾:

frp,是不错的穿透工具,不过速度受制于 frps服务器的带宽,好处比较方便,并不会向ZT那般 需要双边客户端,如果不想看啰嗦的教程,可以付费有偿找我远程部署。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共1条

请登录后发表评论

    请登录后查看评论内容