frp 域名解析,frp内网穿透服务端frps.ini各配置参数详解

阅读(115)发布于 2023-09-25

[必须]frps服务端通讯端口 server_port=7000 客户端连接到服务端内网穿透传输数据的端口,请改为服务端已配置的对应端口。用于连接frps服务端的通讯协议 protocol=tcp 支持tcp和kcp,默认是tcp 注意:kcp需要服务端配置参数已开启,才支持。需要frps服务端已开放此端口给frpc客户端允许对接使用。通过代理连接frps 在只能通过代理访问外网的环境内,frpc支持通过HTTPPROXY和frps进行通信。

配图

中文文档https://www.cnblogs.com/sanduzxcvbnm/p/8508741.html

[必须]标识头

[common]

是不可或缺的部分

[必须]frps服务端IP

server_addr=0.0.0.0

0.0.0.0为FRP服务端IP,客户端要填写为服务端已配置的对应的IP,或者是服务端的服务器(VPS)IP。

[必须]frps服务端通讯端口

server_port=7000

客户端连接到服务端内网穿透传输数据的端口,请改为服务端已配置的对应端口。

[必须]连接认证密钥-特权模式

privilege_token=www.nat.ee

客户端连接到FRP服务端的登录验证密钥,请改为服务端已配置的对应密钥。

记录运行日志

日志存放路径

log_file=/etc/frp/log/frps.log

请改为需要存放在那里的正确路径。

日志记录类别

log_level=info

可选:trace,debug,info,warn,error

最多保存多少天日志

log_max_days=7

可自定义保存多少天。

你的内网穿透名称,将显示为{名称}.{对应服务名称}

user=your_name

请填大小写字母和数字,不要用中文填写。

决定第一次登录失败时是否退出程序,否则连续登录到frps服务端

login_fail_exit=true

可选:false,true

默认是true,否则可以不填此参数或者改为false,则持续连接登录到frps而不退出。

用于连接frps服务端的通讯协议

protocol=tcp

支持tcp和kcp,默认是tcp

注意:kcp需要服务端配置参数已开启,才支持。

使用tcp流复用,默认为true

tcp_mux=true

可选:false,true

必须与frps服务端已经配置参数相同,否则服务端没有,可以不填此参数。

内网穿透服务限制最大连接池上限

pool_count=5

限制本客户端内网穿透可以创建的总连接池上限,避免大量资源占用。可自定义。默认为0不限制,或者不填此参数。

注意:假如服务端已配置了限制,而你设置的高于服务端的,则按服务端的为准采取限制。

通过httpapi设置管理frpc动作的管理地址,例如reload

【上面用于总体对接frps服务端各参数,下面的用于客户端穿透各应用的配置参数。】

对应穿透服务名称

[name]

建立每个穿透服务,都需要命名一个此服务的名称,不能和其他已建立的相同。

穿透协议类型

type=tcp

可选:tcp,udp,http,https,stcp,xtcp

你要穿透什么应用要搞清楚,此应用是用什么协议的。

本地监听IP

local_ip=127.0.0.1

可以是本地的局域网IP,也可以是本机的127.0.0.1IP,

例如你的局域网是互通的,你可以在本设备建立穿透局域网其他IP的应用。

本地监听端口

local_port=22

用于监听本地设备需要穿透的端口,比如我要穿透到本机的SSH端口,而SSH端口为22,则这样理解。

远程监听端口

remote_port=6001

用于frps服务端的,分配建立穿透到内网对应应用的公网端口。

需要frps服务端已开放此端口给frpc客户端允许对接使用。

例如我可以连接到此(frps服务端IP:端口),则可以穿透到我的内网对应应用服务。

穿透通讯加密

use_encryption=false

可选:false,true

默认为false则不开启,或者不填此参数,为true则开启frps服务端和frpc客户端之间通讯加密。

穿透通讯压缩

use_compression=false

可选:false,true

默认为false则不开启,或者不填此参数,为true则开启frps服务端和frpc客户端之间通讯压缩。

分配自定义域名访问穿透服务

custom_domains=demo.com

用于你的穿透服务的唯一访问域名,假如没有域名,则此处请填为frps服务端的服务器(IP)

自己有多个域名,可以配置不同穿透应用服务,用不同域名,只需要将对应域名解析到frps服务端的服务器(IP)既可。

也支持泛解析识别,例如将(demo.com)域名已经泛解析到frps服务端的服务器(IP)

而想通过(abc123.demo.com)访问到对应穿透服务

则在对应穿透服务,custom_domains参数中填abc123.demo.com

分配对应穿透应用服务唯一的子域名,用于访问

subdomain=abc123

假如frps服务端已经配置了subdomain_host参数域名,并且已经泛(*)解析到frps服务端的服务器(VPS)IP,则可以使用此参数,否则不能用。

例如已经泛解析(demo.com)域名并且frps服务端配置好的,使用此subdomain参数,只需要填子域名,而不需要填(demo.com)

subdomain=填abc123,则可以通过(abc123.demo.com)访问

为HTTP协议,添加HTTP用户名和密码安全认证

http_user=admin

自定义用户名

http_pwd=admin

自定义密码

仅支持http,https类型协议。

例如我的WEB页面,访问前,需要进行验证,才可以访问。可以添加此参数。

安全地暴露内网服务

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。

sk=abcdefg

可自定义

此参数用于进一步验证,本地访问穿透服务的安全连接,需要双方frpc客户端都需要配置,仅适用于stcp和xtcp协议类型。

修改HostHeader

通常情况下frp不会修改转发的任何数据。但有一些后端服务会根据http请求header中的host字段来展现不同的网站,例如nginx的虚拟主机服务,启用host-header的修改功能可以动态修改http请求中的host字段。该功能仅限于http类型的代理。

原来http请求中的host字段test.yourdomain.com转发到后端服务时会被替换为dev.yourdomain.com。

URL路由

frp支持根据请求的URL路径路由转发到不同的后端服务。

通过配置文件中的locations字段指定一个或多个proxy能够匹配的URL前缀(目前仅支持最大前缀匹配,之后会考虑正则匹配)。例如指定locations=/news,则所有URL以/news开头的请求都会被转发到这个服务。

按照上述的示例配置后,web.yourdomain.com这个域名下所有以/news以及/about作为前缀的URL请求都会被转发到web02,其余的请求会被转发到web01。

通过代理连接frps

在只能通过代理访问外网的环境内,frpc支持通过HTTPPROXY和frps进行通信。

可以通过设置HTTP_PROXY系统环境变量或者通过在frpc的配置文件中设置http_proxy参数来使用此功能。

仅在protocol=tcp时生效

插件

默认情况下,frpc只会转发请求到本地tcp或udp端口。

插件模式是为了在客户端提供更加丰富的功能,目前内置的插件有unix_domain_socket、http_proxy、socks5。

通过plugin指定需要使用的插件,插件的配置参数都以plugin_开头。使用插件后local_ip和local_port不再需要配置。

使用http_proxy插件的示例:

范围端口映射

在frpc的配置文件中可以指定映射多个端口,目前只支持tcp和udp的类型。

这一功能通过range:段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个proxy,每一个proxy以数字为后缀命名。

例如要映射本地6000-6005,6007这6个端口,主要配置如下:

实际连接成功后会创建6个proxy,命名为test_tcp_0,test_tcp_1...test_tcp_5。

frp[1]是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。

本文将以暴露内网Web服务为例,实践frp的安装部署。更多应用场景,可见frp示例[2]

frp主要由客户端(frpc)服务端(frps)组成,服务端通常部署在具有公网IP的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

可以在Github的Release[3]页面中下载到最新版本的客户端和服务端二进制文件。

本文公网、内网机器都是Linuxx86_64,所以选择了frp_0.39.0_linux_amd64.tar.gz。解压:

拷贝frps文件进公网机器,假设其IP为x.x.x.x:

修改frps.ini文件,设置监听HTTP请求端口为8080:

安装supervisor进行部署,后台长期运行:

拷贝frpc文件进内网机器,假设其IP为192.168.1.100:

修改frpc.ini文件,假设frps所在的服务器的IP为x.x.x.x,local_port为本地机器上Web服务监听的端口,绑定自定义域名为custom_domains。

将www.yourdomain.com的域名A记录解析到IPx.x.x.x。

简单运行服务,进行测试:

以systemd进行部署,后台长期运行:

[1]frp:https://github.com/fatedier/frp

[2]frp示例:https://gofrp.org/docs/examples/

[3]Release:https://github.com/fatedier/frp/releases

购买一个极路由,极路由可以安装应用,而且有提供域名解析,可以被用来作为本次内网穿透的实验。

随后给路由器安装frp的应用,在有广域网IP的自己家的路由器上安装frps,在内网安装frpc。

frp的源码可以在github上获取,页面上有关于frp的介绍:

在服务器端设置,选择版本,服务器地址保持默认的0.0.0.0,设置特权密码,用于客户端的连接,设置查询用户名和密码。

在客户端进行设置,选择与服务器对应的版本,填入服务器的域名或者IP,因为极路由自己有域名解析非常方便。添加自己设定的密码:

再加入配置文件,比如下面的内容将148和5两台主机的22端口做了分配:

运行客户端,查看运行状态:

以下通过ssh登陆到内网的树莓派上,这个板用安装了moodeaudio系统,可以看到相关的信息:

打开状态网页http://xxxxxxxxxxxx.jios.org:7500/,也可以看到连接信息:

[必须]标识头

[common]

是不可或缺的部分

[必须]服务器IP

bind_addr=0.0.0.0

0.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中的一个服务器IP,支持IPV6.

[必须]FRP通讯端口

bind_port=7000

用于和客户端内网穿透传输数据的端口,可自定义。

用于KCP协议UDP通讯端口

kcp_bind_port=7000

也可以和“bind_port”共用同一端口,如果没有设置,则kcp在frps中被禁用,可自定义。

UDP通讯端口

bind_udp_port=7001

以帮助使UDP打洞穿透NAT,可自定义。

[必须]连接认证密钥-特权模式

privilege_token=www.nat.ee

客户端连接到本服务端的登录验证密钥,可自定义。

如果你想支持http,必须指定http端口监听

vhost_http_port=80

指定端口为http网页协议,可自定义。

如果你想支持https,必须指定https端口监听

vhost_https_port=443

指定端口为https网页协议,可自定义。

限制只能使用服务端的指定端口

privilege_allow_ports=2000-3000,3001,3003,4000-50000

只允许客户端绑定你列出的端口,如果你什么都不设置的话,不会有任何限制。可自定义!

开放这些端口,给客户端使用,包括tcp、udp、kcp、

自定义二级域名

subdomain_host=frps.com

通过在frps的配置文件中配置subdomain_host,就可以启用该特性。之后在frpc的http、https类型的代理中可以不配置custom_domains,而是配置一个subdomain参数。

只需要将*.{subdomain_host}解析到frps所在服务器。之后用户可以通过subdomain自行指定自己的web服务所需要使用的二级域名,通过{subdomain}.{subdomain_host}来访问自己的web服务。

每个内网穿透服务限制最大连接池上限

max_pool_count=5

每个内网穿透可以创建的连接池上限,避免大量资源占用。可自定义。

如果使用tcp流复用,默认值为true

tcp_mux=true

不开启则,false

客户端和服务器端之间的连接支持多路复用,不再需要为每一个用户请求创建一个连接,使连接建立的延迟降低,并且避免了大量文件描述符的占用,使frp可以承载更高的并发数。

心跳配置,不建议修改,默认值是90

heartbeat_timeout=90

可自定义。

客户端与服务端时间相差验证

authentication_timeout=900

假如客户端设备的时间和服务端的时间相差大于设定值,那么拒绝客户端连接。

如果设置为0,则不验证时间,默认值为900秒,可自定义。

通过浏览器查看frp的状态以及代理统计信息展示。

绑定服务端IP

dashboard_addr=0.0.0.0

0.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中的一个服务器IP,支持IPV6.

WEB端口

dashboard_port=7500

访问WEB服务端IP:端口,可自定义。

用户名

dashboard_user=admin

自定义WEB管理用户名,如果没有设置,默认值是admin。

登录密码

dashboard_pwd=admin

自定义WEB管理密码,如果没有设置,默认值是admin。

记录日志

日志存放路径

log_file=/etc/frp/log/frps.log

日志记录类别

log_level=info

可选:trace,debug,info,warn,error

最多保存多少天日志

log_max_days=7

可自定义保存多少天。

以上就是关于frp 域名解析的解答,如果对你有帮助,不妨关注本站,本站将为你整理更多内容。