本文将带你快速上手当前最热门的内网穿透工具 FRP(Fast Reverse Proxy),在10分钟内完成安装和配置,让你轻松实现内网服务的外部访问。
在了解内网穿透原理之前,我们先说什么是内网穿透。内网,就是在公司或者家庭内部,建立的局域网络或者是办公网络,可以实现多台电脑之间的资源共享,包括设备、资料、数据等。而外网则是通过一个网关与其它的网络系统连接,相对于内网而言,这种网络系统称之为外部网络,常见的就是我们日常使用的互联网。
一般而言,在没有固定公网IP的情况下,外网设备无法直接访问内网设备。而内网穿透技术,顾名思义就是能让外网的设备找到处于内网的设备,从而实现数据通信。
内网穿透,又称为NAT穿透。NAT背后的设备,它们的主要特点是 ,可以访问外网,但不能被外网设备有效访问。基于这一特点,NAT穿透技术是让NAT背后的设备,先访问指定的外网服务器,由指定的外网服务器搭建桥梁,打通内、外网设备的访问通道,实现外网设备访问到内网设备。
该技术除了可以访问隐藏在NAT后的设备,同样可以穿透防火墙。这是因为防火墙一般只拦截了入站没有拦截出站,所以也可以让防火墙内的设备对外提供服务。
由于内网设备并不是与外网设备直接相连,所以在安全性上是毋庸置疑的,内网穿透可以说是安全与效率兼得。
原文介绍: frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp是一款非常热门的 开源 内网穿透工具 主要特点有配置简单、性能高、跨平台 因此受到很多人的青睐。
开源仓库:https://github.com/fatedier/frp
话不多说步入正题 frp分为两个部分 服务端、客户端。
frp需要有一台公网服务器运行服务端 如没有请选择其他商业版软件。
服务端(frps):一般部署在公网服务器上 例如:阿里云、腾讯云 等。
客户端(frpc):部署在需要穿透的客户端 例如:NAS、软路由 等。
通过frp开源仓库地址下载frp 客户端、服务端都在一个压缩包中。
我这边服务器系统是x86的ubuntu 下载的是 frp_0.59.0_linux_amd64
根据自己的系统架构选择合适版本下载。
下载地址:https://github.com/fatedier/frp/releases
以下配置仅保证基本用法 (一般场景也够用了) 高级用法请自行查看配置文件说明根据需求调整
frps配置文件说明:https://gofrp.org/zh-cn/docs/reference/server-configures/
bindPort = 7000 # 服务端端口
auth.method = "token" # 使用令牌进行身份验证
auth.token = "abcd1234" # 令牌,客户端与服务端一致才能连接成功 推荐配置复杂一点
配置好后执行如下命令启动即可;出现如下图所示启动成功
./frps -c frps.toml #启动frps
frpc配置文件说明:https://gofrp.org/zh-cn/docs/reference/client-configures/
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 -c frpc.toml #启动frpc
下载地址:https://github.com/luckjiawei/frpc-desktop/releases
下载安装frp-desktop后,点击左侧菜单下载frp。请避免与frps(服务端) 版本偏差过大。
将服务器信息配置好,到最下面点击保存即可。
这里已我内网的minio作为示例。配置好点击保存。
配置完成后,回到主页点击启动按钮。
启动过一会后 报如下错误:connect to server error: EOF
原因:
启动过一会后 报如下错误:token in login doesn't match token from configuration
原因: