路由器frp内网穿透

路由器frp内网穿透,第1张

运行环境:

1.阿里云服务器做frp服务器

2.路由器做frp客户端

  在被动方式FTP中,命令连接和数据连接都由客户端发起。FRP映射内网服务器的21端口,和至少1个数据传输端口,数据端口貌似不能太大(我用50000不可以),如25840-25842即可。

路由器设置被动端口范围。

所以需开启阿里云安全组端口25840/25842。

本地frp客户端配置文件参考:

运行frp :

现在就可以通过服务器ip:2121连接到内网ftp服务器了。

内网穿透即内网映射,可以将局域网变公网,从而可以让外网访问本地局域网内的服务。内网穿透原理技术有这么几种:

1,通过公网服务器转发,这是目前市场上大多三方的内网穿透服务方式。

2,P2P穿透,端对端连接通信,即常说的UDP打洞方式,受国内复杂网络环境影响打洞成功机率不高。

3,通过公网服务器响应对二端握手穿透,穿透成功时直接二端P2P打洞直联。

内网穿透工具有很多,比如Ngrok、花生壳、frp。原理基本一样。

这里主要了解一下FRP, frp分为客户端和服务端,frps为服务端,frpc为客户端。

https://github.com/fatedier/frp

https://gofrp.org/docs/

https://gofrp.org/docs/examples/

配置时的端口防火墙必须开放和要配置开放对应的安全组

使用FileZilla来链接,可以传输文件了

现在通过 FRP 就可以很容易实现这一功能,这里以 HTTP 服务为例:首先修改 【FRP 服务端】配置文件,通过 vhost_http_port 参数来设置 HTTP 访问端口,这里将 HTTP 访问端口设为 8080。

再去修改客户端文件。这里通过 local_port 和 custom_domains 参数来设置本地机器上 Web 服务对应的端口和自定义的域名,这里我们分别设置端口为 80,对应域名为 mm.like.com

frp的客户端新增[mysql]

访问:mysql -uxx1 -hxx2 -P1006 -pxx3

Centos7的服务systemctl脚本存放在:/usr/lib/systemd/目录下,有系统(system)和用户(user)之分,一般需要开机不登录就能运行的程序,就存放在/usr/lib/systemd/system/目录下。

然后,我们再把这个脚本放置在 /usr/lib/systemd/system/目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务

中文文档 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不限制,或者不填此参数。

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

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

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

对应穿透服务名称

[name]

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

穿透协议类型

type = tcp

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

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

本地监听IP

local_ip = 127.0.0.1

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

例如你的局域网是互通的,你可以在本设备建立穿透局域网其他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协议类型。

修改 Host Header

通常情况下 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 支持通过 HTTP PROXY 和 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。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8110825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存