19 10 月 2026
手上有几台机器——公司一台、家里一台、云上一台——想把它们拉进同一个"内网"?WireGuard 是目前的答案:内核级速度、几百行代码、十分钟组网。这篇覆盖点对点、星型拓扑和内网穿透全套玩法。对比篇见NAT 服务器与内网穿透对比。

一、为什么是 WireGuard

WireGuardOpenVPN内网穿透(frp 等)
速度内核级,接近裸线用户态,慢一截取决于中转
代码量~4000 行,攻击面极小数十万行看实现
配置一个配置文件证书 + 多文件服务端客户端
漫游自动切换端点,无感重连重连慢依赖服务端在线
定位虚拟组网(L3 VPN)虚拟组网端口转发

WireGuard 的心智模型:它不"连接服务器",它在你的所有设备间建一张虚拟网卡组成的网——每台设备拿一个 10.x.x.x 的内网地址,互相直连。云上的 NAT 型服务器没有独立公网 IP?没关系,让它当"召集人"(hub),所有设备连它,照样一张网。

二、核心概念:五个词讲明白

WireGuard 的配置只有五个关键词,懂了就会配了:

概念说明
私钥/公钥每台设备一对,wg genkey 生成;公钥公开,私钥绝密
Interface虚拟网卡,有一个内网 IP(如 10.10.0.2/24)
Peer对端设备:它的公钥 + 它的内网 IP(AllowedIPs)
Endpoint对端的公网地址(IP:端口),没有公网 IP 的设备留空
ListenPort本机监听端口,有公网 IP 的填,NAT 后的填不了

流量规则:发往某个内网 IP 的流量,WireGuard 查哪台 Peer 的 AllowedIPs 覆盖它,就连谁。

三、实战一:星型组网(最常用)

场景:云服务器(有公网 IP,NAT 型也行,只要端口能映射)当中心,家里电脑、手机、公司电脑全连它,组成 10.10.0.0/24 虚拟内网。

家里电脑 10.10.0.2 ─┐
手机     10.10.0.3 ─┼──> 云服务器 10.10.0.1 (wg0, UDP 51820) <── 有公网,当 Hub
公司电脑 10.10.0.4 ─┘

第 1 步:服务器端(Hub)

# 安装(主流发行版都有)
apt install wireguard-tools    # Debian/Ubuntu
# 或 yum install wireguard-tools  # RHEL/CentOS

# 生成密钥对
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <服务器私钥>
Address = 10.10.0.1/24
ListenPort = 51820
# 开启转发 + NAT(让虚拟网内的设备能通过服务器上外网)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

[Peer]
# 家里电脑
PublicKey = <家里电脑公钥>
AllowedIPs = 10.10.0.2/32

[Peer]
# 公司电脑
PublicKey = <公司电脑公钥>
AllowedIPs = 10.10.0.3/32
systemctl enable --now wg-quick@wg0

第 2 步:客户端(家里电脑)

# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <本机私钥>
Address = 10.10.0.2/24
DNS = 10.10.0.1

[Peer]
PublicKey = <服务器公钥>
AllowedIPs = 10.10.0.0/24     # 只走虚拟内网(科学分流),上外网走本地
Endpoint = 服务器IP:51820
PersistentKeepalive = 25      # NAT 保活,关键!

Windows/Mac 装官方客户端,导入 .conf 文件即可;手机(iOS/Android)也有官方 App,配置同一个文件,或扫二维码。

第 3 步:验证

wg show                 # 看 peer 握手没有(latest handshake 应在几秒内)
ping 10.10.0.1          # 通即组网成功
ping 10.10.0.3          # 到另一台客户端也通

PersistentKeepalive = 25 必须加:NAT 后面的设备不主动发包,映射几秒到几分钟就过期,加上它每 25 秒保活,映射永不掉。

四、NAT 型服务器当 Hub:完全可行

这是最多人问的:NAT 型云服务器没有独立公网 IP,能当 WireGuard 中心吗?——能,有一个前提。

前提是端口映射:WireGuard 走 UDP 51820,让商家把 外网端口 → 服务器 51820/UDP 映射出来,客户端 Endpoint 填 服务器IP:外网端口 即可。映射操作见NAT 端口映射完全指南。

要注意的三点:

  1. 确认映射的是 UDP——WireGuard 只用 UDP,映射成 TCP 白费
  2. 一台 NAT 机只能映射一个 WireGuard 端口,想跑多个实例(不同端口)需要多个映射
  3. 稳定性看商家:映射丢了的症状是"peer 全部掉线、wg show 里 handshake 变老",需要确认商家的映射保活策略

NAT 型当 Hub 的真实优势:价格比独立 IP 机型省一半以上,而组网场景恰好"吃配置不吃公网 IP"——hub 只需要稳定在线 + 一点点带宽,NAT 型正中下怀。

五、实战二:站点互联(Site-to-Site)

场景:公司内网 192.168.1.0/24 和家里内网 192.168.2.0/24 互通,两边都上云服务器中转。

在两边的网关设备(路由器/常开主机)上装 WireGuard,配置文件只需把对方的网段加进 AllowedIPs:

# 公司侧网关
[Peer]
PublicKey = <服务器公钥>
AllowedIPs = 10.10.0.0/24, 192.168.2.0/24    # 虚拟网 + 对方内网
Endpoint = 服务器IP:51820
PersistentKeepalive = 25

服务器侧把两个网段都登记为不同 Peer 的 AllowedIPs,打开 IP 转发,两边内网设备互访 192.168.x.x 即通。零接触改造对方内网——不用改一台员工电脑的路由,流量自动走。

六、实战三:远程访问内网服务

组网后,"访问家里 NAS""连公司内网数据库"就是直连内网 IP 的事:

# 连上 WireGuard 后,直接访问对端内网 IP
ssh admin@192.168.1.10        # 公司内网跳板机
smb://192.168.2.5             # 家里 NAS
mysql -h 192.168.1.20         # 内网数据库

这比传统"开端口 + 动态域名"的方案安全一个量级:服务不暴露在公网,只有组网内的设备能访问。配合防火墙只放行 wg0 网卡,见Linux 防火墙配置。

安全红线:WireGuard 的安全全靠私钥。私钥丢了 = 那台设备的身份归别人,第一件事应该是从所有 Peer 里删掉它的公钥,然后重新签发。团队使用要建立密钥管理制度,别在微信里传 .conf 文件。

七、常见问题排查

症状原因解决
wg show 没有 peerEndpoint 填错 / 防火墙挡 UDP核对 IP:端口;云安全组放行 UDP
有 peer 但 ping 不通AllowedIPs 没包含对方检查双方 AllowedIPs 是否覆盖彼此
时通时断NAT 映射过期客户端加 PersistentKeepalive = 25
能连虚拟网但上不了外网服务器没开转发/NAT检查 PostUp 的 iptables 规则、net.ipv4.ip_forward=1
重启后 peers 全丢配置没保存确认用 wg-quick@wg0 服务管理,别手动 wg
两台 NAT 后设备互连失败都没有公网入口双方都连 hub(星型),别直连

网络层排查工具见Linux 网络排查工具大全,抓包见Tcpdump 实战。

八、运维清单

  • [ ] 私钥文件权限 600,别进 Git(代码泄露防范见Git 仓库安全)
  • [ ] 每台设备独立密钥对,别共享配置——踢人时删公钥即可
  • [ ] wg show 定期看 handshake 时间,异常即掉线
  • [ ] 配置变更走文件 + 服务重启,别手敲 wg set(重启即丢)
  • [ ] 换设备先加新 Peer 验证,再删旧的——永远先建后删

结语

WireGuard 把"组网"这件事简化到了配置文件级别:星型组网连全家设备、站点互联打通公司家里、NAT 后设备靠 PersistentKeepalive 常在线。对有 NAT 型服务器的用户来说,它还顺带解决了一个哲学问题——没有独立公网 IP,照样能织一张自己的网。

需要组网中枢的服务器,可以看看财富云计算:NAT 型云服务器支持 UDP 端口映射、稳定在线、价格比独立 IP 机型省一半以上——当 WireGuard Hub 这种"要稳定不要公网 IP"的场景,NAT 型刚好对症。

延伸阅读
  1. Homepage 个人仪表盘:把散落各处的服务收进一个首页
  2. SSL 证书完全指南:免费证书、自动续期与不过期监控
  3. 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
  4. 压测与容量规划:上线前就知道你的服务器能扛多少人
  5. AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
  6. Hugo 静态博客搭建:秒开的博客,部署只要一个目录
  7. 安全应急响应完全手册:服务器被入侵后,按这个流程走
  8. 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店
更多阅读
  1. 上一篇:高可用架构入门:小团队不需要 K8s,也能把可用性做到 99.9%
  2. 下一篇:n8n 自动化工作流:开源 Zapier,把重复劳动交给服务器
发表评论 2

取消回复