ROS 软路由旁路模式和Wireguard服务端及客户端配置

2026-08-27 33 0

ROS下载

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

image.png

ROS部署

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

image.png

引导选项为BIOS
image.png

启动成功
image.png

用户名:admin 密码:无

配置ROS

不知道ROS IP,可以使用winbox寻找连接ROS
https://download.mikrotik.com/routeros/winbox/4.3/WinBox_Windows.zip

image.png

ROS 旁路模式

ROS默认就是路由模式(Routing)
旁路由在 ROS 中依然保持路由模式(Routing),绝不能改桥接。

原因解析

  • **路由模式:旁路由本质上是一个独立的数据处理节点。它接收主路由发来的特定流量,在内部进行路由选择、策略处理或代理转发后,再回传给主路由。这需要依靠 RouterOS 的路由表和三层转发能力。

  • **桥接模式:改桥接(Bridge)会把 ROS 的所有网卡直接“串联”变成交换机。一旦改成桥接且只有单网口连接,不仅路由功能全失效,还容易在虚拟网卡间引发环路(Loopback)导致网络瘫痪。

保持路由模式不变,只需按以下 3 步操作:

  1. 设置静态 IPIP -> Addresses 里,给接口绑定主路由同网段静态 IP(如 192.168.10.8/24)。
  2. 设置默认网关IP -> Routes 里,添加一条目标为 0.0.0.0/0 的路由,网关指向主路由(如 192.168.10.1)。
  3. 确认接口状态 只要确认网口在 Interfaces 里正常 UP,且没有开启 DHCP 即可。后续只需让终端设备的网关指向 192.168.10.8 就能生效。

配置 ROS 静态IP

ROS IP 默认是DHCP,这里调整静态IP并移除动态分配

IP->Addresses

image.png

IP->DNS 配置上游DNS Server
勾上 Allow Remote Requests 才支持 客户端使用 ROS IP为DNS 进行DNS解析

配置 ROS DNS 服务

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

image.png

配置默认路由

IP->Routes

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

验证旁路由联网状态

启用后,可以测试 ROS 本身能否正常上网:

  • 打开左侧菜单 Tools -> Ping
  • Ping To 框里输入 223.5.5.5 或 www.baidu.com 点击 Start
    image.png

后面也可以web访问 ROS IP

image.png

客户端验证

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

  1. 点击左侧菜单 IP -> Firewall
  2. 切换到 NAT 标签页,点击 + 添加新规则。
  3. General 标签页
    • Chain: srcnat
    • Out. Interface: ether1
  4. Action 标签页
    • Action: 选择 masquerade
  5. 点击 OK 保存。

image.png

Wireguard 服务端

这里是从wg-easy 迁移到ROS,所以依旧原私钥,新创建的话 Private Key 留空 会自动生成

第一步:创建 WireGuard 接口

  1. 点击左侧菜单 WireGuard
  2. Interfaces 标签页中,点击 +(新增)。
  3. 填写参数:
    • Namewg1
    • Listen Port51820
    • Private Key:把原本 wg-easy 的服务端私钥直接粘贴进来(系统会自动计算出 Matching Public Key)。
  4. 点击 OK 保存。

image.png

第二步:配置内网网关 IP

  1. 点击左侧菜单 IP -> Addresses
  2. 点击 +(新增)。
  3. 填写参数:
    • Address10.8.0.1/24(原 wg-easy 的网段 IP)
    • Interface:选择刚刚创建的 wg-easy-server
  4. 点击 OK 保存。

    image.png

第三步:迁移导入客户端 (Peers)

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

第四步:配置旁路由 NAT 伪装(保证客户端能正常上网)

  1. 点击左侧菜单 IP -> Firewall
  2. 切换到 NAT 标签页,点击 +(新增)。
  3. General 标签页:
    • Chain:选择 srcnat
    • Out. Interface:选择 ether1
  4. Action 标签页:
    • Action:选择 masquerade
  5. 点击 OK 保存

这一步上面配置过了
image.png

旁路由 / 单臂路由模式(没有开启默认 Drop 策略)下面的放行可以不用配置

防火墙 Filter Rules 里没有配置最底部的 drop all else(拦截所有未显式允许的入站流量)默认拒绝规则,那么 ROS 默认的动作就是放行所有流量。此时有没有这条 accept 规则,UDP 51820 端口都能直接收到包。

image.png

第五步:主路由端口映射修改

登录主路由器管理后台(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 接口

  1. 点击左侧菜单 WireGuard
  2. Interfaces 标签页,点击 +(新增):
    • Name:wg2
    • Listen Port:留空或设为一个未使用的端口(如 51821
    • Private Key:系统会自动生成一个公私钥。点击 Apply 后,复制生成的 Public Key,这个公钥需要提供给远端服务端绑定。
  3. 点击 OK 保存。

image.png

第二步:添加远端服务端的 Peer 信息

  1. 切换到 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 连接被路由器防火墙切断)。
  2. 点击 OK 保存。

image.png

第三步:配置本地接口 IP

  1. 点击左侧菜单 IP -> Addresses,点击 +
  2. Address:填入远端管理员分配给你的 WireGuard 客户端 IP(带子网掩码,例如 10.0.0.2/24)。
  3. Interface:选择 wg-client
  4. 点击 OK 保存。
  5. image.png

第四步:配置静态路由(让本地访问远端网段)

由于没有将 0.0.0.0/0 设为全局,你需要告诉 ROS 哪些网段走这个隧道:

  1. 点击左侧菜单 IP -> Routes,点击 +(新增)。
  2. Dst. Address:填入远端的目标网段(例如 192.168.1.0/24)。
  3. Gateway:选择 wg-client 接口(或填入远端 WG 服务端的内网 IP 10.1.105.1)。
  4. 点击 OK 保存。
    image.png

第五步:测试连接

  1. 回到 WireGuard -> Peers 列表,观察 wg-client 这一行:
    • 查看 Last Handshake 是否显示为几秒前(如 00:00:03)。
    • 查看 Rx / Tx 是否有双向流量增加。
  2. 点击左侧 Tools -> Ping,在 Ping To 里输入远端内网机器的 IP 进行测试。

ROS 图表

  1. 打开 Winbox,点击左侧菜单 Tools -> Graphing
  2. 在弹出的窗口中,你会看到三个标签页,建议把它们都配置上
    • 接口流量图(Interface Rules)
      1. 点击 Interface Rules 标签页 -> 点击 +(新增)。
      2. Interface:选择 all(监控所有接口)或单独选择 ether1 / wg1
      3. Allow Address:默认 0.0.0.0/0 保持不变(允许所有 IP 访问图形页面)。
      4. 点击 OK 保存。
    • CPU/内存/磁盘资源图(Resource Rules)
      1. 切换到 Resource Rules 标签页 -> 点击 +(新增)。
      2. Allow Address:默认 0.0.0.0/0 保持不变。
      3. 点击 OK 保存。

http://ROS_IP/graphs/
image.png

相关文章

OpenWrt 旁路由及OpenClash设置
openwrt frp配置
ESXI 8.0 OpenWrt X86 虚拟机部署
openwrt usb热插拔 u盘或移动硬盘热插自动挂载
openwrt 移动硬盘开机挂载失效解决

发布评论