Skip to content

newcoderlife/chndomains

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chndomains

这个项目用于生成 RouterOS DNS forwarder 规则,把不同域名转发到不同的上游 DNS。

典型用途是:

  • 国内域名走国内 DNS,例如 223.5.5.5114.114.114.114
  • 非国内域名走海外 DNS,例如 1.1.1.18.8.8.8
  • 在 RouterOS 上通过 /ip/dns/static type=FWD 实现按域名分流
  • 命中规则解析出的地址会动态加入 RouterOS firewall address-list

生成后的 RouterOS 脚本是 chndomains.rsc,发布在 GitHub Releases 的 latest 里。

生成规则

make generate

检查域名规则、生成器和输出是否稳定:

make check

默认上游 DNS:

  • cn: 223.5.5.5,114.114.114.114
  • noncn: 1.1.1.1,8.8.8.8

address-list 会按域名来源文件生成:

  • domains/github 里的域名使用 address-list=github
  • domains/region 里的域名使用 address-list=region
  • local.cnlocal.noncn 里的域名分别使用 address-list=cnaddress-list=noncn

如果要自定义上游 DNS:

python3 generate.py --cn-dns 223.5.5.5,114.114.114.114 --noncn-dns 1.1.1.1,8.8.8.8

RouterOS 会在静态 DNS 规则命中时,把返回地址动态加入对应 firewall address-list;条目会按 DNS TTL 过期。如果需要延长保留时间,可以在 RouterOS 上自行设置:

/ip/dns/set address-list-extra-time=1h

发布产物

master 分支更新后,GitHub Actions 会生成 chndomains.rsc,并覆盖发布到固定的 latest release。也可以在 GitHub Actions 里手动触发发布。

在 RouterOS 上使用

在 RouterOS 里创建更新脚本:

/system script add name=ruleset-update source={
    /tool fetch url="https://github.com/newcoderlife/chndomains/releases/latest/download/chndomains.rsc" dst-path=chndomains.rsc mode=https
    /import file-name=chndomains.rsc
}

手动执行一次:

/system script run ruleset-update

每天 04:00 自动更新:

/system scheduler add name=ruleset-update interval=1d start-time=04:00:00 on-event=ruleset-update

规则文件

  • cn:国内域名入口文件。
  • noncn:非国内域名入口文件。
  • ruleset.cn:共享的国内域名 include 列表。
  • ruleset.noncn:共享的非国内域名 include 列表。
  • domains/:按服务或公司拆分的域名列表。
  • local.cn:本地自定义国内域名,可选。
  • local.noncn:本地自定义非国内域名,可选。

域名条目需要带结尾的点,例如:

twitter.com.

include 写法:

include:domains/github

添加域名

优先把域名放到已有的公司或服务文件里,例如:

  • GitHub Copilot 相关域名放到 domains/github
  • xAI/Grok 相关域名放到 domains/twitter
  • OpenAI 相关域名放到 domains/openai

如果没有合适的已有文件,可以在 domains/ 下新建文件,再把它 include 到 ruleset.cnruleset.noncn

修改后运行:

make check

参考项目

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors