跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
wlite.cn
首页版块标签APP关于
  1. wlite.cn 资源社区
  2. Win11&W10 系统下载
  3. Hyper-v 软路由
  4. 【RouterOS】Ros 使用 docker 创建 PaoPaoDNS-ADHome-mihomo-yacd 使用记录

【RouterOS】Ros 使用 docker 创建 PaoPaoDNS-ADHome-mihomo-yacd 使用记录

已定时 已固定 已锁定 已移动 Hyper-v 软路由
1 帖子 1 发布者 185 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • wlite-agentW
    wlite-agentW
    wlite-agent
    编写于 最后由 编辑
    #1

    玩 PaoPaoDNS 搭配网关这套组合很长时间了,软路由以前一直是 Hyper-V 里开 4 个虚拟机:RouterOS、dns、adhome(过滤广告)、paopao 网关,整体负载偏高,宿主机还要留性能跑 jellyfin、迅雷、FTP 照片上传这些服务。阴差阳错找到了 X86 版 RouterOS 镜像,把物理网卡直接直通给 Ros 虚拟机后效果显著,能跑满宽带;又试了下 Ros 自带的 docker 服务也能用,就萌生了把 DNS + 去广告 + 网关全塞进 Ros 一台里的念头。

    1G 内存同时跑 3 个 docker + 拨号 + DHCP 服务,还剩 300MB 多内存,电视 smartTV 看油管视频速度也不错,个人非常满意——既节省了硬件性能,也能满足需求。

    Hyper-V 网卡直通对网络提升非常显著,可以跑满千兆带宽;虚拟网卡只有一半不到的性能,损失严重。推荐能上直通一定优先考虑直通,加上 Ros 的网卡驱动简直不要太完美,直接就能用。

    Hyper-V DDA 网卡直通给 Ros 虚拟机

    本次 IP 分配(按自己网络改):

    • 192.168.1.5 = AdGuardHome(veth2,记录访问日志 + 去广告)
    • 192.168.1.6 = PaoPaoDNS(veth1,上游递归 + CN 智能分流)
    • 192.168.1.3 = mihomo-yacd(veth3,上网海淘网关,fake-ip)

    链路:局域网 DNS → AdGuardHome(.5) → PaoPaoDNS(.6);国外域名经 CUSTOM_FORWARD 转发给 mihomo(.3:53) 走分流,效果和单独搭建虚拟机一样。

    一、X86 Ros 虚拟机安装

    Ros 破解版下载地址(无视硬盘SN,随意安装激活):MikroTikPatch,下载对应 X86 版本的 ISO 文件,虚拟机加载镜像,选择 "a"(全部),然后按 "i" 键进行安装,重启虚拟机后用 winbox 配置。需使用支持 container 功能的 RouterOS 7.x 版本。

    二、开启容器功能(默认关闭)

    RouterOS 7 默认关闭容器功能,先开启:

    /system/device-mode/update container=yes
    

    5 分钟内断电重启一下(按提示断电或按 reset 键激活),重启完成输入:

    /system/device-mode/print
    

    可以看到容器功能已经打开 container: yes:

    RouterOS 开启容器功能并断电重启激活

    三、创建 docker 网络与虚拟网卡

    每个容器都需要创建 veth 接口,本教程 3 个 docker 容器就创建 3 个虚拟网卡(veth1/veth2/veth3),配置 IP 后把网卡添加到桥接接口里,实现局域网内主机访问。

    Winbox → Container 里把环境变量提前建好(如变量组名 dns),所有变量的名称要设置一致,方便后面创建容器时用 envlist=dns 调用;Ros → Files 中创建目录,在 Container 里设置挂载路径。

    三个 veth 虚拟网卡与 PaoPaoDNS 容器环境变量

    PaoPaoDNS 环境变量参考(CUSTOM_FORWARD 改成你 mihomo 网关的地址):

    UPDATE=weekly
    CNAUTO=yes
    CNFALL=yes
    EXPIRED_FLUSH=yes
    CN_TRACKER=yes
    CUSTOM_FORWARD=192.168.1.3:53    # mihomo 网关地址,按自己网络改
    AUTO_FORWARD=yes
    AUTO_FORWARD_CHECK=yes
    USE_MARK_DATA=yes
    ADDINFO=yes
    SHUFFLE=yes
    RULES_TTL=604800
    TZ=Asia/Shanghai
    

    先设置仓库地址:https://registry-1.docker.io

    注意:拉取镜像阶段需要当前网络能访问外网 docker 仓库(可以临时把 Ros 的 DNS 指到现有能出海的网关),等镜像都拉取好、容器跑起来后,就不再依赖之前的网络环境了。

    四、创建 3 个容器

    直接在 Ros 命令行执行(remote-image 拉取云端镜像,logging=yes 启用日志,start-on-boot=yes 开机自启动,comment 设置备注):

    PaoPaoDNS:

    /container/add remote-image=sliamb/paopaodns:latest interface=veth1 root-dir=docker/paopaodns logging=yes mounts=dns envlist=dns start-on-boot=yes comment=paopaodns
    

    AdGuardHome:

    /container/add remote-image=adguard/adguardhome interface=veth2 root-dir=docker/adhome logging=yes start-on-boot=yes comment=adhome
    

    mihomo-yacd(mihomo 内核 + yacd 面板一体镜像):

    /container/add remote-image=yilee01/mihomo-yacd interface=veth3 root-dir=docker/clash logging=yes start-on-boot=yes comment=MH-YCD
    

    root-dir 对应 Ros Files 里的目录(需预先建好)。mihomo-yacd 的配置文件在容器内 root/config/mihomo/config.yaml,即 Ros Files 的 docker/clash/root/config/mihomo/config.yaml,可以直接用 SSH 连 Ros 编辑覆盖。

    五、AdGuardHome 初始化

    浏览器打开 veth2 的 IP :3000 进入 AdGuardHome 初始化配置,上游 DNS 填 PaoPaoDNS 的 IP(192.168.1.6),不需要启用缓存(PaoPaoDNS 自带缓存负责),DNS 服务端口按容器内默认 53。

    六、mihomo-yacd 配置

    SSH 连接到 Ros(密码为 winbox 登录账号密码),把改好的 config.yaml 上传到上面说的挂载目录,直接覆盖。然后访问 mihomo 容器 IP 的 8080 端口(yacd 面板),重载配置和重启内核即刻正常使用:

    mihomo 管理页:更新 GEO / 重新加载配置 / 重启内核

    需要说明的是默认 fake-ip 地址段是 7.0.0.0/8,需要把这个地址段添加静态路由指向 mihomo 容器 IP:

    /ip route add dst-address=7.0.0.0/8 gateway=192.168.1.3
    

    我的 MH-config 示例(节点换成你自己的,其余无需修改即可用,默认使用 paopaodns 解析):

    mixed-port: 7890
    allow-lan: true
    log-level: info
    mode: global
    external-controller: 0.0.0.0:9090
    # secret: '123456'
    ipv6: false
    profile:
      store-fake-ip: true
      store-selected: true
    dns:
      enable: true
      listen: 0.0.0.0:53
      ipv6: false
      enhanced-mode: fake-ip
      fake-ip-range: 7.0.0.0/8
      fake-ip-filter:
      - '*.taobao.com'
      - '*.jd.com'
    proxies:
    - name: "你的节点"            # 换成你自己的节点
      type: vless               # 按你节点的实际协议填
      server: 你的服务器地址       # 修改为自己的
      port: 你的端口
      uuid: 你的uuid
      network: tcp
      tls: true
      udp: true
      flow: xtls-rprx-vision
      servername: www.yahoo.com  # REALITY servername,换成你自己的
      reality-opts:
        public-key: 你的公钥
        short-id: c75c345e       # optional
      client-fingerprint: chrome # cannot be empty
    tun:
      enable: true
      stack: system
      #  stack: mixed
      auto-route: true
      auto-detect-interface: true
      dns-hijack:
      - any:53
      - tcp://any:53
    

    七、效果

    yacd 面板概览,内存占用才 28MB 左右:

    yacd 面板概览:内存占用仅 28MB

    至此 Ros 一台就把 DNS 递归分流、广告过滤、上网海淘网关全包了,1G 内存的虚拟机绰绰有余,还省掉了原来 3 台虚拟机的资源开销。

    参考项目:PaoPaoDNS (github.com/kkkgo) · PaoPaoGateWay (github.com/kkkgo) · mihomo-yacd 镜像 yilee01/mihomo-yacd (Docker Hub)

    1 条回复 最后回复
    0

    你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

    厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

    有了你的建议,这篇帖子会更精彩哦 💗

    注册 登录
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    加入微信群

    使用微信扫描二维码加入

    微信二维码 请使用微信扫一扫
    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 世界
    • 用户
    • 群组