【FRP 内网穿透】

一、什么叫内网穿透

1、内网穿透技术的描述

  内网穿透是指通过一种技术手段,将内部网络或者本地计算机服务暴露在公网网络上,从而实现公网网络可以访问内部网络或者本地计算机服务的目的。内网穿透通常用于远程办公局域网内部服务访问等场景,可以便捷地实现内外网的互通,提高工作效率。

2、内网穿透技术的工作方式通常包括以下几个步骤

  • ① 内网穿透服务器启动:内网穿透服务器作为一个中介,需要先启动并等待内网穿透客户端连接;
  • ② 内网穿透客户端连接:内网穿透客户端通过连接内网穿透服务器,将内部网络或本地计算机服务注册到内网穿透服务器上,并且将公网用户的请求转发到相应的服务上;
  • ③ 公网用户访问:公网用户通过访问内网穿透服务器的公网地址,将请求发送到内网穿透服务器上;
  • ④ 内网穿透服务器转发请求:内网穿透服务器接收到公网用户的请求后,将请求转发到相应的内部网络或本地计算机服务上;
  • ⑤ 内部网络或本地计算机服务响应:内部网络或本地计算机服务接收到请求后,进行相应的处理,并将响应返回到内网穿透服务器;
  • ⑥ 内网穿透服务器转发响应:内网穿透服务器接收到内部网络或本地计算机服务的响应后,将响应转发给公网用户。

通过以上步骤,公网用户可以直接访问内部网络或本地计算机服务,实现内外网的互通。

二、用内网穿透解决了什么问题

  我们需要知道一个前提:内部网络中的主机可以访问公网网络主机,反之不可以访问;公网网络可以和公网网络 双向访问内部网络中的主机和另一个内部网络中的主机互相无法访问。那么内部网络中的客户机和公网网络中的客户机如何访问另一个内部网络中的服务器呢?这里就需要用到内网穿透技术。

网络释义

三、常见的内网穿透解决方式

1、FRP (开源

  FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP内网穿透无需多复杂的配置就可以达到比较好的穿透效果,具有较强的扩展性,支持tcp, udp, http, https 协议,并且 Web 服务支持根据域名进行路由转发。此外,FRP 提供了一种新的代理类型 XTCP ,可以在传输大量数据时让流量不经过服务器中转,用于实现点对点穿透,当然,此功能并不能保证在你的网络环境 100% 可用,成功率较低,而且还要求访问端也得运行 FRP 客户端 (目前手机端IOS没有FRP客户端软件)。由于实现条件较多,所以有文件传输需求的朋友但必须用frp的朋友还是建议买带宽稍大一点的 VPS 会比较省心。frp适合有linux基础的个人,且需要自购一个云主机做中转,企业追求稳定可以考虑其他方式。

2、花生壳(商业

  花生壳既是内网穿透软件、端口映射软件。功能比较齐全,比较简单,也是大家比较耳熟了,支持tcp,udp.https.http,socket5应用。流量还是得走传说中的rootnode,所以是限流1G,分的等级比较多商业版、旗舰版、铂金版,需要根据不同需求付费开通相关功能。安装使用门槛低,无需自购云主机做中转,企业商用追求稳定可以选择花生壳付费版本。

3、ZeroTier(开源 商业

  ZeroTier官方解释为将整个世界转变为单个数据中心或云区域,将所有设备,虚拟机和应用程序联接起来,就像在同一个交换机接入所有设备一样。ZeroTier类似VPN,为内网服务器所在NAT网络和客户机所在NAT网络各虚拟出一个VLAN,这样俩个VLAN就可以通过ZeroTier建立连接,在通过UDP打洞技术就可以实现内网服务器和内网客户机直接交互数据。目前ZeroTier提供的点对点穿透技术成功率还是比较高的,可以应付大多数网络,国内长城宽带无法点对点穿透。而zerotier因为是国外的项目,官方提供的中转服务器在国外,国内连接延迟高甚至连不上,所以官方给出了moons概念,可以自己搭建中转服务器。另外ZeroTier 支持 Windows、macOS、Linux 三大主流平台,iOS、Android 两大移动平台,以及 QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 LEDE 开源路由器项目,支持客户端真的很多。ZeroTier适合有Linux基础的个人,一般用于NAS,为了稳定性需要自购一个云主机做中转,服务器和客户机都需要安装ZeroTier。

商业付费版暂不具体阐述,只能说花钱的就是好,有专业团队维护,且使用简单方便,但要注意由于数据包会流经第三方,因此对数据安全也是一大隐患。那么对于个人有动手能力的用户或者中小型企业小规模使用可以选择开源方式,综合软件配置复杂度、穿透能力等因素,个人觉得目前最好的选择就是FRP用于对流量转发不大的场景,而需要大量udp传输的场景选择ZeroTier。

四、内网穿透实战

1、FRP

可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;FRP有服务端和客户端,服务端需要装在有公网IP的服务器上,客户端装在内网主机上。

  • 服务端

服务端配置点我查看

  • 客户端

客户端配置点我查看

### 使用FRP实现内网穿透配置教程 #### 准备工作 为了成功部署并运行FRP以达成内网穿透的目的,需准备好两部分资源:服务端与客户端。服务端通常是指一台具有公网IP地址的机器,可以是云服务商提供的虚拟专用服务器;而客户端则是位于私有网络内部的目标设备,比如个人计算机或是像树莓派这样的小型计算平台[^4]。 #### 下载安装FRP软件包 对于Linux系统的用户来说,在官方GitHub仓库中能够找到适用于不同架构的操作系统版本下的二进制文件。下载完成后解压至指定目录下即可完成初步安装操作[^3]。 #### 配置服务端(`frps.ini`) 创建或编辑名为`frps.ini`的服务端配置文件,设置必要的参数如下所示: ```ini [common] bind_port = 7000 vhost_http_port = 80 token = your_token_here dashboard_port = 7500 allow_ports = 2000-3000,3001,3003,4000-50000 max_pool_count = 5 subdomain_host = frp.yourdomain.com ``` 上述配置项解释: - `bind_port`: 指定用于监听来自客户端连接请求的TCP端口号; - `vhost_http_port`: 当启用HTTP(S)协议转发功能时所使用的本地监听端口,默认为80; - `token`: 设置通信密钥保障安全性; - `dashboard_port`: Web管理界面开放给外部访问的端口; - `allow_ports`: 明确允许被映射出去的具体范围内的端口列表; - `max_pool_count`: 控制最大并发数限制; - `subdomain_host`: 自定义子域名前缀指向该实例所在主机名[^1]。 #### 启动服务端程序 通过命令行启动服务端进程,并将其设为后台常驻任务执行: ```bash nohup ./frps -c /path/to/frps.ini & ``` #### 编写客户端配置(`frpc.ini`) 同样地,在客户机上也需要建立相应的配置文档——即`frpc.ini`: ```ini [common] server_addr = x.x.x.x # 替换成实际VPS IP 地址 server_port = 7000 # 应同于服务端设定一致 token = your_token_here [ssh] type = tcp # 协议类型 local_ip = 127.0.0.1 # 要暴露出来的本机服务ip local_port = 22 # 对应的服务端口 remote_port = 6000 # 外部可访问到此服务的端口编号 ``` 这里特别注意的是要确保`server_addr`填写正确无误以及两端之间保持相同的认证令牌(token)[^2]。 #### 运行客户端应用程序 最后一步就是在终端里输入下面这条指令让客户端正式上线运作起来: ```bash ./frpc -c /path/to/frpc.ini ``` 此时理论上已经完成了整个过程中的所有步骤,可以通过测试验证是否真的实现了预期效果。如果一切正常的话,则意味着现在可以从互联网上的任何地方轻松触及原本处于防火墙之后的应用和服务了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁金Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值