给你推荐一款非常优秀的内网穿透工具 FRP (Fast Reverse Proxy)
作为程序员为什么你必须有一款非常优秀的内网穿透工具
在计算机网络中,内网穿透是一种通过公网建立安全通道,使得位于内网的计算机和服务可以被外部网络访问。对程序员而言,内网穿透可以帮助你干什么呢?
-
访问内网服务
好处: 内网穿透允许程序员通过公网访问内网的服务。这对于开发者来说是极为方便的,尤其是在远程工作或需要通过云服务对内网服务进行访问的场景下。
必要性: 内网中的服务通常无法直接通过公网 IP 访问,内网穿透打破了这种限制,使得程序员可以轻松地在外部环境中访问和测试内网服务。
你想想你平时在公司的开发环境是不是都在公司的内网环境中,如果你需要在家里使用公司的内网环境的话,内网穿透是不是一个非常好的选择。
-
远程调试与开发
好处: 内网穿透允许程序员在远程环境中进行调试和开发。通过将本地服务映射到公网上,开发者可以在任何地方、任何设备上进行开发工作,无需局限于特定网络环境。
必要性: 对于需要不断迭代和测试的项目,远程调试是提高开发效率的关键。内网穿透为程序员提供了远程调试的灵活性,减少了时间和地域上的限制。
-
Webhook 接收
好处: 内网穿透可以用于接收来自外部服务的 Webhook 请求。这对于处理第三方服务的回调通知、接收 GitHub Webhook 等场景非常重要。
必要性: 外部服务通常需要将回调通知发送到指定的地址,而内网环境下无法直接接收这些请求。内网穿透可以将本地服务映射到公网,使得 Webhook 回调能够正常触发本地服务。
-
敏感数据保护
好处: 内网穿透通过加密和身份验证机制,确保了内网服务与外部环境之间的通信安全性。开发者可以安心地在外部环境中使用内网服务,而不必担心敏感信息泄漏。
必要性: 在保护用户数据隐私和遵循安全规范的前提下,内网穿透为程序员提供了一种安全可控的远程访问方式,使得敏感数据得以有效保护。
所以我们程序员必须拥有得学会使用内网穿透,这对我们的工作有很大的帮助。
推荐一个非常好用的内网穿透工具 FRP(Fast Reverse Proxy)
为什么要推荐FRP(Fast Reverse Proxy)呢?FRP(Fast Reverse Proxy)作为一款优秀的内网穿透工具,它具有:
-
简单易用的配置
FRP 提供了简洁明了的配置文件,配置过程简单直观。用户可以通过简单的设置完成对内网服务的映射和穿透,无需繁琐的操作和深厚的网络知识。
-
多协议支持
FRP 支持多种协议,包括常见的 TCP 和 UDP 协议,以及应用层的 HTTP、HTTPS 等协议。这使得 FRP 不仅可以用于简单的端口映射,还可以适用于代理 Web 服务等更复杂的应用场景。
-
安全性保障
FRP 提供了可靠的身份验证和加密机制,用户可以通过设置用户名和密码,以及使用 TLS/SSL 加密通信,确保传输的安全性。这对于处理敏感数据和保护内网服务至关重要。
-
跨平台支持
FRP 支持多个操作系统,包括 Windows、Linux、macOS 等。这为用户提供了更大的灵活性,使其能够在不同的平台上选择适用的版本,便于部署和使用。
-
高性能和稳定性
FRP 的设计注重性能和稳定性,经过实际测试,在处理大量连接和数据传输时表现出色。这使得 FRP 可以在生产环境中得到可靠的应用,保证服务的稳定运行。
-
活跃的社区和持续更新
FRP 拥有一个活跃的开源社区,用户可以在社区中获取支持、提出问题,分享经验。同时,FRP 的开发团队也在不断进行更新和改进,保障了 FRP 的稳定性、兼容性和安全性。
-
灵活的应用场景
由于支持多协议和提供了丰富的配置选项,FRP 可以适用于各种不同的应用场景,包括远程调试、内网服务对外访问、Webhook 接收等,为用户提供了极大的灵活性。
FRP(Fast Reverse Proxy)的快速入门
我们使用 Linux Ubuntu 20.04.2 LTS x86_64 作为操作系统来演示 FRP (Fast Reverse Proxy)的快速搭建。
FRP需要在两台服务器搭建,一个客户端,一个服务端。
-
FRP 服务器端:
-
监听外部请求: 服务器端负责监听来自公网的外部请求。这些请求可以是来自不同地理位置或网络环境的客户端发起的,通过公网传输到 FRP 服务器。
-
反向代理内网服务: 当 FRP 服务器接收到外部请求时,它会将请求转发给内网的 FRP 客户端。这种方式实现了内网服务对外的映射,即通过 FRP 服务器的公网 IP 和端口访问内网的服务。
-
安全认证和加密: FRP 服务器通常支持安全认证机制,通过用户名和密码等方式对外部请求进行身份验证。同时,服务器和客户端之间的通信也可以采用加密手段,保障数据传输的安全性。
-
FRP 客户端:
-
连接 FRP 服务器: 客户端负责与 FRP 服务器建立连接,通常通过配置文件指定 FRP 服务器的地址和端口。连接建立后,客户端与服务器之间可以进行双向通信。
-
映射内网服务: 客户端将内网的服务与 FRP 服务器进行关联,通过配置文件指定内网服务的类型、IP 地址、端口等信息。这样,来自 FRP 服务器的外部请求就能够被映射到相应的内网服务。
-
维持心跳和保持连接: 为了保持连接的稳定性,客户端会定期向 FRP 服务器发送心跳信息,以确保连接没有中断。这对于长时间运行的服务和实时通信非常重要。
在服务器端配置 FRP
1、下载 FRP
你可以在 Frp 的 GitHub Release 页面 上找到最新版本的下载链接。
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
2、解压 FRP
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
3、进入 FRP目录
复制一份 FRP 的示例配置文件:
cp frps.ini /etc/frp/frps.ini
然后编辑配置文件:
nano /etc/frp/frps.ini
修改配置文件中的 bind_port
为 Frp 服务器监听的端口,例如:
bind_port = 7000
4、启动 FRP 服务器
./frps -c /etc/frp/frps.ini
在客户端配置 FRP
1、下载 FRP
你可以在 Frp 的 GitHub Release 页面 上找到最新版本的下载链接。
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
2、解压 FRP
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
3、进入 FRP目录
复制一份 FRP 的示例配置文件:
cp frpc.ini /etc/frp/frpc.ini
然后编辑配置文件( 注意 是 frpc.ini ):
nano ./frpc.ini
修改配置文件中的 server_addr
和 server_port
为你 FRP 服务器的地址和端口,设置 token
为服务器配置文件中的 token
。
[common]
server_addr = your_server_ip
server_port = 7000
token = your_token
添加映射规则:
FRP将本地的 127.0.0.1:80
映射到 FRP 服务器上的 your_server_ip:6000
。
[web]
type = http local_ip = 127.0.0.1
local_port = 80
remote_port = 6000
4、启动 FRP 服务器
./frpc -c /etc/frp/frpc.ini
博主 FRP 配置仅供参考
服务端
-
地址 47.104.77.123
[common]
# Frp 服务器监听的端口,默认为 7000,这里改成 7001
bind_port = 7001
# 授权码,请使用更复杂和安全的令牌
token = 123456
# Frp 管理后台端口,按需更改,默认为 7500
dashboard_port = 7500
# Frp 管理后台的用户名
dashboard_user = admin
# Frp 管理后台的密码,请设置为强密码
dashboard_pwd = admin
# 启用 Prometheus 监控
enable_prometheus = true
# Frp 日志配置
log_file = /var/log/frps.log
# 日志级别,可以设置为 debug、info、warn、error,默认为 info
log_level = info
# 日志最大保存天数
log_max_days = 3
客户端
# 客户端配置
[common]
# 启用 TLS 加密
tls_enable = true
# Frp 服务器地址
server_addr = 47.104.77.123
# Frp 服务器监听的端口,与 frps.ini 的 bind_port 一致
server_port = 7001
# Frp 服务器配置的 token,与 frps.ini 的 token 一致
token = 123456
# 配置 SSH 服务
[ssh]
type = tcp
# 本地 SSH 服务地址
local_ip = 127.0.0.1
# 本地 SSH 服务端口
local_port = 22
# 自定义的远程端口,用于连接 SSH
remote_port = 6000
# 配置 HTTP 服务
[web]
type = http
# 本地 HTTP 服务地址
local_ip = 127.0.0.1
# 本地 HTTP 服务端口
local_port = 8080
# 自定义的子域名,用于访问 Web 服务
subdomain = test.hijk.pw
# 自定义的远程端口,例如 8080
remote_port = 8080
使用
你就可以通过公网47.104.77.123
连接到 ssh 远程连接到你的电脑了。
ssh 123456@47.104.77.123 -p 6000
注意 端口一定要开放
比如:博主的例子里边的 服务端 7001 7005端口。
链接:https://juejin.cn/post/7317536477696704527
(版权归原作者所有,侵删)