您当前的位置:首页 > 电脑百科 > 安全防护 > 软件工具

开源内网穿透工具,支持https,网络开发好助手

时间:2020-08-01 17:08:31  来源:  作者:

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。可以用它进行小程序开发。

开源内网穿透工具,支持https,网络开发好助手

 

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

通过 ssh 访问公司内网机器

  1. 修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器端接收客户端流量的端口:
# frps.ini
[common]
bind_port = 7000
  1. 启动 frps:

./frps -c ./frps.ini

  1. 修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

注意,local_port(客户端侦听)和 remote_port(服务器端暴露)是用来出入 frp 系统的两端,server_port 则是服务器用来与客户端通讯的。

  1. 启动 frpc:

./frpc -c ./frpc.ini

  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

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

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

  1. 修改 frps.ini 文件,设置 http 访问端口为 8080:
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
  1. 启动 frps:

./frps -c ./frps.ini

  1. 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
  1. 启动 frpc:

./frpc -c ./frpc.ini

  1. 将 www.yourdomain.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。
  2. 通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。
  3.  
开源内网穿透工具,支持https,网络开发好助手

 

对外提供简单的文件访问服务

通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。

frps 的部署步骤同上。

  1. 启动 frpc,启用 static_file 插件,配置如下:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp/file
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
  1. 通过浏览器访问 http://x.x.x.x:6000/static/ 来查看位于 /tmp/file 目录下的文件,会要求输入已设置好的用户名和密码。

为本地 HTTP 服务启用 HTTPS

通过 https2http 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。

  1. 启用 frpc,启用 https2http 插件,配置如下:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_htts2http]
type = https
custom_domains = test.yourdomain.com

plugin = https2http
plugin_local_addr = 127.0.0.1:80

# HTTPS 证书相关的配置
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
  1. 通过浏览器访问 https://test.yourdomain.com 即可。

安全地暴露内网服务

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

使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc。

以下示例将会创建一个只有自己能访问到的 ssh 服务代理。

frps 的部署步骤同上。

  1. 启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
  1. 在要访问这个服务的机器上启动另外一个 frpc,配置如下:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@127.0.0.1

点对点内网穿透

frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。

使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。

目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 stcp 的方式。

  1. frps 除正常配置外需要额外配置一个 udp 端口用于支持该类型的客户端:
bind_udp_port = 7001
  1. 启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
  1. 在要访问这个服务的机器上启动另外一个 frpc,配置如下:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = p2p_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@127.0.0.1

Dashboard

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

注:Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能。

需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:

[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

打开浏览器通过 http://[server_addr]:7500 访问 dashboard 界面,用户名密码默认为 admin。

开源内网穿透工具,支持https,网络开发好助手

 

Admin UI

Admin UI 可以帮助用户通过浏览器来查询和管理客户端的 proxy 状态和配置。

需要在 frpc.ini 中指定 admin 服务使用的端口,即可开启此功能:

[common]
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin

打开浏览器通过 http://127.0.0.1:7400 访问 Admin UI,用户名密码默认为 admin。

如果想要在外网环境访问 Admin UI,将 7400 端口映射出去即可,但需要重视安全风险。

监控

frps 当启用 Dashboard 后,会默认开启内部的监控,数据存放在内存中,每次重启进程后会清空,监控数据可以通过 dashboard 的地址发送 HTTP 请求获取。

目前还支持 Prometheus 作为可选的监控系统。

Prometheus

在 frps.ini 中启用 Dashboard,并且设置 enable_prometheus = true,则通过 http://{dashboard_addr}/metrics 可以获取到 Prometheus 的监控数据。

客户端身份验证

目前 frpc 和 frps 之间支持两种身份验证方式,token 和 oidc。

通过 frpc.ini 和 frps.ini 中 [common] section 的 authentication_method 参数配置需要使用的验证方法。

authenticate_heartbeats = true 将会在每一个心跳包中附加上鉴权信息。

authenticate_new_work_conns = true 将会在每次建立新的工作连接时附加上鉴权信息。

Token

当 authentication_method = token,将会启用基于 token 的验证方式。

需要在 frpc.ini 和 frps.ini 的 [common] section 中设置相同的 token。

OIDC

当 authentication_method = oidc,将会启用基于 OIDC 的身份验证。

验证流程参考 Client Credentials Grant

启用这一验证方式,配置 frpc.ini 和 frps.ini 如下:

# frps.ini
[common]
authentication_method = oidc
oidc_issuer = https://example-oidc-issuer.com/
oidc_audience = https://oidc-audience.com/.default
[common]
authentication_method = oidc
oidc_client_id = 98692467-37de-409a-9fac-bb2585826f18 # Replace with OIDC client ID
oidc_client_secret = oidc_secret
oidc_audience = https://oidc-audience.com/.default
oidc_token_endpoint_url = https://example-oidc-endpoint.com/oauth2/v2.0/token

加密与压缩

这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snAppy:

# frpc.ini
[ssh]
type = tcp
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 ssh 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源。

TLS

从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tls_enable = true 来启用此功能,安全性更高。

为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

通过将 frps.ini 的 [common] 中 tls_only 设置为 true,可以强制 frps 只接受 TLS 连接。

注意: 启用此功能后除 xtcp 外,不需要再设置 use_encryption。

客户端热加载配置文件

当修改了 frpc 中的代理配置,可以通过 frpc reload 命令来动态加载配置文件,通常会在 10 秒内完成代理的更新。

启用此功能需要在 frpc 中启用 admin 端口,用于提供 API 服务。配置如下:

# frpc.ini
[common]
admin_addr = 127.0.0.1
admin_port = 7400

之后执行重启命令:

frpc reload -c ./frpc.ini

等待一段时间后客户端会根据新的配置文件创建、更新、删除代理。

需要注意的是,[common] 中的参数除了 start 外目前无法被修改。

通过密码保护你的 web 服务

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

frp 支持通过 HTTP Basic Auth 来保护你的 web 服务,使用户需要通过用户名和密码才能访问到你的服务。

该功能目前仅限于 http 类型的代理,需要在 frpc 的代理配置中添加用户名和密码的设置。

# frpc.ini
[web]
type = http
local_port = 80
custom_domains = test.yourdomain.com
http_user = abc
http_pwd = abc

通过浏览器访问 http://test.yourdomain.com,需要输入配置的用户名和密码才能访问。



Tags:内网穿透   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
# 1. nps-npc1.1 简介nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh...【详细内容】
2021-12-22  Tags: 内网穿透  点击:(8)  评论:(0)  加入收藏
FRP 内网穿透需求背景最近小王公司接个对接公众账号应用开发的项目,其中有个功能需求是"用户关注公众账号后发送特定消息后公众账号需要回复一个二维码海报“。了解需求后,便...【详细内容】
2021-09-22  Tags: 内网穿透  点击:(52)  评论:(0)  加入收藏
1. 前言大家好,我是安果!一提到远程桌面,可能大家都会想到 TeamViewer、向日葵等第三方软件但是,它们大多是商业化软件,价格昂贵;即使有提供免费版本,也是各种限制,稳定性和安全性...【详细内容】
2021-09-16  Tags: 内网穿透  点击:(72)  评论:(0)  加入收藏
本文使用 docker 方式部署, 使用 windows 客户端首先 拉取镜像docker pull ffdfgdfg/nps下载 conf文件夹 并解压,或前往项目主页自行下载项目首页: https://ehang-io.github.i...【详细内容】
2021-07-14  Tags: 内网穿透  点击:(183)  评论:(0)  加入收藏
钉钉美图前言最近有一个小需求【调试远程python代码,超方便pycharm教程】需要用到内网穿透,然后自己搜到了【最强内网穿透工具frp】。然后看网友评论里面有推荐【傻瓜式-Web面...【详细内容】
2021-06-18  Tags: 内网穿透  点击:(1700)  评论:(0)  加入收藏
很多开发者在开发个人项目的前期,可能都会遇到没有公网域名或者公网IP,导致调试受限的问题。虽然,购买一个服务器,注册一个域名,很便宜,也很简单,但是如果能通过免费的内网穿透工具...【详细内容】
2021-05-25  Tags: 内网穿透  点击:(182)  评论:(0)  加入收藏
一、工具介绍Chisel可用来搭建内网隧道,类似于我们常用的花生壳和ngrok。由于目前使用的人比较少,因此对于有些杀软还不能准确的识别出该工具。chisel可以进行端口转发、反向...【详细内容】
2021-04-02  Tags: 内网穿透  点击:(311)  评论:(0)  加入收藏
今天给大家出个外网访问内网畅捷通软件的教程。相信大家都知道,在没有公网ip的情况下,我们是没办法在外网访问内网的应用的;这时候应该怎么办?我们今天就用闪库内网穿透来解决这...【详细内容】
2020-11-23  Tags: 内网穿透  点击:(134)  评论:(0)  加入收藏
测试系统: 外网:linux 内网:windows python:python3.6(需要安装flask、psutil) 功能介绍:使用flask,实现可一键添加端口映射,可以删除单端口,可删除全部端口映射需要准备的东西: 1:如上...【详细内容】
2020-10-07  Tags: 内网穿透  点击:(193)  评论:(0)  加入收藏
Bullet 是一款基于 Java 实现,通过 WebSocket 实现 Bullet 协议反向控制 ngrok 的 web 管理化工具。项目完全开源免费,可独立部署。平台提供了 server 服务,可满足短期的内网穿...【详细内容】
2020-09-30  Tags: 内网穿透  点击:(175)  评论:(0)  加入收藏
▌简易百科推荐
已经观察到一种新的基于JavaScript的远程访问木马(RAT)利用社会工程学传播,采用隐蔽的"无文件"技术作为其逃避检测和分析的方法。该恶意软件由Prevalyion的对抗性反情报团队(PA...【详细内容】
2021-12-17  网安老葫    Tags:恶意软件   点击:(13)  评论:(0)  加入收藏
关于windows Defender防病毒的问题升级win10后,我们会经常遇到打开或下载文件时弹出提示框提示你下载的文件是病毒之类,直接给你删除。你好不容易找了个激活工具,你刚打开发现...【详细内容】
2021-11-08  IT小哥吧    Tags:defender   点击:(46)  评论:(0)  加入收藏
喽!大家好,我是小易,欢迎来到我的知识分享站!今天给大家分享5个杀毒神器,让你的电脑干干净净,建议收藏起来哟! 1、Windows Defender随着Win10系统的更新已经日趋完善,它可以很好的解...【详细内容】
2021-11-08  知识与技能    Tags:流氓软件   点击:(74)  评论:(0)  加入收藏
介绍其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。fil...【详细内容】
2021-10-18  互联网IT技术全栈    Tags:   点击:(52)  评论:(0)  加入收藏
什么是Nessus?Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件步骤如下:查看当前kali系统内核版本...【详细内容】
2021-09-09  TestGO    Tags:Nessus   点击:(112)  评论:(0)  加入收藏
http 头部信息http头部信息经常包含着主机服务的一些版本信息,经常使用的字段信息有:Server, X-Powered-By, X-AspNet-Version工具可采用curl进行curl --location --head $URL...【详细内容】
2021-08-19  80后IT老民工    Tags:渗透   点击:(225)  评论:(0)  加入收藏
一、杀软常见的三种方式二、免杀的三种常用方式三、利用工具实现免杀1、veil工具基础实现免杀+进阶2、venom免杀3、利用kali自带的shellter进行免杀4、利用avet实现免杀四、...【详细内容】
2021-08-18  白帽hacker淬炼    Tags:免杀   点击:(81)  评论:(0)  加入收藏
关于工具现有工具现在,现成的污点分析工具已经有很多了。其中,我最感兴趣的是Triton和bincat,因为两者已经相当成熟。然而,我们却无法使用这两种工具,因为它们不支持目标设备所...【详细内容】
2021-08-12  Hbo涵    Tags:安全漏洞   点击:(93)  评论:(0)  加入收藏
从实现原理上分,防火墙的技术包括四大类:网络级防火墙、应用级网关、电路级网关和规则检查防火墙。1、网络级防火墙一般是基于源地址和目的地址、应用、协议以及每个IP包的端...【详细内容】
2021-07-20  趣谈文化  搜狐号  Tags:防火墙   点击:(225)  评论:(0)  加入收藏
一、VMware部分1、Vmware简介虚拟机就是一个用来模拟真实的物理机环境的一个软件,可以在虚拟机中安装不同版本的操作系统。就是一个把下载好的ISO安装在物理机操作系统的一个...【详细内容】
2021-07-12  Kali与编程  公众号  Tags:Kali Linux   点击:(112)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条