ROS自动拉取并更新IP列表

优化 IP 列表分流方式使其体验向 BGP 靠拢些许的同时避免 BGP 的高门槛


本文是上一篇的续集RouterOS+旁路由IP地址列表分流

作为一般用户折腾 BGP 或是 OSPF 分流的学习成本是非常高的,所以我们将优化使其具有部分上述两种方式的便利性


自动生成 .rsc 文件

懒人通道 跳过本章节直接从ROS 设置开始

需要用到 GitHub Action 来生成,这里我使用基于 Apnic 的china-ip-list作为上游 IP 列表

Github 部分


Fork 项目

打开chnroute,点击 Fork 将项目添加到自己的 Repositories 中

替换 上游 IP 列表

编辑 ros-dpbr.sh,修改 https://raw...cidr.txt 为自己所需上游列表链接,注意列表只能包含 IP 地址,任何汉字其他数字字母符号将导致错误

配置 Actions

进入 .github/workflows,编辑 main.yml,修改 cron 至自己所需更新频率

点击 Actions 根据提示启用,启用后点击 Build PBR > Run workflow

回到项目首页查看CN.rsc是否生成成功

有时文件时间不刷新并不代表生成失败,仅因上游 IP 未改动


CDN 部分

jsdelivr处将 CN.rsc 的链接粘贴即可得到 CDN 链接


ROS 设置

打开 System > Scheduler

如图设置

/file remove [find name="CN.rsc"]
/tool fetch url="https://raw.githubusercontent.com/GitHubd3b7c/chnroute/main/CN.rsc"
:if ([:len [/file find name=CN.rsc]] > 0) do={
/ip firewall address-list remove [find comment="AS4809"]
/import CN.rsc
}

https://cdn.../CN.rsc 部分根据自己需要修改为自己的 CDN 链接


部分设置解释

  • 可能你会注意到由 GitHub Action 生成的 IP 列表在导入时会将所有导入的 IP 注释为"AS4809",这是便于使用 ROS 脚本识别删除以达到更新的目的
  • 不使用 list 而用 comment 作为判断条件的原因:使用 IP 列表分流时会添加若干自定义 IP,如 VPS 地址、Steam 下载地址、不想走代理的内网机等.更新列表时使用 list 会将上述 IP 一并删除造成使用不便,而 comment 为判断条件很好的避免了这种情况(除非你闲的没事把自行设置的 IP 也备注为"AS4809")
  • 上游 IP 列表为每小时整点更新,即:XX:00:00,所以我将 GitHub Action 设置在 XX:02:00,ROS 设置在 XX:04:00 更新