内网互通与私有网络组网基础
用私有网络把多台云服务器连成一张内网,让它们免走公网、更快更安全地互相通信。
当你的业务从一台机器扩展到多台时,机器之间就需要"说话":应用服务器要访问数据库,缓存节点要被多个后端读取,负载均衡要把流量分发给后端池。这时候,是让它们走公网互相访问,还是走一张只有你自己看得见的内网?答案几乎总是后者。
为什么要用内网
如果两台机器都在同一个数据中心,却通过各自的公网 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 内网。但请始终记住——内网只是缩小了攻击面,防火墙、认证与加密一个都不能少。