Featured image of post 轻松掌握热门内网穿透工具:快速实现内网服务外部访问

轻松掌握热门内网穿透工具:快速实现内网服务外部访问

本文将带你快速上手当前最热门的内网穿透工具 FRP(Fast Reverse Proxy),在10分钟内完成安装和配置,让你轻松实现内网服务的外部访问。

理论

什么是内网穿透

在了解内网穿透原理之前,我们先说什么是内网穿透。内网,就是在公司或者家庭内部,建立的局域网络或者是办公网络,可以实现多台电脑之间的资源共享,包括设备、资料、数据等。而外网则是通过一个网关与其它的网络系统连接,相对于内网而言,这种网络系统称之为外部网络,常见的就是我们日常使用的互联网。

一般而言,在没有固定公网IP的情况下,外网设备无法直接访问内网设备。而内网穿透技术,顾名思义就是能让外网的设备找到处于内网的设备,从而实现数据通信。

内网穿透原理

内网穿透,又称为NAT穿透。NAT背后的设备,它们的主要特点是 ,可以访问外网,但不能被外网设备有效访问。基于这一特点,NAT穿透技术是让NAT背后的设备,先访问指定的外网服务器,由指定的外网服务器搭建桥梁,打通内、外网设备的访问通道,实现外网设备访问到内网设备。

该技术除了可以访问隐藏在NAT后的设备,同样可以穿透防火墙。这是因为防火墙一般只拦截了入站没有拦截出站,所以也可以让防火墙内的设备对外提供服务。

由于内网设备并不是与外网设备直接相连,所以在安全性上是毋庸置疑的,内网穿透可以说是安全与效率兼得。

原理


开头致此引用贝锐 原文地址

frp是什么

原文介绍: frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp是一款非常热门的 开源 内网穿透工具 主要特点有配置简单性能高跨平台 因此受到很多人的青睐。

GitHub Logo 开源仓库:https://github.com/fatedier/frp

话不多说步入正题 frp分为两个部分 服务端客户端

frp需要有一台公网服务器运行服务端 如没有请选择其他商业版软件。

  • 服务端(frps):一般部署在公网服务器上 例如:阿里云腾讯云 等。

  • 客户端(frpc):部署在需要穿透的客户端 例如:NAS软路由 等。

这里感谢 https://www.rainyun.com https://www.rainyun.com 提供的服务器,新用户注册享5折 2核 2G 100M ¥ 30/月。

宁波KVM 高配版 iperf3 测速结果如下:

雨云测速

frp下载

通过frp开源仓库地址下载frp 客户端、服务端都在一个压缩包中。

我这边服务器系统是x86的ubuntu 下载的是 frp_0.59.0_linux_amd64 根据自己的系统架构选择合适版本下载。

下载地址:https://github.com/fatedier/frp/releases 下载地址:https://github.com/fatedier/frp/releases

frp版本

目录结构说明

frp 从v0.52.0开始将使用 toml 作为配置文件类型 低于v0.52.0使用 ini 使用上基本没啥区别。

解压后文件说明:

  • frps 服务端
  • frps.toml 服务端配置文件
  • frpc 客户端
  • frpc.toml 客户端配置文件

frp目录结构

frps(服务端)部署

配置文件

以下配置仅保证基本用法 (一般场景也够用了) 高级用法请自行查看配置文件说明根据需求调整

frps配置文件说明:https://gofrp.org/zh-cn/docs/reference/server-configures/

1
2
3
bindPort = 7000 # 服务端端口
auth.method = "token" # 使用令牌进行身份验证
auth.token = "abcd1234" # 令牌,客户端与服务端一致才能连接成功 推荐配置复杂一点

启动frps

配置好后执行如下命令启动即可;出现如下图所示启动成功

1
./frps -c frps.toml #启动frps

启动成功

frpc(客户端)运行

客户端运行有两种方式 分别是使用原版frpc客户端和frpc-desktop客户端。自行选择合适的方式。

frpc原版客户端运行

配置文件

frpc配置文件说明:https://gofrp.org/zh-cn/docs/reference/client-configures/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
serverAddr = "x.x.x.x" # 这里写服务端ip或者域名
serverPort = 7000 # 服务器端口
auth.method = "token"
auth.token = "abcd1234" # 令牌,必须与服务端一致 否则无法连接

# 简单配置一个代理作为示例 映射我内网的minio作为示例
# 配置意思:将127.0.0.1 的 22 端口 映射到服务端的6000端口上
[[proxies]]
name = "minio" # 代理名称,自定义
type = "tcp" # 代理类型
localIP = "10.10.10.27" # 内网minio对应的ip
localPort = 9000 # 内网minio对应的端口
remotePort = 6800 # 穿透到远程服务器上的端口

启动frpc

1
./frpc -c frpc.toml #启动frpc

启动成功

frpc-desktop ✨

下载 frpc-desktop

下载地址:https://github.com/luckjiawei/frpc-desktop/releases 下载地址:https://github.com/luckjiawei/frpc-desktop/releases

frpc-desktop 使用教程

frp版本下载

下载安装frp-desktop后,点击左侧菜单下载frp。请避免与frps(服务端) 版本偏差过大。

frp下载

服务端配置

将服务器信息配置好,到最下面点击保存即可。

frpc-desktop配置

添加代理

这里已我内网的minio作为示例。配置好点击保存。

frpc-desktop添加代理

启动frpc-desktop

配置完成后,回到主页点击启动按钮。

启动frpc-desktop

🤩 公益节点

🤝 节点分享

感谢群友“解脱”的贡献 不保证一定可用 自行测试

1
frp://eyJzZXJ2ZXJBZGRyIjoiMTQxLjExLjIxOC4yNTIiLCJzZXJ2ZXJQb3J0Ijo3MDAwLCJhdXRoTWV0aG9kIjoidG9rZW4iLCJhdXRoVG9rZW4iOiIxMjM0NTY3OCIsInRyYW5zcG9ydEhlYXJ0YmVhdEludGVydmFsIjoxMCwidHJhbnNwb3J0SGVhcnRiZWF0VGltZW91dCI6MTAsInVzZXIiOiIxMiIsIm1ldGFUb2tlbiI6IjEyMyJ9

🔧 使用方式

导入节点(1) 导入节点(2)

常见问题

常见错误一

启动后报错 connect to server error: EOF

原因

  • 检查服务端是否正常运行
  • 防火墙是否关闭 或者是否放行端口

常见错误一

常见错误二

frpc可以正常启动 使用 frpc-desktop 启动报错 connect to server error: EOF

原因:

  • frp 版本大于 v0.50.0 时 默认开启 tls frpc-desktop 的 tls 默认时关闭的 需要手动开启

解决方案:

手动开启 frpc-desktop 的 tls 如下图所示:

开启 frpc-desktop 的 tls

常见错误三

启动过一会后 报如下错误:token in login doesn't match token from configuration

原因:

  • 客户端token与服务端不一致

社区

微信交流群 已超过200人 无法扫码进入 请关注公众号获取进入方式!!!