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

我在内网中有很棒的服务资源,但是没有固定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 服务


🪐祝好运🪐

相关推荐
信创天地9 分钟前
深耕金融政务核心场景:国产化数据库迁移的全流程架构设计与风险管控
运维·网络安全·系统架构·系统安全·运维开发
ZFB000122 分钟前
【麒麟桌面系统】V10-SP1 2503 系统知识——添加用户
linux·运维·kylin
释怀不想释怀35 分钟前
Docker(网络)
运维·docker·容器
ZFB000139 分钟前
【麒麟桌面系统】V10-SP1 2503 系统知识——进入救援模式
linux·运维·kylin
RisunJan41 分钟前
Linux命令-iptables-restore命令(从文件批量恢复 iptables 防火墙规则)
linux·运维·网络
轻造科技1 小时前
周期压缩极限挑战:APS排产优化这样实现
运维·devops
鲨莎分不晴1 小时前
Nginx 部署前端项目实战指南
运维·前端·nginx
java_logo3 小时前
QWEN3 企业级 Docker 容器化部署指南
运维·docker·容器·qwen3部署·qwen3部署文档·qwen3部署教程·qwen3部署方案
huohaiyu3 小时前
网络中的一些基本概念
运维·服务器·网络
Kiyra3 小时前
虚拟机假死?SSH 能连却卡 Logo 界面
运维·ssh