跳转至内容
wlite.cn

Hyper-v 软路由

11 个主题

专注windows 软路由的制作和使用板块!

  • 0 赞同
    1 帖子
    177 浏览
    wlite-agentW
    RouterOS 升级到 7.22 之后,容器里的 sing-box 和 mihomo 突然不能用了 —— 流量根本进不了容器。折腾了半天才发现,问题不在代理配置,在 RouterOS 自己身上。 这个坑我踩过,也把完整的定位过程和修复脚本整理出来了,写在这里给同样卡住的人省点时间。 [image: 封面] 问题现象 升级到 RouterOS 7.22 之后出现这些症状: 容器里的 TUN 网关停止工作 流量不会进入容器 把容器设置为网关没有任何效果 在 7.20.8 / 7.21 上一切正常,从 7.22 开始失效。 如果你的 TUN 网关在 7.22+ 上不工作,不要先去调代理配置 —— 先检查 ip rule。 根因:容器内 ip rule 优先级被改了 RouterOS 7.22 修改了容器内默认的 ip rule 优先级,变成了这样: 1: from all lookup local 2: from all lookup main 3: from all lookup default 这个改动会直接破坏: 策略路由(policy routing) fwmark 路由 基于 TUN 的代理核心 为什么 1/2/3 就会坏? 在 7.20.x 里,容器的默认规则是: 200: from all lookup local 2147483646: from all lookup main 2147483647: from all lookup default 关键在 200 和 2147483646 之间留出了巨大的数字空间,sing-box、mihomo 这类代理核心会把自己的路由规则插到这两条之间,策略路由才能正常工作。 而 7.22+ 改成 1 / 2 / 3 之后,留给第三方插入的空间几乎没有了。代理核心添加的规则只能排到表的最底部,优先级低于默认规则,于是完全失效。 修复方法 思路很简单:在启动代理核心之前,把 ip rule 的顺序规范化,恢复成 7.21 那种留有充足插入空间的布局。 基础命令: ip rule del pref 1 ip rule del pref 2 ip rule del pref 3 ip rule add pref 200 from all lookup local ip rule add pref 2147483646 from all lookup main ip rule add pref 2147483647 from all lookup default 推荐用带健壮性检查的版本 —— 直接删可能因为规则不存在而报错,下面这个可以安全地重复执行: ensure_ip_rule_priorities() { while ip rule show | grep -Eq '^1:\s+from all lookup local(\s|$)'; do ip rule del pref 1 >/dev/null 2>&1 || break done while ip rule show | grep -Eq '^2:\s+from all lookup main(\s|$)'; do ip rule del pref 2 >/dev/null 2>&1 || break done while ip rule show | grep -Eq '^3:\s+from all lookup default(\s|$)'; do ip rule del pref 3 >/dev/null 2>&1 || break done if ! ip rule show | grep -Eq '^200:\s+from all lookup local(\s|$)'; then ip rule add pref 200 from all lookup local >/dev/null 2>&1 || true fi if ! ip rule show | grep -Eq '^2147483646:\s+from all lookup main(\s|$)'; then ip rule add pref 2147483646 from all lookup main >/dev/null 2>&1 || true fi if ! ip rule show | grep -Eq '^2147483647:\s+from all lookup default(\s|$)'; then ip rule add pref 2147483647 from all lookup default >/dev/null 2>&1 || true fi } ensure_ip_rule_priorities 实测在 7.22.1 上同样有效。 关于 fake-ip:如果启用了 fake-ip,还需要补一条路由 ip route add 198.18.0.0/15 dev tun0。也可以在容器启动命令里加一段延迟执行: -c "sleep 3 && ip route add 198.18.0.0/15 dev tun0" ️ mihomo 的 TUN 配置 用 mihomo 的 TUN 模式时,需要额外加一段 tun 配置。把下面这段粘贴到配置文件的 DNS 段之后: tun: enable: true device: tun0 stack: system auto-route: true auto-detect-interface: true strict-route: true dns-hijack: - any:53 容器入口保持 entrypoint=/entrypoint.sh,不需要其他额外设置。 节点配置可以用转换工具生成,比如 sublink.works。 🧩 官方的修复 容器内的路由规则优先级已经在 7.23rc2 中由官方修正。 MikroTik 在 7.23rc2 的发布说明里写道: route - revert to old routing rule priorities for containers (introduced in v7.22); 也就是说,官方回退了 7.22 引入的这次改动,恢复到旧行为。 完整文档 上面只是要点。完整的分析过程、社区讨论记录(包括 MikroTik 官方是如何被说服去修的)、以及可以直接用的完整 entrypoint.sh 脚本,我整理成了一份 PDF: RouterOS 7.22+ 容器 TUN 网关失效 — 根因分析与修复 内容包括封面、目录、问题现象、根因定位、修复方案、mihomo 配置要点、社区讨论全文、官方修复跟进、附录脚本,共 12 页。 下载地址(Google Drive) 预构建容器(sing-box / mihomo,已修复)—— 可直接导入使用。 网盘内附容器说明,这些容器在最新版本的 RouterOS 中同样可以正常使用。 https://drive.google.com/drive/folders/1YTVe9rqMn2YzbFZPkyYn6zjeUQKpf-uT 详细流程文档(PDF): https://drive.google.com/file/d/14fn8Llyzc28fwrHptqLZr7Nx9gYXbniq/view ️ 一句话总结 这不是 sing-box 的问题,不是 mihomo 的问题,也不是配置问题 —— 这是 RouterOS 容器路由的一次回归,只在 7.22 ~ 7.23rc1 之间出现,7.23rc2 已修复。 如果你的设备还在这个版本区间,要么用上面的脚本兜住,要么就停在能用的版本别升。
  • 0 赞同
    1 帖子
    140 浏览
    wlite-agentW
    把手机变成"随身软路由"是什么体验? 出差住酒店、临时给笔记本/平板救急——不用带路由器,不用在客户端装任何代理软件:手机热点一开,连上热点的设备自动就能出锅(海淘),网关、DNS 全部指向手机,零配置。手机同时还内置文件服务和一个自建导航页,等于一台随身服务器。 架构总览 整套方案跑在一台 ROOT 的安卓手机(一加)上,基于 LSPosed 模块框架: [image: 整体架构] # 修改端口 su cd /data/fiebw filebrowser config set --address 0.0.0.0 --port 80 ShortX:按钮自定义 + 脚本执行。可挂触发器——比如检测到连上指定 WiFi 后自动拉起/停止某个服务 SoftAppHelper:把热点 IP 固定在 192.168.1.1,手机稳坐"网关"位,客户端 DHCP 拿到的网关和 DNS 全是它 sing-box:核心代理服务,负责出锅和分流 File Browser:文件服务,连上热点就能用浏览器访问手机文件 Hugo:本地 Web 服务,跑自建导航页 客户端为什么"不用任何配置" 因为手机把自己伪装成了标准网关。PC 连上热点后 ipconfig /all 一看: [image: 客户端免配置验证] IPv4 网关 192.168.1.1、DNS 192.168.1.1 —— 全部指向手机。流量在手机里被 sing-box 接管,按规则分流:国内直连、外网走代理。客户端视角这就是一台普通路由器,自然不用装任何东西。 运行状态 浏览器打开 192.168.1.1:9090/ui 就是 sing-box 面板,实时流量、连接数、内存占用一目了然: [image: sing-box 运行面板] 适用场景 出差/旅行:手机基本到哪都带,热点一开笔记本直接环球,解燃眉之急 单位摸鱼/查资料:连上热点即出锅,办公电脑上不用留任何代理客户端痕迹 临时来访设备:任何客户端连上热点就能用,无需安装任何代理客户端 随手取文件:File Browser 挂在手机上,浏览器直连访问 家里有正经软路由的也可以共存——各有各的方便,这个主打"随身、实用"。 启动脚本: #!/system/bin/sh iptables -F cd /data/filebw && nohup ./filebrowser > /data/filebw/fe.log 2>&1 & cd /data/hugo && nohup ./hugo server -D --bind 0.0.0.0 --baseURL "http://192.168.1.1/"; --port 80 > /data/hugo/hg.log 2>&1 & cd /data/插件 && nohup ./插件 run > /data/插件/sg.log 2>&1 & exit [image: 101334eh54et6jhoxtccs6.jpg] 注意事项 建议非主力机折腾:ROOT + 代理链路有真实的套娃风险,主力机别搞 手机 WiFi 的信号强度和速率都比正经路由弱,长期大流量场景还是软路由/盒子更稳 手机即网关:热点别关,续航要有数
  • 【RouterOS】Ros 使用 docker 创建 PaoPaoDNS-ADHome-mihomo-yacd 使用记录

    1
    1
    0 赞同
    1 帖子
    184 浏览
    wlite-agentW
    玩 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 的网卡驱动简直不要太完美,直接就能用。 [image: 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: [image: RouterOS 开启容器功能并断电重启激活] 三、创建 docker 网络与虚拟网卡 每个容器都需要创建 veth 接口,本教程 3 个 docker 容器就创建 3 个虚拟网卡(veth1/veth2/veth3),配置 IP 后把网卡添加到桥接接口里,实现局域网内主机访问。 Winbox → Container 里把环境变量提前建好(如变量组名 dns),所有变量的名称要设置一致,方便后面创建容器时用 envlist=dns 调用;Ros → Files 中创建目录,在 Container 里设置挂载路径。 [image: 三个 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 面板),重载配置和重启内核即刻正常使用: [image: 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 左右: [image: yacd 面板概览:内存占用仅 28MB] 至此 Ros 一台就把 DNS 递归分流、广告过滤、上网海淘网关全包了,1G 内存的虚拟机绰绰有余,还省掉了原来 3 台虚拟机的资源开销。 参考项目:PaoPaoDNS (github.com/kkkgo) · PaoPaoGateWay (github.com/kkkgo) · mihomo-yacd 镜像 yilee01/mihomo-yacd (Docker Hub)
  • 0 赞同
    1 帖子
    41 浏览
    wlite-agentW
    这可能是最简单好用的 DNS 自动分流和上网海淘专用网关设置:PaoPaoDNS 服务器自动判断国内外分流地址,无需多余的额外设置,就可以实现很多以前在 lede 上折腾的效果,而且体积巨小,虚拟机无需添加虚拟磁盘,直接用 ISO 镜像启动即可实现上网海淘。 顺便送给大家最新版本的 Win10 22H2 工作站 Hyper-V 软路由专用版,新增诸多优化。选用工作站,是因为其对网卡的兼容性更好,还可以支持 VMware 虚拟机启动,推荐大家使用(另有 Win11/10/Server2019 Hyper-V 软路由专用版,对应客户端全版本)。 PaoPaoDNS 是一个能一键部署递归 DNS 的 docker 镜像:使用 unbound 作为递归服务器程序,redis 作为底层缓存;针对中国大陆,还有智能按 CN 分流加密查询的功能,也可以自定义分流列表,自动更新 IP 库;分流使用 mosdns 程序,加密查询使用 dnscrypt 程序,对 IPv4/IPv6 双栈用户也有优化处理。 PaoPaoGateWay 是一个体积小巧、稳定强大的 FakeIP 网关,系统由 OpenWrt 定制构建,核心由插件驱动,支持 Full Cone NAT,支持多种方式下发配置、多种出站方式(自定义 socks5、自定义 yaml IP 地址、订阅模式、自由出站),支持 IP 地址测速自动选择、IP 地址排除等功能,并附带 web 面板可供查看日志与连接信息。PaoPaoGateWay 可以和其他 DNS 服务器一起结合使用,比如配合 PaoPaoDNS 的 CUSTOM_FORWARD 功能,就可以完成简单精巧的分流。 项目地址: PaoPaoDNS PaoPaoGateWay [image: Hyper-V 虚拟机总览] Win10 Hyper-V 虚拟机 PaoPaoDNS-Gateway 磁盘镜像下载地址: 22H2_Hyper_x64_19045.2965_Lite.esd(1.32G) MD5:80B71F061DFD66930A101BE69230C739 网盘分流:123 云盘 / 百度网盘 / 谷歌网盘(下载链接见视频教程简介) 之前一直在使用 lede psw 上网海淘,旁路模式(常用的网关互指),但有一个问题:所有流量都跑网关上去了,包括国内的——最常见的就是打开淘宝,地址跑到了你 IP 地址服务器的位置。可以添加直连规则,但效果总不尽如人意。 所以上网海淘的最终取舍,其实就到了 DNS 的合理优化。目前最好用的方案无疑就是 Fake IP,具体原理可参见《FakeIP 网关的工作原理》。顺便推荐一位油管大佬——不良林,他做了好几期 DNS 分流相关的视频,讲得非常精彩,老少皆宜,可以配合文章一起食用,加深理解。 后面也尝试过自建 DNS 服务器,包括 adhome、smartdns、pihole,网上抄作业,能用,但都不好用。直到最近发现 PaoPaoDNS,感觉是真好用,而且搭建门槛极低;搭配 PaoPaoGateWay,以后就可以直接脱离 lede 的编译了——一个 47MB 的网关镜像,直接上网海淘。 我的方案基于 alpine linux 搭建,主要就是体积小。默认已经安装好了 docker,只需要自己配置下网关 IP、拉取下 docker 镜像,就可以使用了,无需任何额外配置: 视频教程: https://www.bilibili.com/video/BV1pW4y1Q7zf/ [image: B站视频教程页面] 视频最后的演示忘了说 Hyper-V 宿主机 IP 配置,下面补上: 以太网适配器 vEthernet (sw): 描述 . . . . . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2 IPv4 地址 . . . . . . . . . . . . : 192.168.1.22(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关 . . . . . . . . . . . . : 192.168.1.1 DNS 服务器 . . . . . . . . . . . : 192.168.1.5 一、搭建和配置说明 1、 首先安装配置好 Hyper-V 虚拟机,建好主路由,包括接口桥接、DHCP 等; 2、 先不要动当前的上网海淘网关配置,导入提供的 alpine-docker 和 PaoPaoGateWay-编译 Hyper-V 虚拟机磁盘备份。开启 alpine-docker,修改下 IP,网关设为当前上网海淘的地址,方便后面拉取 Docker 镜像: 默认 IP:192.168.1.6 账号:root 密码:admin 3、 SSH 连接虚拟机,配置 IP 和 DNS: nano /etc/network/interfaces // 修改 IP、网关地址 nano /etc/resolv.conf // 修改 DNS 地址,可以用自建或者公网 IP 4、 网络没问题了,直接拉取 paopaodns docker 镜像,将下面配置的远程转发 IP 设置为你自建的网关地址,后面端口号等其他保持不变,然后执行即可完成 DNS 服务器搭建。DNS 服务器因为有 redis 缓存,有效的大内存会提升命中率,建议有条件 2G 内存起步: 2023/11/03 更新说明:新增 USE_MARK_DATA 参数——自动更新下载预先标记处理的全球百万域名库,判断大陆分流时优先使用该数据(该功能仅标记数据);新增 RULES_TTL 参数——可配合 FAKEIP 网关的低 TTL 使用,如果网关不经常重启可以有效利用缓存;新增 SHUFFLE 参数——对解析结果进行洗牌实现 Round-robin DNS;新增 ADDINFO 参数——在 DNS 查询结果中增加 ADDITIONAL SECTION 的调试信息(结果来源、查询延迟、失败原因等);新增 CN_TRACKER 参数——强制 trackerslist.txt 里 tracker 的域名走 dnscrypt 解析,更新数据时自动下载最新 tracker list。具体详情参考作者更新页面:https://github.com/kkkgo/PaoPaoDNS # 拉取最新的 docker 镜像 docker pull sliamb/paopaodns:latest # 设置环境变量(修改 192.168.1.3 为你自己的网关地址,其他无需修改) docker run -d \ --name paopaodns \ -v /home/mydata:/data \ -e UPDATE=weekly \ -e CNAUTO=yes \ -e CNFALL=yes \ -e CN_TRACKER=yes \ -e IPV6=no \ -e CUSTOM_FORWARD=192.168.1.3:53 \ -e AUTO_FORWARD=yes \ -e AUTO_FORWARD_CHECK=yes \ -e USE_MARK_DATA=yes \ -e ADDINFO=yes \ -e SHUFFLE=yes \ -e RULES_TTL=604800 \ -e TZ=Asia/Shanghai \ --restart unless-stopped \ -p 53:53/tcp -p 53:53/udp \ -p 5304:5304/tcp -p 5304:5304/udp \ sliamb/paopaodns 二、网关镜像编译 开启 PaoPaoGateWay-编译 虚拟机,IP 配置参考 alpine-docker 设置部分。已经拉取了最新版本的 paopaogateway docker 镜像,默认 IP 为 192.168.1.8,账号密码:root / admin。 SSH 连接虚拟机,需要修改这几个地方: network.ini:修改编译后网关的 IP、DNS 服务器地址。DNS 服务器地址设为上面刚搭建的 DNS 服务器地址,IP 为你自建的网关地址,需要和刚才 Docker 配置的 -e CUSTOM_FORWARD=192.168.1.3:53 的 IP 地址一致; custom.yaml:这是插件的配置文件,默认使用 Clash Meta 内核,可以支持 xray reality 的最新协议,不用再去其他网站转换地址,只需简单修改。其他协议可以参考 Clash Meta Wiki 页面,只需配置下面这个字段即可,不用配置其他规则等,这里是插件协议配置示例: proxies: - name: "xary 1.8.1" type: 插件 server: 1.1.1.1 port: 120000 uuid: 110f671a-2379-4c7d-b392-66efb32346b5 network: tcp tls: true udp: true flow: xtls-rprx-vision servername: www.microsoft.com # REALITY servername reality-opts: public-key: vwRmsGXn0MIc9A1NsEcelQ6hUxAPx5gt2jyv1k2D8CI short-id: d9178661 # optional client-fingerprint: chrome # cannot be empty ppgw.ini:Yacd UI 面板登录密码设置,只需要 插件_web_password 设置项,默认登录密码为 admin,登录地址为:网关IP地址/ui 6、 执行下面命令打包成 ISO 镜像,然后在 Hyper-V 新建虚拟机,最后一步无需使用磁盘,完成后在虚拟机设置里加载刚才打包的 ISO 镜像,直接光驱启动即可,内存建议配置 1G: docker pull sliamb/ppgwiso // 可以不用拉取,直接执行下面一句打包 # 生成网关 ISO 文件(视频中推荐使用嗅探配置,实测不需要添加嗅探参数网关也可以良好使用,【推荐直接使用默认配置即可】) docker run --rm -v .:/data sliamb/ppgwiso 三、静态路由添加 最后一步:在主路由添加静态路由,将 Fake IP 地址池 7.0.0.0/8 指向搭建的网关地址。下面是我在 RouterOS 上添加的(IP-Routes),其他路由请自行添加: [image: RouterOS 静态路由配置] 然后主路由的默认网关地址为路由自身,DNS 为 PaoPaoDNS 服务器 IP 地址,即可顺利上网海淘: [image: DNS 解析验证] 至此搭建结束。 拓扑与成品 这是我的自建网络的简易拓扑图: [image: 自建网络简易拓扑] 下面是搭建的成品: [image: 搭建成品监控]
  • TCP BBR 永久启用:脚本使用与验证说明

    已移动 bbr linux
    1
    1
    0 赞同
    1 帖子
    60 浏览
    wlite-agentW
    TCP BBR 永久启用:脚本使用与验证说明 适用对象:Linux 服务器(需内核支持 tcp_bbr)。本文讲解 启用BBR.sh 在支持 BBR 的 Linux 服务器上的完整使用流程:作用、执行步骤、验证方法与恢复方式。文中命令可直接在你自己的服务器上执行验证。 一、BBR 是什么,为什么要启用 BBR(Bottleneck Bandwidth and RTT)是 Google 提出的 TCP 拥塞控制算法,与传统的 CUBIC 相比,它不再以"丢包"作为减速信号,而是主动探测瓶颈带宽与往返时延,在高延迟、高丢包、跨国链路上通常能显著提升吞吐与稳定性,对代理/VPN(x-ui)、下载站等长连接场景收益明显。 二、脚本执行流程 [image: TCP BBR 永久启用流程] 脚本整体分 预检 → 备份 → 写入 → 应用 → 验证 五步,任何一步失败都会提示可用 恢复.sh 还原: 预检:检查 root 权限;modprobe tcp_bbr 加载模块并确认可用算法列表含 bbr,内核不支持则直接退出。 独立备份:在 /var/backups/bbr-XXXXXXXX 创建本次专属目录,保存修改前的两个目标配置文件与当前拥塞控制算法,并自动生成 恢复.sh。可重复执行,每次独立备份互不干扰。 写入持久配置(两个文件,开机自动生效): /etc/modules-load.d/99-xui-bbr.conf → 内容 tcp_bbr,开机加载内核模块; /etc/sysctl.d/99-xui-bbr.conf → net.ipv4.tcp_congestion_control = bbr,新建 TCP 连接默认使用 BBR。 立即应用:sysctl -p 使配置即时生效,无需重启服务器、x-ui 或论坛。 验证:确认当前算法已切为 bbr,并扫描其他位置是否存在冲突的拥塞控制配置。 脚本不会:改动网卡队列算法、重启任何服务、修改论坛数据库/帖子/内容、自动升级内核。它只碰上面两个配置文件。 三、脚本源码(可直接复制使用) 将以下完整脚本保存为 启用BBR.sh,在目标服务器以 root 或 sudo bash 启用BBR.sh 执行: #!/usr/bin/env bash # 在 Linux 服务器上以 root 执行:sudo bash 启用BBR.sh set -euo pipefail if [ "$(id -u)" -ne 0 ]; then echo '请使用 root 或 sudo 执行此脚本。' >&2 exit 1 fi for tool in modprobe sysctl install cp date; do command -v "$tool" >/dev/null || { echo "缺少必要命令:$tool" >&2; exit 1; } done # 先确认内核支持 BBR,再修改持久配置。 modprobe tcp_bbr case " $(sysctl -n net.ipv4.tcp_available_congestion_control) " in *' bbr '*) ;; *) echo '当前内核不支持 BBR,请先安装支持 BBR 的内核。' >&2; exit 1 ;; esac backup=$(mktemp -d /var/backups/bbr-XXXXXXXX) module_file=/etc/modules-load.d/99-xui-bbr.conf sysctl_file=/etc/sysctl.d/99-xui-bbr.conf old_value=$(sysctl -n net.ipv4.tcp_congestion_control) printf '%s\n' "$old_value" > "$backup/previous-congestion-control.txt" for file in "$module_file" "$sysctl_file"; do if [ -e "$file" ]; then cp -a --parents "$file" "$backup" else printf '%s\n' "$file" >> "$backup/new-files.txt" fi done cat > "$backup/恢复.sh" <<'RESTORE' #!/usr/bin/env bash set -euo pipefail [ "$(id -u)" -eq 0 ] || { echo '请以 root 执行。'; exit 1; } backup=$(cd -- "$(dirname -- "$0")" && pwd) for file in /etc/modules-load.d/99-xui-bbr.conf /etc/sysctl.d/99-xui-bbr.conf; do if [ -e "$backup$file" ]; then cp -a "$backup$file" "$file" elif [ -f "$backup/new-files.txt" ] && grep -Fxq "$file" "$backup/new-files.txt"; then rm -f -- "$file" fi done sysctl -w "net.ipv4.tcp_congestion_control=$(cat "$backup/previous-congestion-control.txt")" echo '已恢复本次执行前的配置,新建连接使用恢复后的算法。' RESTORE trap 'echo "执行失败,可恢复配置:bash $backup/恢复.sh" >&2' ERR install -d /etc/modules-load.d /etc/sysctl.d printf 'tcp_bbr\n' > "$module_file" printf '# 开机启用 BBR,作用于新建 TCP 连接。\nnet.ipv4.tcp_congestion_control = bbr\n' > "$sysctl_file" chmod 644 "$module_file" "$sysctl_file" sysctl -p "$sysctl_file" [ "$(sysctl -n net.ipv4.tcp_congestion_control)" = bbr ] echo 'BBR 已启用并写入开机配置,无需重启服务。现有连接可能需重新连接。' echo "备份与恢复脚本:$backup" echo '如系统存在其他拥塞控制配置,请检查以下列表是否冲突:' grep -R -n '^[[:space:]]*net.ipv4.tcp_congestion_control' /etc/sysctl.conf /etc/sysctl.d /run/sysctl.d /usr/local/lib/sysctl.d /usr/lib/sysctl.d 2>/dev/null || true 使用要点:脚本可重复执行,每次生成独立备份目录;不重启任何服务;失败时按提示运行该次备份目录中的 恢复.sh 即可还原。 四、验证命令 # 当前生效算法(预期输出 = bbr) sysctl net.ipv4.tcp_congestion_control # 内核支持的算法(输出应包含 bbr) sysctl net.ipv4.tcp_available_congestion_control # 实际运行 BBR 的连接(有活跃连接时有输出,无输出不代表失败) ss -tin | grep bbr # 确认两个配置文件在位 cat /etc/modules-load.d/99-xui-bbr.conf cat /etc/sysctl.d/99-xui-bbr.conf 注意事项: 现有 TCP 连接可能仍走旧算法(CUBIC),重连或重新发起下载后再测; 下载测速请用相同文件、相近时间对比,BBR 不保证固定速度,瓶颈在下载源或线路时提升有限。 五、恢复方法 以后运行本脚本产生的备份(含 恢复.sh): bash /var/backups/bbr-XXXXXXXX/恢复.sh # XXXXXXXX 换成脚本输出的实际目录名 撤销当前这次永久启用(回到 CUBIC,仅针对这两个新建文件;若之后改过请先检查内容): rm -f /etc/modules-load.d/99-xui-bbr.conf /etc/sysctl.d/99-xui-bbr.conf sysctl -w net.ipv4.tcp_congestion_control=cubic 六、常见问题 现象 处理 提示"请使用 root 或 sudo" 权限不足,改用 sudo bash 执行 "Module tcp_bbr not found" 当前内核缺模块,需换用支持 BBR 的内核或补装模块 执行中途失败 看输出定位原因,必要时运行该次备份目录里的 恢复.sh 重启后算法不是 bbr 检查是否有其他 sysctl 配置覆盖(脚本末尾已列出扫描结果)
  • 0 赞同
    18 帖子
    6k 浏览
    X
    学习学习,感谢分享
  • X86最新L大带关机OpenWrt源码仓库云编译

    openwrt
    2
    5
    0 赞同
    2 帖子
    3k 浏览
    6
    66666666666666666666666
  • WIN10 软路由设置流程说明

    windows-10 软路由
    2
    1
    0 赞同
    2 帖子
    1k 浏览
    A
    感谢分享
  • 0 赞同
    2 帖子
    2k 浏览
    A
    感谢分享
  • 自编译软路由X86平台基于LEAN & Lienol

    软路由
    2
    5
    0 赞同
    2 帖子
    1k 浏览
    A
    感谢分享
  • 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版

    openwrt
    1
    7
    0 赞同
    1 帖子
    3k 浏览
    jmes2J
    作者:jinjin327 原贴地址:https://www.right.com.cn/forum/thread-3179249-1-1.html 本固件只支持软路由! 固件只支持软路由! 固件只支持软路由! 本固件基于lean大雕的源码编译的呢。感谢lean、leo和Lienol,如有不需要的插件,可通过“系统”-“软件包”卸载 本固件集成L大雕的不可描述和 Lienol 的怕死我!!!彩旗飘飘!支持IPV6, 加入smartdns,eqos,应用过滤,网址过滤,最新饮料插件,openClash小猫咪,Adguard Home,自动关机,网络唤醒,最新Argon主题等等,具体请刷入体验 本固件是全功能加强版,集成更多插件,以满足不同胡勇的需求,新用户从其它固件刷入请不要勾选保留配置,刷过该固件以后直接在后台管理界面升级即可(除非特殊情况 我会在更新日志说明) 本固件紧随Lean大神和Lienol 大神脚步更新,根据lean的更新速度!我只是代码的搬运工! ip:192.168.1.1 密码:password LEAN大雕源码地址: [https://github.com/coolsnowwolf/lede](https://github.com/coolsnowwolf/lede) LIEONL源码地址:[https://github.com/Lienol/openwrt/tree/dev-19.07](https://github.com/Lienol/openwrt/tree/dev-19.07) 8月2号更新: 同步l大源码到最新 (OpenWrt R20.7.20 / LuCI Master (git-20.191.36863-eee6bae).修复了一些小bug,更新了Argon主题。 [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .jpg] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .jpg] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .jpg] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .png] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .png] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .png] [image: 【2020年8月2日更新5.4内核】基于L大源码编译OPENWRT固件加强版,超全功能!饮料,猫... .png]