frpc 一键脚本安装手册

从 v0.52.0 版本开始,frp 开始支持 TOML、YAML 和 JSON 作为配置文件格式,INI 已被弃用!!!

本教程作为 v0.52.0 之前本部的存档

转载教程手册

一键脚本github项目地址:https://github.com/stilleshan/frpc/

开始复印 哔~哔~哔~

本脚本目前同时支持 Linux X86 和 ARM 架构

1.安装

wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh

国内 gitee 镜像

wget https://github.ioiox.com/stilleshan/frpc/raw/branch/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh

2.使用
修改 frpc.ini 配置

vi /usr/local/frp/frpc.ini

重启 frpc 服务即可生效

sudo systemctl restart frpc

3.卸载

wget https://raw.githubusercontent.com/stilleshan/frpc/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh

国内 gitee 镜像

wget https://gitee.com/stilleshan/frpc/raw/master/frpc_linux_uninstall.sh && chmod +x frpc_linux_uninstall.sh && ./frpc_linux_uninstall.sh

4. Linux 服务器 docker 安装
为避免因 frpc.ini 文件的挂载,格式或者配置的错误导致容器无法正常运行并循环重启.请确保先配置好 frpc.ini 后在运行启动
先 git clone 本仓库,并正确配置 frpc.ini 文件

4.1.git clone 本仓库 gitee 镜像

git clone https://gitee.com/stilleshan/frpc.git

4.2.配置 frpc.ini 文件

vi /root/frpc/frpc.ini

4.3.执行以下命令启动服务

docker run -d --name=frpc --restart=always -v /root/frpc/frpc.ini:/frp/frpc.ini stilleshan/frpc

以上命令 -v 挂载的目录是以 git clone 本仓库为例,也可以在任意位置手动创建 frpc.ini 文件,并修改命令中的挂载路径.

4.4.服务运行中修改 frpc.ini 配置后需重启 frpc 服务
修改 frpc.ini 配置

vi /root/frp/frpc.ini

重启 frpc 容器即可生效

docker restart frpc

5. 使用systemctl来控制frp的启动

frp 的安装查看:

udo vim /lib/systemd/system/frps.service

服务端:

sudo vi /lib/systemd/system/frps.service

[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

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

[Install]
WantedBy=multi-user.target

客户端:

sudo vi /lib/systemd/system/frpc.service
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
启动服务的命令(此处写你的frpc的实际安装目录)

ExecStart=/opt/soft/frp/frp_0.33.0_linux_amd64/frpc -c /opt/soft/frp/frp_0.33.0_linux_amd64/frpc.ini

[Install]
WantedBy=multi-user.target

6. 服务端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

服务端frpc的启动与停止

启动frpc

sudo systemctl start frpc

打开自启动

sudo systemctl enable frpc

重启应用

sudo systemctl restart frpc

停止应用

sudo systemctl stop frpc

查看应用的日志

sudo systemctl

停止开机自启动

systemctl disable frpc

查看frp线程

ps -aux | grep frp

frpc.ini例子

# 服务器地址server_addr /端口server_port /token 都可在服务端中的frps.ini里找到
# 如网络卡丢包,可删除protocol 注释标签“#”开启kcp传输(需要服务器端也开启kcp)
##常用的基本涵盖了大部分场景
[common]
server_addr = www.songw.top
server_port = 8080
# protocol = kcp
token = your_token

# http 端口转发设置
# custom_domains 可以是域名或者服务器 IP
# 如需开启密码访问,删除http_userhttp_pwd 两行注释标签“#”即可[http]
type = http
local_port = 80
custom_domains = super-brain.ml
# http_user = admin
# http_pwd = admin

# [https]
# type = https
# local_port = 443
# custom_domains = super-brain.ml
##注意80443端口需要服务器没有安装任何已经占用这两个端口的进程,意思就是相当于没有web服务的纯frp服务器

[tcp]
type = tcp
local_ip = 127.0.0.1
# 本地端口与远程端口
local_port = 2333
remote_port = 2333
# 启用压缩,会使速度稍微降低(可选)
use_compression = true
# 启用TLS加密(可选)
tls_enable = true
# 重点:启用proxy protocol v2!
proxy_protocol_version = v2

# 开启本机文件共享
[file]
type = tcp
remote_port = 8080
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = D:\
plugin_strip_prefix = static
plugin_http_user = admin
plugin_http_passwd = admin
# 修改链接内为自己的服务器IP,通过浏览器访问 http://170.130.142.170:8080/static/
# 来查看位于 C:\ 目录下的文件,会要求输入已设置好的用户名和密码(如不需要可以注释掉)
# 提示:此功能可以用于搭建静态文件服务或者博客

##端口范围穿透,保证这个端口访问内没有其他进程使用,以range: 开头,只支持 TCP 和 UDP
#[range:ds920]
#type = tcp
#local_ip = 192.168.1.2
#local_port = 9025-9040
#remote_port = 9025-9040

常用基本配置说明

一些细节补充详细可去文档查看:https://gofrp.org/docs/features/

自定义穿透服务名[name]:命名规则必须唯一,不能和本地以及服务器上所有用户的服务名重复,建议用驼峰命名加下划线。以range:开头命名[range:name] 则是使用端口范围,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。
type穿透类型,常用到的有HTTPHTTPSTCP、UDP。进阶用到的有STCP、 SUDP、XTCP、TCPMUX,
local_ip:即本地设备IP为需要穿透的服务或者设备的内网IP地址
local_port :local_port即本地服务端口,也是需要穿透的服务端口。
custom_domain
即自定义域名,需为此服务准备一个域名,并配置CNAME指向frp服务器地址。

多数情况下都是使用 custom_domain ,当 frp服务器frps.ini 中配置了 subdomain_host 参数,并为所有用户提供了子域名服务.那么此时可以使用 subdomain 参数,其参数值应 仅为主机头 。
例如:服务器提供了 frp.com*泛域名服务,那么设置 subdomain = nas 就可以使用 nas.frp.com 来穿透本条服务,当然主机头也是唯一性的,先到先得。
此种配置多数用于自建frps服务器 ,方便自己使用一个域名的泛域名来配置穿透.
使用 HTTP 和 HTTPS 协议时,每一条穿透配置必须至少要有 custom_domainsubdomain 中的任意一个域名参数。否则会出现 custom_domains and subdomain should set at least one of them 错误提示。而 TCP 协议可无需配置域名,直接使用 frp 服务器的域名或者IP。

TCP协议
常规情况下内网穿透服务器一般也会提供除了80和443端口以外的其他TCP端口,但frps服务器端是 不支持80/443以外的TCP端口复用。例如以下最常见的群晖Drive桌面客户端的TCP端口6690.

type =类型为tcp协议时,需要增加remote_port =远程端口参数,由于每台服务器只有一个6690端口,所以此端口大有可能被第一个使用此端口的用户占用,此时需要自定义一个没有使用的端口,小部分豪横的frp服务器TCP端口池常规会开放 100-65535 之间的端口,可以在此之间选择任意未被使用的端口来使用穿透.例如16690端口。PC和macOS客户端登陆群晖 Drive 时,域名后加上16690即可连接到你的服务器。目前只能靠尝试修改remote_port =的端口号去登陆验证端口是否被占用,一般最好选个不那么明显端口号,当然你自己也可以搭建一个自己的。

HTTP/HTTPS 域名复用
http/https的80/443端口是支持复用的,穿透了内网的网站到这台服务器的80/443端口,当服务器收到80/443端口的网站访问请求时,frp服务器端会根据访问的域名来识别,是具体访问哪位用户的内网网站,相当于一个web服务器,所以配置http/https的穿透时,域名是不可复用的。但是有个一个前提,这个frp服务器没有安装任何已经占用这两个端口的进程,意思就是相当于没有web服务的纯frp服务器。

解决方案:如果你的服务器器已经装了宝塔这里web面板,可以用type =类型为tcp协议的穿透方案,选一个穿透端口如1666,然后去创建一个需要这个域名的网站,设置下反向代理到127.0.0.1:1666。

TCP 协议域名复用
TCP端口穿透时,其域名可以复用,使用任何解析到此服务器的域名都可以,即使是使用服务器地址也都可以,因为TCP端口的不复用,使得你穿透的remote_port 远程端口就是唯一供你使用的端口,无需 frp 服务器通过域名来识别请求,服务器仅凭访问的端口号就知道该转发给谁。这里的域名只是起到了转换ip的作用,实际域名可有可无,一些特殊需要可以加个域名。

进阶配置说明

 

点赞

发表回复

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