内网互通与私有网络组网基础

用私有网络把多台云服务器连成一张内网,让它们免走公网、更快更安全地互相通信。

当你的业务从一台机器扩展到多台时,机器之间就需要"说话":应用服务器要访问数据库,缓存节点要被多个后端读取,负载均衡要把流量分发给后端池。这时候,是让它们走公网互相访问,还是走一张只有你自己看得见的内网?答案几乎总是后者。

为什么要用内网

如果两台机器都在同一个数据中心,却通过各自的公网 IP 互访,数据会绕一大圈甚至出机房再回来,既慢又不安全,还可能计入公网流量费用。走内网则有三个直接好处:

  • 更快:同区域内网通常是数据中心内部链路,延迟低、带宽高。
  • 更安全:内网流量不暴露在公网上,减少被扫描和攻击的面。
  • 更省:很多平台对内网流量单独计费甚至免费,不占用公网出流量额度。

什么是私有网络 / VPC

私有网络(也常叫 VPC,Virtual Private Cloud)是平台为你划出的一段隔离网络空间。你在其中分配一个私有网段(例如 10.0.0.0/16 或 192.168.0.0/16),接入这个网络的每台服务器都会拿到一个内网 IP,彼此可以直接通过内网 IP 通信,而这个网络与其他租户天然隔离。

一个典型用法是应用与数据库分离:数据库服务器不绑定任何公网 IP,只在私有网络里监听;应用服务器同时接入公网(对外提供服务)和私有网络(访问数据库)。这样数据库根本无法从公网触达,安全性大幅提升。

# 查看本机拿到的内网网卡与 IP(Ubuntu/Debian)
ip -4 addr show

# 假设数据库内网 IP 为 10.0.0.5,应用侧直接用内网地址连接
psql -h 10.0.0.5 -U appuser -d appdb

数据库侧则应让服务只监听内网地址,例如 PostgreSQL 的 listenaddresses = '10.0.0.5',而不是 0.0.0.0。

没有原生私有网络怎么办:WireGuard 自建

如果你的机器分散在不同区域、不同供应商,没有现成的私有网络,可以用 WireGuard 自建一张加密的 overlay 内网。它内核级、轻量、配置极简。

sudo apt update && sudo apt install -y wireguard
wg genkey | tee privatekey | wg pubkey > publickey

在 /etc/wireguard/wg0.conf 中为每台机器分配一个 overlay 内网地址(如 10.10.0.1/24),互填对端公钥与 Endpoint,然后:

sudo wg-quick up wg0        # 启用,之后各机可用 10.10.0.x 互通

之后应用只需连接对端的 10.10.0.x 地址,流量便在加密隧道内传输。

内网 ≠ 免防护

内网降低了暴露面,但不等于绝对安全。同一私有网络内的任意主机若被攻破,就可能横向访问其他机器。因此仍要:

  • 用安全组 / 防火墙(ufw)限制内网端口只对需要的来源开放;
  • 数据库等服务始终启用账号密码与 TLS,不因"在内网"就裸奔;
  • 遵循最小权限,不同信任级别的机器再做子网划分。

小结

内网互通的核心是:同区域的机器用私有网络 / VPC 分配的内网 IP 通信,更快、更安全、更省流量;应用与数据库分离是最经典的落地方式。没有原生私有网络时,WireGuard 能快速自建加密 overlay 内网。但请始终记住——内网只是缩小了攻击面,防火墙、认证与加密一个都不能少。