内网的服务如何能在公网使用?

我在内网中有很棒的服务资源,但是没有固定IP,如何能够在公网使用呢?

要解决这种问题,内网穿透工具 frp(Fast Reverse Proxy) 是一个很棒的选择:既然外网不能访问内网,那么就主动从内网打通到外网的通道!

基本的原理是:

  • 前提条件
    • 要有一台有公网地址的服务器【配置可以比较低】,内网服务器可以连接到这台公网服务器
    • 内网服务器安装frp客户端:frpc,公网服务器安装frp服务端:frps
  • 建立 "长连接"------ 打通内网到公网的 "通道"
    • 内网设备启动 frpc 客户端,并加载配置文件(配置中包含 frps 的公网 IP、端口、认证信息等)。
    • frpc 主动向公网的 frps 发起 TCP 长连接(默认用 8000 端口,可自定义),并维持这个连接(通过心跳机制防止断开)。

这一步是穿透的关键:由于内网设备没有公网 IP,公网无法主动 "找到" 内网设备,因此必须由内网的 frpc "主动出击",与公网的 frps 建立连接,形成一条稳定的 "数据通道"。

内网设备无法被公网访问的根本原因,是路由器的 NAT(网络地址转换)机制会隐藏内网 IP。frp 通过 "frpc 主动连接 frps" 的方式,让路由器将 frpc 与 frps 的连接加入 "NAT 映射表",后续 frps 向 frpc 发送的数据(公网请求),会被路由器正确转发到内网的 frpc,从而实现 "穿透" NAT 的效果。

本文通过一个具体的例子来展示如何使用内网穿透工具frp将内网的web服务推向公网。

frp下载地址


假定在内网服务器中有一个web服务,监听端口号:8080;公网服务器IP地址为:123.123.123.123。下图描述了实现内网穿透的主要步骤:

  1. 在具有公网 IP 的公网服务器上部署 frps

部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:

toml 复制代码
bindPort = 7000
  1. 在需要被访问的内网服务器上部署 frpc

部署 frpc 并编辑 frpc.toml 文件,以下是示例配置:

toml 复制代码
serverAddr = "123.123.123.123"  # frps 的IP
serverPort = 7000   # frps的bindPort,连接它可以打开通道

[[proxies]]
name = "myWebServer"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080    # 本地web服务监听的端口号
remotePort = 6666   # 在公网上暴漏的端口号
  • localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口
  • remotePort 表示在 frps 监听的端口,访问此端口的流量将被转发到内网服务的地址和端口。
  1. 启动 frps 和 frpc

公网服务器需要打开端口 7000 和 6666。

  1. 用户访问内网机器

用户使用网址:http://123.123.123.123:6666 即可使用 myWebServer 了,frps将用户访问公网服务器端口 6666 的流量转发到了内网服务器的端口: 8080 。

下图直观的展示了主要过程:

如果要通过域名访问内网服务器的web服务,可参见:通过自定义域名访问内网的 Web 服务


🪐祝好运🪐

相关推荐
七夜zippoe12 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64814 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满14 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠14 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90314 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技15 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀16 小时前
Linux环境变量
linux·运维·服务器
zzzsde16 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º17 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~18 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化