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 更新