前言:
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的版本即可。
找到版本后,在需要的版本上右键选择复制链接,然后在云服务器上用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
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
添加开机启动
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架构。
找到版本后,在需要的版本上右键选择复制链接,然后在云服务器上用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
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
注意:状态图是frps启动的,因为只需要观察active(running)所以并没有重新制作!
添加开机启动
systemctl enable frpc
到此,服务端和客户端,配置就结束了,配置完成后,可以用云服务器的ip:7500 登录到frps的状态面板,可以在面板内看到链接状态,以及流量使用状况,如果7500无法访问,请检查配置云服务器的安全组。
结尾:
frp,是不错的穿透工具,不过速度受制于 frps服务器的带宽,好处比较方便,并不会向ZT那般 需要双边客户端,如果不想看啰嗦的教程,可以付费有偿找我远程部署。
请登录后查看评论内容