服务器运维之Frp

标签: 无 分类: 未分类 创建时间:2024-02-05 00:17:36 更新时间:2024-11-15 10:49:45

1.前言

简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。

2.安装

(1) 下载后解压
直接下载相应版本的二进制包就可以解压运行了。

(2) 服务端配置
服务端配置 frps.ini 文件,我这里默认了。这里有一点要说明的就是,如果是阿里云服务,记得要开放安全组和防火墙,否则也不通的,这里我在配置的时候,这个安全组的配置还是费了功夫的,主要就是前后的两个安全组搞错了。

1
2
3
4
[common]
bind_port = 7000
# 去掉端口限制
tcp_mux = false

然后启动。

1
./frpcs.exe -c frpcs.ini

(3) 客户端配置
客户端配置 frpc.ini 文件,这里主要填写服务器地址, remote_port 是远程服务器的端口,local_port 是本地服务的端口,这样就可以通过 远程服务的ip,xx.xx.xx.xx:6000,访问到内网的 127.0.0.1:22 端口了。

1
2
3
4
5
6
7
8
9
10
11
[common]
server_addr = xx.xx.xx.xx
server_port = 7000
# 去掉端口限制
tcp_mux = false

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

然后启动。

1
./frpc -c frpc.ini

(4) 连接
客户端和服务端都启动后,就可以通过服务器的ip地址和端口,访问到客户端定义的端口了。

3.后台启动

如果作为服务器端的话,还要配置后台启动和自启动。

3.1.linux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 编辑配置文件
sudo vim /lib/systemd/system/frps.service
## 写入内容
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install]
WantedBy=multi-user.target


## 打开
sudo systemctl start frps
## 开机启动
sudo systemctl enable frps
参考文章:
【1】.使用frp进行内网穿透 简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。
【2】.Windows平台下FRP内网穿透的搭建 在windows平台上进行frp搭建
【3】.使用frp为内网服务器代理上网
【4】.高性能的内网穿透工具 frp 使用场景:统一的服务端配置;SSH 连接内网服务器;暴露内网 HTTP 服务;静态文件下载服务
【5】.Frp后台自动启动的几个方法 这里提供了两种方法,一种是使用systemctl进行管理,一种是使用nohup进行。

3.2.windows

新建启动bat,编写后台启动程序。

1
2
3
4
5
6
7
@echo off
rem 关闭程序
taskkill /F /IM frpc.exe
rem 绝对路径
cmd /c C:\Soft\frp\frpc -c C:\Soft\frp\frpc.ini
rem 相对路径
.\frpc.exe -c .\frpc.ini

新建启动vbs,设置定时任务。

1
2
set ws=wscript.createobject("wscript.shell")
ws.run "cmd /c C:\Soft\frp\frpc -c C:\Soft\frp\frpc.ini",0

开机自启动很好解决,借助任务计划就好了。这里不能直接放文件的绝对路径,要分开放。最下面起始于填文件的所在目录,上面再填文件名。否则会找不到文件,运行不了。

4.速度限制

在服务器端和客户端的 common 节点上,增加 tcp_mux = false ,去掉速度限制。

1
2
3
4
5
[common]
tcp_mux = false #去掉速度限制

[代理]
use_compression = true
参考文章:
【1】.Frp 内网穿透配置文件
【2】.frp 内网穿透速度慢,有什么好办法么? tcp_mux=false
【3】.frp传输速率减半的问题 use_encryption = true,use_compression = true
【4】.frp/conf/frpc_full_example.toml 客户端详细配置
【5】.frp/conf/frps_full_example.toml 服务端详细配置
【6】.frp启用加密和压缩功能 通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止传输内容被截取。如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。 作者:UP_小伟 https://www.bilibili.com/read/cv21795828/
【7】.Encryption and Compression The features are off by default. You can turn on encryption and/or compression: transport.useEncryption = true, transport.useCompression = true
【8】. frp/conf/legacy/frpc_legacy_full.ini 这是传统的配置方式,这里也有 use_encryption = false,use_compression = false 说明。
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。