摇来摇去摇碎点点的金黄
伸手牵来一片梦的霞光
南方的小巷推开多情的门窗
年轻和我们歌唱
摇来摇去摇着温柔的阳光
轻轻托起一件梦的衣裳
古老的都市每天都改变模样
🎵 方芳《摇太阳》
1. 什么是内网穿透?
内网穿透是一种技术,允许位于防火墙或路由器后面的设备(即内网设备)被外部网络访问。由于 NAT(网络地址转换)和防火墙的存在,内网设备通常无法直接从外网访问。内网穿透技术通过中继服务器或反向代理等方式,突破这一限制,实现内网设备的外网访问。
常见的内网穿透工具包括:
- frp(Fast Reverse Proxy)
- ngrok
- 自己搭建的 VPN
在众多工具中,frp 因其高效、灵活和开源的特性,受到了广泛的关注和使用。
2. frp 简介
frp 是一个高性能的反向代理应用,专注于将内网中的服务安全地暴露到公网。它由两部分组成:
frps(frp Server):部署在拥有公网 IP 的服务器上,负责接收来自客户端的连接请求。
frpc(frp Client):部署在内网中的客户端机器上,负责将本地服务通过 frps 暴露到公网。
frp 支持多种协议,包括 HTTP、HTTPS、TCP、UDP 等,适用于各种场景,如远程桌面、Web 服务、SSH 等。
3. frp 的安装与配置
3.1 准备工作
一台拥有公网 IP 的服务器(如 VPS),用于部署 frps。
内网中的一台或多台需要被访问的设备。
3.2 下载 frp
首先,从 frp 的官方 GitHub 仓库下载适合你系统的 frp 版本。
以 Linux 系统为例:
# 下载 frp(假设版本为 v0.44.0)
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
# 进入目录
cd frp_0.44.0_linux_amd64
4. 实战演练:通过 frp 访问内网 mongo数据库服务
4.1 在 VPS 上配置 frps
frps.toml
bindPort = 7000
webServer.port = 7700
# dashboard's username and password are both optional
webServer.user = "admin"
webServer.password = "admin"
- bindPort = 7000
作用:
bindPort 是 frp 服务器(frps)用于监听客户端(frpc)连接的端口。当客户端启动并连接到 frp 服务器时,会通过这个端口进行通信。- webServer.port = 7700
作用:
webServer.port 指定 frp 服务器的 Web 仪表盘(Dashboard)所使用的端口。通过访问这个端口,您可以监控和管理 frp 服务器的状态和连接情况。- webServer.user = “admin”
作用:
webServer.user 设置访问 Web 仪表盘所需的用户名。- webServer.password = “admin”
作用:
webServer.password 设置访问 Web 仪表盘所需的密码。
启动 frps:
复制代码
./frps -c frps.toml
4.2 在家中服务器上配置 frpc
frpc.toml
serverAddr = "公网ip"
serverPort = 7000
[[proxies]]
name = "mongo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 27017
remotePort = "公网开放端口"
启动 frpc:
./frpc -c frpc.toml
这样就可以通过公网ip:公网开放端口
访问内网mongodb服务
5. 总结
frp 是一款功能强大且易于使用的内网穿透工具,适用于多种场景。通过本文的介绍,你应该已经掌握了 frp 的基本安装与配置方法,并了解了其一些高级功能。无论是远程访问内网服务、搭建个人服务器,还是实现跨网络的应用部署,frp 都能提供便捷的解决方案。