ROS下载
ESXI 直接CHR VMDK
https://mikrotik.com/download/chr
https://download.mikrotik.com/routeros/7.21.5/chr-7.21.5.vmdk.zip

ROS部署
解压chr-7.21.5.vmdk.zip 将vmdk文件上传到esxi存储 这里定义/ros7/ros7.vmdk
新建虚拟机 移除硬盘 添加现有硬盘 选中 /ros7/ros7.vmdk
硬盘控制器 注意要选 IDE控制器

引导选项为BIOS

启动成功

用户名:admin 密码:无
配置ROS
不知道ROS IP,可以使用winbox寻找连接ROS
https://download.mikrotik.com/routeros/winbox/4.3/WinBox_Windows.zip

ROS 旁路模式
ROS默认就是路由模式(Routing)
旁路由在 ROS 中依然保持路由模式(Routing),绝不能改桥接。
原因解析
-
**路由模式:旁路由本质上是一个独立的数据处理节点。它接收主路由发来的特定流量,在内部进行路由选择、策略处理或代理转发后,再回传给主路由。这需要依靠 RouterOS 的路由表和三层转发能力。
-
**桥接模式:改桥接(Bridge)会把 ROS 的所有网卡直接“串联”变成交换机。一旦改成桥接且只有单网口连接,不仅路由功能全失效,还容易在虚拟网卡间引发环路(Loopback)导致网络瘫痪。
保持路由模式不变,只需按以下 3 步操作:
- 设置静态 IP 在
IP->Addresses里,给接口绑定主路由同网段静态 IP(如192.168.10.8/24)。 - 设置默认网关 在
IP->Routes里,添加一条目标为0.0.0.0/0的路由,网关指向主路由(如192.168.10.1)。 - 确认接口状态 只要确认网口在
Interfaces里正常 UP,且没有开启 DHCP 即可。后续只需让终端设备的网关指向192.168.10.8就能生效。
配置 ROS 静态IP
ROS IP 默认是DHCP,这里调整静态IP并移除动态分配
IP->Addresses

IP->DNS 配置上游DNS Server
勾上 Allow Remote Requests 才支持 客户端使用 ROS IP为DNS 进行DNS解析
配置 ROS DNS 服务
- 点击 左侧菜单 IP -> DNS
- 在 Servers 栏中点击
+(新增),添加公共 DNS 地址:223.5.5.5(阿里 DNS)119.29.29.29(腾讯 DNS)- _或填你主路由的 IP(如
MARKDOWN_HASH1bac027cf67efcc4d10125724221fc48MARKDOWNHASH)
- 最关键的一步:务必勾选
Allow Remote Requests(允许远程请求)。- 如果不勾选此项,局域网其他设备把网关/DNS 指向 ROS 时,ROS 将拒绝回应 DNS 查询,导致“DNS 域名解析失败”。
- 点击 Apply / OK 保存。

配置默认路由
IP->Routes
- 点击左侧菜单 IP -> Routes。
- 点击左上角的
+(新增路由规则)。 - 在弹出的窗口中配置:
- Dst. Address: 保持默认的
0.0.0.0/0(代表所有IP流量)。 - Gateway: 填写你主路由的 IP 地址(如
192.168.10.1)。
- Dst. Address: 保持默认的
- 点击 OK 保存。

验证旁路由联网状态
启用后,可以测试 ROS 本身能否正常上网:
- 打开左侧菜单 Tools -> Ping。
- 在
Ping To框里输入223.5.5.5或 www.baidu.com 点击 Start。

后面也可以web访问 ROS IP

客户端验证
Ubuntu 22 客户端配置
root@demo-harbor:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: false
optional: true
addresses: [192.168.10.24/24]
nameservers:
addresses: [192.168.10.8]
routes:
- to: default
via: 192.168.10.8
version: 2
root@demo-harbor:~# netplay apply
默认会显示重定向到主路由IP 192.168.10.1
root@demo-harbor:~# ping www.sundayhk.com
PING www.sundayhk.com (172.67.137.163) 56(84) bytes of data.
From 192.168.10.8 (192.168.10.8) icmp_seq=1 Redirect Host(New nexthop: 192.168.10.1 (192.168.10.1))
64 bytes from 172.67.137.163 (172.67.137.163): icmp_seq=1 ttl=51 time=200 ms
From 192.168.10.8 (192.168.10.8) icmp_seq=2 Redirect Host(New nexthop: 192.168.10.1 (192.168.10.1))
64 bytes from 172.67.137.163 (172.67.137.163): icmp_seq=2 ttl=51 time=203 ms
From 192.168.10.8 (192.168.10.8) icmp_seq=3 Redirect Host(New nexthop: 192.168.10.1 (192.168.10.1))
开启 NAT 伪装
在单臂旁路由网络架构中,开启 masquerade 会将出站数据包的源 IP 改写为 ROS 的 IP(`192.168.10.8),使主路由直接将数据回包给 ROS,从而彻底消除物理网络层面的重定向触发条件。
IP->Firewall->NAT
- 点击左侧菜单 IP -> Firewall。
- 切换到 NAT 标签页,点击
+添加新规则。 - General 标签页:
- Chain:
srcnat - Out. Interface:
ether1
- Chain:
- Action 标签页:
- Action: 选择
masquerade
- Action: 选择
- 点击 OK 保存。

Wireguard 服务端
这里是从wg-easy 迁移到ROS,所以依旧原私钥,新创建的话 Private Key 留空 会自动生成
第一步:创建 WireGuard 接口
- 点击左侧菜单 WireGuard。
- 在 Interfaces 标签页中,点击
+(新增)。 - 填写参数:
- Name:
wg1 - Listen Port:
51820 - Private Key:把原本 wg-easy 的服务端私钥直接粘贴进来(系统会自动计算出 Matching Public Key)。
- Name:
- 点击 OK 保存。

第二步:配置内网网关 IP
- 点击左侧菜单 IP -> Addresses。
- 点击
+(新增)。 - 填写参数:
- Address:
10.8.0.1/24(原 wg-easy 的网段 IP) - Interface:选择刚刚创建的
wg-easy-server
- Address:
-
点击 OK 保存。

第三步:迁移导入客户端 (Peers)
- 点击左侧菜单 WireGuard,切换到 Peers 标签页。
- 点击
+(新增一个客户端):- Interface:选择
wg1 - Public Key:粘贴客户端 1 的 PublicKey
- Allowed Address:填入该客户端对应的 IP,必须带
/32(例如10.8.0.2/32) - Comment(可选):填入客户端名字(如
iPhone),方便识别
- Interface:选择
- 点击 OK 保存。

第四步:配置旁路由 NAT 伪装(保证客户端能正常上网)
- 点击左侧菜单 IP -> Firewall。
- 切换到 NAT 标签页,点击
+(新增)。 - General 标签页:
- Chain:选择
srcnat - Out. Interface:选择
ether1
- Chain:选择
- Action 标签页:
- Action:选择
masquerade
- Action:选择
- 点击 OK 保存
这一步上面配置过了

旁路由 / 单臂路由模式(没有开启默认 Drop 策略)下面的放行可以不用配置
防火墙 Filter Rules 里没有配置最底部的 drop all else(拦截所有未显式允许的入站流量)默认拒绝规则,那么 ROS 默认的动作就是放行所有流量。此时有没有这条 accept 规则,UDP 51820 端口都能直接收到包。

第五步:主路由端口映射修改
登录主路由器管理后台(192.168.10.1):
- 找到 端口映射 / 虚拟服务器 页面。
- 把原本指向 Docker 宿主机的 UDP 51820 端口映射,目标 IP 修改为
192.168.10.8(ROS 的 IP)。
nat server ros-wireguard zone untrust protocol udp global 123.6.112.112 51820 inside 192.168.10.8 51820 no-reverse
Wireguard 客户端
[Interface]
PrivateKey = oEhCJHeBZv9xxxxxxxxxxxxxxZMXpnIM2g=
Address = 10.1.105.6/24
DNS = 223.5.5.5
[Peer]
PublicKey = HkJ9UvZ8jIX/TmaIPg9xxxxxxxxxxxxxxxNHVtb1o=
PresharedKey = 06+HmJQUOFHhPk52xxxxxxxxxxxxxLFezexW0=
AllowedIPs = 192.168.1.0/24, 192.168.2.0/24
PersistentKeepalive = 0
Endpoint = 12.49.12.38:51820
第一步:创建客户端 WireGuard 接口
- 点击左侧菜单 WireGuard。
- 在 Interfaces 标签页,点击
+(新增):- Name:wg2
- Listen Port:留空或设为一个未使用的端口(如
51821) - Private Key:系统会自动生成一个公私钥。点击 Apply 后,复制生成的 Public Key,这个公钥需要提供给远端服务端绑定。
- 点击 OK 保存。

第二步:添加远端服务端的 Peer 信息
- 切换到 Peers 标签页,点击
+(新增):- Interface:选择刚刚创建的
wg-client。 - Public Key:填写远端服务端的公钥。
- Endpoint:填写远端服务端的公网 IP 或域名。
- Endpoint Port:填写远端服务端的 UDP 端口(默认一般为
51820)。 - Allowed Address(核心设置):
- 点击
+添加远端允许通行的网段: - 如果只访问远端内网,填远端的内网段(例如
192.168.1.0/24和远端 WG 接口网段10.0.0.0/24)。 - 注意:旁路由场景下切勿填
0.0.0.0/0,否则会覆盖 ROS 本身的默认路由导致断网。
- 点击
- Preshared Key:如果远端要求预共享密钥,在此处填入;没有则留空。
- Persistent Keepalive:填入
25(心跳保活,防止 UDP 连接被路由器防火墙切断)。
- Interface:选择刚刚创建的
- 点击 OK 保存。

第三步:配置本地接口 IP
- 点击左侧菜单 IP -> Addresses,点击
+。 - Address:填入远端管理员分配给你的 WireGuard 客户端 IP(带子网掩码,例如
10.0.0.2/24)。 - Interface:选择
wg-client。 - 点击 OK 保存。
-

第四步:配置静态路由(让本地访问远端网段)
由于没有将 0.0.0.0/0 设为全局,你需要告诉 ROS 哪些网段走这个隧道:
- 点击左侧菜单 IP -> Routes,点击
+(新增)。 - Dst. Address:填入远端的目标网段(例如
192.168.1.0/24)。 - Gateway:选择
wg-client接口(或填入远端 WG 服务端的内网 IP10.1.105.1)。 - 点击 OK 保存。

第五步:测试连接
- 回到 WireGuard -> Peers 列表,观察
wg-client这一行:- 查看 Last Handshake 是否显示为几秒前(如
00:00:03)。 - 查看 Rx / Tx 是否有双向流量增加。
- 查看 Last Handshake 是否显示为几秒前(如
- 点击左侧 Tools -> Ping,在
Ping To里输入远端内网机器的 IP 进行测试。
ROS 图表
- 打开 Winbox,点击左侧菜单 Tools -> Graphing。
- 在弹出的窗口中,你会看到三个标签页,建议把它们都配置上
- 接口流量图(Interface Rules):
- 点击
Interface Rules标签页 -> 点击+(新增)。 - Interface:选择
all(监控所有接口)或单独选择ether1/wg1。 - Allow Address:默认
0.0.0.0/0保持不变(允许所有 IP 访问图形页面)。 - 点击 OK 保存。
- 点击
- CPU/内存/磁盘资源图(Resource Rules):
- 切换到
Resource Rules标签页 -> 点击+(新增)。 - Allow Address:默认
0.0.0.0/0保持不变。 - 点击 OK 保存。
- 切换到
- 接口流量图(Interface Rules):
SundayHK
