下frp服务启动_内网穿透工具 FRP 使用实例

下面我们就来看几个常用的例子,通过这些例子来了解下 FRP 是如何实现内网服务穿透的。

身份验证

服务端和客户端的 common 配置中的 token 参数一致则身份验证通过。

公网服务端 frps.ini 配置文件、内网客户端 frpc.ini 配置文件

[common]token = www.nasge.com

通过 TCP 访问内网机器

这里以访问 SSH 服务为例,Linux系统环境下设置

公网服务端配置

首先修改 FRP 公网服务端 frps.ini 配置文件,默认文件无需修改,直接下一步使用命令启动 frps 服务端

root@U-NAS:~/frp# vi frps.ini# frps.ini 内容[common]bind_port = 7000

在frp目录下输入【./frps -c ./frps.ini】命令启动 frps

root@U-NAS:~/frp# ./frps -c ./frps.ini2019/12/18 13:29:34 [I] [service.go:141] frps tcp listen on 0.0.0.0:70002019/12/18 13:29:34 [I] [root.go:205] start frps success

出现【Start frps success】代表运行成功

内网客户端配置

这里以访问 SSH 服务为例, 修改 FRP 内网客户端配置文件 frpc.ini 文件内容:

root@U-NAS:~/frp# vi frpc.ini[common]# server_addr 为 FRP 服务端的公网 IPserver_addr = 192.168.44.130# server_port 为 FRP 服务端监听的端口server_port = 7000[ssh]type = tcp# local_ip 为 内外客户端IPlocal_ip = 127.0.0.1 # local_port 为 内外客户端端口local_port = 22 # remote_port 为 公网服务端映射端口remote_port = 6000 [web]type = tcplocal_ip = 127.0.0.1local_port = 80remote_port = 6001

在frp目录下输入【./frpc -c ./frpc.ini】命令启动 frpc

root@U-NAS:~/frp# ./frpc -c ./frpc.ini2019/12/17 17:33:31 [I] [service.go:249] [35481b55cd500a76] login to server success, get run id [35481b55cd500a76], server udp port [0]2019/12/17 18:33:31 [I] [proxy_manager.go:144] [35481b55cd500a76] proxy added: [ssh web]2019/12/17 18:33:31 [I] [control.go:164] [35481b55cd500a76] [ssh] start proxy success2019/12/17 18:33:31 [I] [control.go:164] [35481b55cd500a76] [web] start proxy success

这样就可以成功在 FRP 公网服务端上成功建立一个内网客户端连接,在 FRP 服务端上成功注册了一个端口为 60006001 的服务,接下来我们就可以通过这两个端口访问内网客户端上 SSH 22端口、WEB:80端口服务。

  • 公网服务端 192.168.44.130:6000 定向为 内网客户端 127.0.0.1:22【SSH端口】
  • 公网服务端 192.168.44.130:6001 定向为 内网客户端 127.0.0.1:80【WEB端口】

通过自定义域名访问部署于内网的 Web 服务

有时需要在公有网络通过域名访问我们在本地内网环境搭建的 Web 服务,但是由于本地环境机器并没有公网 IP,无法将域名直接解析到本地的机器。

现在通过 FRP 就可以很容易实现这一功能,这里以 HTTP 服务为例

公网服务端配置

首先修改 FRP 公网服务端 frps.ini 配置文件,通过 vhost_http_port 参数来设置 HTTP 访问端口,这里将 HTTP 访问端口设为 8090

root@U-NAS:~/frp# vi frps.ini[common]bind_port = 7000# vhost_http_port 参数来设置 HTTP 访问端口,此处示例:8090vhost_http_port = 8090

在frp目录下输入【./frps -c ./frps.ini】命令启动 frps

root@U-NAS:~/frp# ./frps -c ./frps.ini2019/12/18 13:59:34 [I] [service.go:141] frps tcp listen on 0.0.0.0:70002019/12/18 13:59:34 [I] [service.go:183] http service listen on 0.0.0.0:80902019/12/18 13:59:34 [I] [root.go:205] start frps success

出现【Start frps success】代表运行成功

内网客户端配置

其次我们在修改 FRP 内网客户端 frpc.ini 配置文件并增加如下内容:

这里通过 local_portcustom_domains 参数来设置本地机器上 Web 服务对应的端口自定义的域名,这里我们分别设置端口为 80,对应自定义域名 例如:www.666.com

# frpc.ini 内容[common]server_addr = 192.168.44.130# 对应公网服务端的IPserver_port = 7000# 对应公网服务端的端口[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000[web]type = http# local_port 为本地机器上 Web 服务对应的端口local_port = 80# custom_domains 为本地机器上 Web 服务对应的自定义的域名custom_domains = www.666.com

在frp目录下输入【./frpc -c ./frpc.ini】命令启动 frpc

最后将自定义域名 例如:www.666.com

  • A记录 解析到【frpc.ini 配置文件内 server_addr 对应的 IP】
  • CNAME 解析到【frpc.ini 配置文件内 server_addr 对应的域名】

现在便可以通过【 http://www.666.com:8090 】这个 URL 访问到处于内网机器上对应的 Web 服务。

  • 8090端口对应的是 公网服务端 frps.ini 配置文件中 vhost_http_port 对应的 8090 端口

HTTPS 服务配置方法类似

公网服务端 frps.ini 配置文件 将 vhost_http_port 替换为 vhost_https_port

内网客户端 frpc.ini 配置文件 将 type = http 替换为 type = https

通过密码保护你的 Web 服务

由于所有客户端共用一个 FRP 公网服务端的 HTTP 服务端口,任何知道你的域名和 URL 的人都能访问到你部署在内网的 Web 服务,但是在某些场景下需要确保只有限定的用户才能访问。

FRP 支持通过 HTTP Basic Auth 来保护你的 Web 服务,使用户需要通过用户名和密码才能访问到你的网页服务。需要实现此功能主要需要在 FRP 内网客户端 frpc.ini 配置文件中添加用户名和密码的设置。

该功能目前仅限于 HTTP 类型的代理。

# frpc.ini 内容[common]server_addr = 192.168.44.130# 对应公网服务端的IPserver_port = 7000# 对应公网服务端的端口[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000[web]type = http# local_port 为本地机器上 Web 服务对应的端口local_port = 80# custom_domains 为本地机器上 Web 服务对应的自定义的域名custom_domains = www.666.com# 设置认证的用户名http_user = 666# 设置认证的密码http_pwd = 123456

在frp目录下输入【./frpc -c ./frpc.ini】命令启动 frpc

这时访问 http://www.666.com:8090 这个 URL 时就需要输入配置的用户名和密码才能访问。

效果演示

e261c51eed8d1360f50811954dae1a73.gif

给 Web 服务增加自定义子域名托管

在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。

公网服务端配置

首先修改在 FRP 公网服务端 frps.ini 配置文件,通过 subdomain_host 参数来设置自定义域名,这里将参数设置为 例如:777.com

# frps.ini 内容[common]bind_port = 7000# vhost_http_port 参数来设置 HTTP 访问端口,此处示例:8090vhost_http_port = 8090# subdomain_host 参数来设置 Web 服务增加自定义二级域名# 将泛域名 *.777.com 解析到 frps 所在公网服务器的 IP 地址subdomain_host = 777.com

Bash

Copy

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

只需要将 *.{subdomain_host} 解析到 frps 所在公网服务器。
例如:

  • subdomain_host = 777.com、公网服务器IP为 192.168.44.130
  • *.777.com A记录 泛解析为 192.168.44.130

在frp目录下输入【./frps -c ./frps.ini】命令启动 frps

root@U-NAS:~/frp# ./frps -c ./frps.ini2019/12/18 17:42:17 [I] [service.go:141] frps tcp listen on 0.0.0.0:70002019/12/18 17:42:17 [I] [service.go:183] http service listen on 0.0.0.0:80902019/12/18 17:42:17 [I] [service.go:240] Dashboard listen on 0.0.0.0:75002019/12/18 17:42:17 [I] [root.go:205] start frps success

出现【Start frps success】代表运行成功

内网客户端配置

其次我们在修改 FRP 内网客户端 frpc.ini 配置文件并增加如下内容:

[web_test]type = httplocal_port = 80# subdomain 为 frps.ini 配置文件内 subdomain_host = 777.com 对应自定义子域名前缀subdomain = test

在frp目录下输入【./frpc -c ./frpc.ini】命令启动 frpc

FRP 服务端 和 FRP 客户端都启动成功后,通过 test.777.com 就可以访问到内网的 Web 服务。

同一个 HTTP 或 HTTPS 类型的代理中 custom_domainssubdomain 可以同时配置。

需要注意的是如果 FPR 服务端配置了 subdomain_host,则 custom_domains 中不能是属于 subdomain_host 的子域名或者泛域名(subdomain_hostcustom_domains 两个参数内域名不能相同)。

原文链接:https://blog.csdn.net/weixin_31738297/article/details/112743178

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享