Linux下Frps服务端一键配置脚本

介绍

说明:Frp估计很多人都用过,一个高性能的内网穿透工具,支持tcpudphttphttps协议,安装和使用教程可以直接查看官方中文文档→传送门,写的超详细。这里博主分享个某大佬写的Frps一键脚本,使用起来很方便,想快速上手的可以用下。

安装使用

原项目地址:https://github.com/dylanbai8/frpspro

我的地址:https://github.com/songwqs/frpspro

系统要求:CentOS 7+Debian 8+
0.52.0以上版本

wget -N --no-check-certificate https://git.songwqs.top/https://raw.githubusercontent.com/songwqs/frpspro/master/ff.sh && chmod +x ff.sh && bash f.sh install

0.51.3版本:

wget -N --no-check-certificate https://git.songwqs.top/https://raw.githubusercontent.com/songwqs/frpspro/master/f.sh && chmod +x ff.sh && bash f.sh install
使用Doker快速安装

start frps:  frps.toml文件

docker run --restart=always --network host -d -v /root/frps/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

start frpc: frpc.toml文件

docker run --restart=always --network host -d -v /root/frpc/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

加速拉取

frpc:

docker pull hub.songwqs.top/snowdreamtech/frpc:latest

docker tag hub.songwqs.top/snowdreamtech/frpc:latest snowdreamtech/frpc:latest

frps:

docker pull hub.songwqs.top/snowdreamtech/frps:latest

docker tag hub.songwqs.top/snowdreamtech/frps:latest snowdreamtech/frps:latest

 

执行后默认生成了以下配置 :

管理面板: http://xxxxxxxxx:7500
用户名:admin 
密码: admin
bind_port: 7000 
默认token: yqJ5zhUmkSXH
vhostHTTPPort:81
默认vhostHTTPSPort: 444
kcpBindPort:7000

需要修改可以去 /usr/local/frps修改:

vi /usr/local/frps/frp.toml

PS:由于0.52.0以后版本换了配置文件为.toml  

格式也换了 详见官方文档或者这篇https://songw.top/archives/1494.html
可以直接复制以下的进行编辑:

bindPort = 7000
auth.token = "token"
kcpBindPort = 7000
##Web界面
##默认为 127.0.0.1 如果需要公网访问修改为 0.0.0.0
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
##配置TLS 证书来启用HTTPS接口
# webServer.tls.certFile = "server.crt"
# webServer.tls.keyFile = "server.key"
# transport.tls.force 指定是否只接受 TLS 加密连接。默认情况下,该值为 false。
#tls.force = false
# transport.tls.certFile = "server.crt"
# transport.tls.keyFile = "server.key"
# transport.tls.trustedCaFile = "ca.crt"
# 仪表板资源目录(仅限调试模式)
# webServer.assetsDir = "./static"
##如果要支持虚拟主机,必须设置用于监听的 http 端口(可选)
##注意:http 端口和 https 端口可以与 bind_port 相同
vhostHTTPPort = 81
vhostHTTPSPort = 444
# 控制台或实际 logFile 路径,如 ./frps.log
log.to = "./frps.log"
# trace、debug、info、warn、error
log.level = "info"
log.maxDays = 3
# 当 log.to 为 console 时禁用日志颜色,默认值为 false
log.disablePrintColor = false
# 每个代理中保留的池计数不超过 maxPoolCount。
transport.maxPoolCount = 50
# 如果使用了 tcp 流复用,则默认值为 true
transport.tcpMux = true
# 指定 tcp mux 的保持活动间隔,仅当 tcpMux 为 true 时有效
transport.tcpMuxKeepaliveInterval = 60
#每个客户端可用的最大端口数,默认值为 0 表示无限制
##maxPortsPerClient = 0
##在仪表板监听器中启用 golang pprof 处理程序,必须首先设置仪表板端口
##webServer.pprofEnable = false
##enablePrometheus 将在 webServer 上的 /metrics API 导出 Prometheus 指标。
##enablePrometheus = true
0.52.0以下版本的frp.ini配置文件

#[common]为整体截面
[common]
#必须附上IPv6的文字地址或主机名
#在方括号中,如“[::1]:80”、“[ipv6主机]:http”或“[ipv6主机%zone]:80
bind_addr=0.0.0.0
bind_port=7000
#用于kcp协议的udp端口,它可以与“bindport”相同
#如果未设置,则在frp中禁用kcp
kcp_bind_port=7000
#如果要按仪表板配置或重新加载frp,必须设置dashboard_port
dashboard_port=7500
#仪表板资产目录(仅适用于调试模式)
dashboard_user = admin
dashboard_pwd = 123456987
# assets_dir = ./static
vhost_http_port = 880
vhost_https_port = 8443
#控制台或真实日志文件路径,如./frps.log
log_file = ./frps.log
#调试,信息,警告,错误( debug, info, warn, error)
log_level = info
log_max_days = 3
#身份验证令牌可以自己设置
token = frpzjmFnLqzxFPg
#当许多人同时使用一个frps服务器时,可以方便地使用http、https类型的子域配置。
subdomain_host=x.x.x.x.x(你的服务器ip)
#subdomain_host = my.abc.com
#只允许frpc绑定您列出的端口,如果您没有设置任何限制
#allow_ports=1-65535
#如果超过最大值,每个代理中的pool_count将更改为max_pool_count
max_pool_count=50
#如果使用tcp流复用,默认值为true
tcp_mux=true

# 重启应用

sudo systemctl restart frps

#查看frp是否启动

ps aux | grep frp

===================================

服务端frps的启动与停止

# 启动frps
sudo systemctl start frps

# 打开自启动
sudo systemctl enable frps

# 重启应用
sudo systemctl restart frps

# 停止应用
sudo systemctl stop frps

# 查看应用的日志
sudo systemctl status frps

# 停止开机自启动
systemctl disable frps

常用命令

一键修改 bindPort:bash ff.sh bindPort

一键修改 vhostHTTPPort:bash ff.sh vhostHTTPPort

一键修改 vhostHTTPSPort:bash ff.sh vhostHTTPSPort

一键修改 webServer.port:bash ff.sh webServer.port

一键修改 dashboard_user:bash ff.sh dashboard_user

一键修改 webServer.password:bash ff.sh webServer.password

一键修改 kcpBindPort:bash ff.sh kcpBindPort

一键修改 subDomainHost (用于泛解析子域名):bash ff.sh subDomainHost

一键卸载 frps:bash ff.sh uninstall

一键更新 frps:bash ff.sh update

一键关闭 apache2、防火墙,释放 80 端口:bash ff.sh unapache2

注意事项

#一键关闭 apache2、防火墙,释放80端口
bash ff.sh unapache2

#转发远程桌面时,需先在本机开启允许远程协助
我的电脑-右键属性-远程设置

#需要注意frpc所在机器和frps所在机器的时间相差不能超过15分钟

frps.ini配置文件在目录:/usr/local/frps

端口白名单:

# frps.ini
allowPorts = [
{ start = 2000, end = 3000 },
{ single = 3001 },
{ single = 3003 },
{ start = 4000, end = 50000 }
]

客户端进阶用法frpc

以下只是列出可能要用到的功能,其他用法用法都在中文文档>>> :https://gofrp.org/zh-cn/docs/
0.52.0以上版本 toml配置:

user = "your_name"
serverAddr = "x.x.x.x"
serverPort = 7000
auth.token = "token"
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

i端口范围映射(最低v0.56.0):

{{- range $_, $v := parseNumberRangePair "6000-6006,6007" "6000-6006,6007" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}

负载均衡:

# frpc.toml
[[proxies]]
name = "test1"
type = "tcp"
localPort = 8080
remotePort = 80
loadBalancer.group = "web"
loadBalancer.groupKey = "123"

[[proxies]]
name = "test2"
type = "tcp"
localPort = 8081
remotePort = 80
loadBalancer.group = "web"
loadBalancer.groupKey = "123"

代理限速:

# 限制此代理的带宽,单位为 KB 和 MB
transport.bandwidthLimit = "1MB"

# frpc.toml
[[proxies]]
name = "ssh"
type = "tcp"
localPort = 22
remotePort = 6000
transport.bandwidthLimit = "1MB"

细节可以去这个链接查看:https://songw.top/archives/1494.html

0.52.0以下版本 ini配置文件

一、范围端口映射

在 frpc 的配置文件中可以指定映射多个端口,目前只支持 TCP 和 UDP 的代理类型。
这一功能通过 range: 段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。

例如要映射本地 6000-6005, 6007 这7个端口,实际连接成功后会创建 7 个 proxy链接池。多用于ftp被动模式这类需要大范围端口的服务器

例子:

# frpc.ini
[range:test_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 6000-6005,6007
remote_port = 6000-6005,6007

二、更加安全的点对点stcp/xtcp内网穿透服务(类似于简化版蒲公英异地组网)

1.点对点中继 -安全穿透(stcp

增加安全性 不暴露端口服务器  双方通过密钥链接  服务器做中继数据

2.点对点P2P -安全穿透(xtcp

增加安全性 不暴露端口服务器  双方通过密钥链接  服务器只做握手和校验不参加数据交换  双方实行打洞P2P(udp传输) 介于国内的网络环境 成功率不高 可以尝试下   不行切换会 stcp

3.配置信息

需要双方配置服务信息

a、frps服务器端需要添加一个udp 打洞端口:

bind_udp_port = 7001

如:

# frps.ini
[common]
bind_port = 7000
bind_udp_port = 7001

b、frpc客户端

被访问端A需要 追加:   密钥:sk=xxx

例子:

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000
[myser1]
# type可以直接切换stcp或者xtcp
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
local_ip = 127.0.0.1
# 的本地端口号
local_port = 3389

访问端B需要 追加:
访问者: role = visitor
要访问的代理服务:  server_name = myser1
只有 sk 一致的用户才能访问到此服务: sk = 12346
绑定本地端口用于访问端A 服务:
bind_addr = 127.0.0.1
bind_port = 6000

例子:

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000
[rdp_visitor]
# type可以直接切换stcp或者xtcp
type = stcp
# 访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = myser1
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
# 绑定本地端口用于访问端A服务
bind_addr = 127.0.0.1
bind_port = 5000

三、 使用插件模式

[http_proxy ]
type=tcp
remote_port=5300
plugin=http_proxy
plugin_http_user=admin
plugin_http_passwd=123456
use_encryption=true
use_compression=true

[socks5]
type=tcp
remote_port=5301
plugin=socks5
plugin_user=admin
plugin_passwd=123456
use_encryption=true
use_compression=true

插件不做过多介绍  实际使用说明可以去 https://gofrp.org/docs/features/common/client-plugin/#http_proxy 查看

点赞
  1. songwqs songwqs说道:
    Google Chrome Windows 10
    由于粗心大意给${new_ver} EOF多加了空格导致产生不干净的输出 让sh执行失败 :kuanghan:

发表回复

电子邮件地址不会被公开。必填项已用 * 标注