MikroTik 配置 WireGuard 组网实操备忘
以实操步骤记录 MikroTik 上 WireGuard 的搭建过程:生成密钥对、创建接口、配置对等体与允许的地址段、补齐到对端路由,并总结端口未放行、Allowed Address 写错、MTU 不匹配、公私钥搞反等高频坑与连通性验证方法。
# MikroTik 配置 WireGuard 组网实操备忘
WireGuard 以轻量、高效著称,在 MikroTik 上配置比传统的 IPsec 简单得多。本文记录一台 RouterOS 设备作为服务端、另一台或对端客户端接入的实操步骤,并整理几个高频坑。
## 一、整体结构
WireGuard 是点对点的加密隧道,核心要素只有三个:
- **私钥 / 公钥**:每台设备各持一对
- **接口(Interface)**:绑定本机私钥,监听 UDP 端口
- **对等体(Peer)**:描述对端公钥、允许的地址段与对端端点
## 二、配置步骤
### 1. 生成密钥对
```bash
/interface wireguard generate-preshared-key
/interface wireguard generate-private-key
```
把私钥写到接口,公钥交给对端。
### 2. 创建接口
```bash
/interface wireguard add name=wg0 listen-port=13231 private-key="本机私钥"
```
### 3. 添加对等体
```bash
/interface wireguard peers add interface=wg0 \
public-key="对端公钥" \
allowed-address=10.10.10.2/32 \
endpoint-address=对端公网IP endpoint-port=13231
```
### 4. 补路由与地址
```bash
/ip address add address=10.10.10.1/24 interface=wg0
/ip route add dst-address=对端内网/24 gateway=wg0
```
## 三、四个高频坑
> **坑 1:防火墙没放行 UDP 端口**
> 服务端 `listen-port` 对应的 UDP 端口必须在本机 `input` 链放行,否则对端握手永远超时。
> **坑 2:Allowed Address 写太宽或太窄**
> 它既决定哪些流量走隧道,也决定本端接受来自哪些源地址。写错会导致能连上却 ping 不通内网。
> **坑 3:MTU 不匹配丢大包**
> 隧道开销约 80 字节,默认 1420 较稳妥;设成 1500 会在传大文件时卡死,抓包表现为分片丢失。
> **坑 4:私钥公钥搞反**
> 接口填的是**自己的私钥**,peer 里填的是**对端的公钥**,两套不能混用。
## 四、验证
- 看接口状态:`/interface wireguard print`
- 看握手时间:`/interface wireguard peers print` 里的 `last-handshake`
- 从一端 ping 另一端隧道地址,再 ping 对端内网
配置完导出备份,换机子直接导入,省去重复踩坑。