发现最近基于 DNS 做访问优化的大企业越来越多。今天从 mirrors.aliyun.com 的 pypi 上更新 package,发现竟然速度只有几十 KB/s,太惊人了。反应了很久才想起来,可能是 DNS 解析的问题。aliyun 对从国外 DNS 服务器回溯的请求,给出的是国外 CDN 节点的 IP。我在国内,去连接国外的 CDN,当然慢了。有了设想,简单证实一下,分别从四个一和 dnspod 解析 mirrors.aliyun.com 这个域名,果然不一样。印证了我的猜想。

不止阿里云,亚麻,azure,这些云服务商,甚至苹果这种做产品的企业,也都有类似基于 DNS 的全球网络优化。

之前用 CoreDNS 做防毒的方案,并没有考虑到这一点,所以在这里补充一下更新后的配置。更新后的配置考虑到几个常用的服务,这几个服务会走国内的 DNS 服务器做解析,以便获取到厂商在国内的服务器 IP,加快访问的速度。

PS:新版的 CoreDNS 新增了对 tls:// 协议的支持。tls:// 应该会默认走 tcp 可靠连接。对外连接的时候,用了 tls:// 协议,实现防毒的目标。

aliyun.com apple.com github.com fastly.net githubusercontent.com binary.com amazonaws.com azk9s.com qcloud.com {
  forward . 223.5.5.5 119.29.29.29 114.114.114.114 223.6.6.6 {
    max_fails 3
    expire 5s
    health_check 3s
    policy sequential
  }
}

company.com {
  hosts /etc/hosts {
    fallthrough
  }

  forward . 192.168.1.103 119.29.29.29 114.114.114.114 {
    max_fails 3
    expire 5s
    health_check 3s
    policy sequential
  }
}

# ---- global conf

.:53 {
  hosts /etc/hosts {
    #127.0.0.1  a.com
    fallthrough
  }

  forward . tls://8.8.8.8 tls://9.9.9.9 tls://1.1.1.1 119.29.29.29 223.5.5.5 {
    force_tcp
    max_fails 3
    expire 10s
    health_check 5s
    policy sequential
    except company.com
  }

  prometheus
  cache 120
  reload 6s
  log
  errors
}

更新配置后要重启 CoreDNS。试验了一下,阿里云下载 pypi,能达到 3-5 MB/s 的速度。瞬间回血。