初入树莓派5----docker运行overture

栏目: 编程工具 · 发布时间: 6年前

内容简介:新增有变动
19.01.30 初始化

导语

  • 升级overture时候,才发现配置文件有更改,且支持了dot,索性扔进 docker 里面,方便维护.

需求

  • 国内/国外分流,国内网站交给国内DNS,国外的交给墙外无污染DNS.
  • 对CDN友好,访问百度,我在广州,你DNS分配个青岛的地址要闹那样.
  • 带有DNS缓存,加速解析.
  • 跨平台(小),出门不能一直带着路由器啊.

新增

  • docker运行,自动更新分流list文件.

方案

  • 国内/国外分流
  • 分流可使用ChinaDNS.

    • 无污染DNS
      • 墙外DNS,但udp-53端口,基本被劫持.需要特别方式规避.
        • 非标准DNS端口 例如 opendns的udp-5353端口 tcp-443端口
        • DNS over HTTPS ,支持最好的是google-dns及 Cloudflare-dns,其中google-dns比较麻烦,还需要自行寻找可用的google ip地址.
        • DNS over TLS ,与上一个类似.
        • DNSCrypt ,支持此项的公共DNS很多,与此被干扰的也比较厉害.
      • ss/ssr-vpn-v2ray 等代理解析dns.
      • 一直可用的中科大DNS 北方还好.
  • 对CDN友好选择支持EDNS的上游DNS,国内主流都支持了,除了114.

  • 带有DNS缓存,这个用的较多的 dnsmasq ,当作下游DNS.
  • 跨平台(大雾),一般都在路由器搞搞.

最终定型

有变动

  • dnsmasq(可选) + overture + 上游加密DNS(可选)
  • overture DNS分流净化器,go语言编写,解决chinadns不稳定而编写.

    • 得益于 go 的跨平台能力,基本通吃.
    • 已经支持DNS缓存
    • 支持tcp / udp DNS查询
    • 比chinadns更加稳定.
  • 实际上如果只需要一个纯净DNS,只使用 overture 就足够了.

  • 当需要广告过滤时,添加dnsmasq.
  • overture 可使用 非标准dns端口查询dns,解决上游DNS污染问题.非标准端口被大量干扰或dns查询全程保密,才需要使用DNSCrypt DNS over HTTPS等额外措施.
  • overture 已经支持 dns over tls,无需上游加密DNS

实施

  • 最新的 releases ,这里以 v1.5-rc3 为例.

配置文件

  • 配置文件

    {
      "BindAddress": ":53",
      "HTTPAddress": ":5555",
      "PrimaryDNS": [
        {
          "Name": "DNSPod",
          "Address": "119.29.29.29:53",
          "Protocol": "udp",
          "SOCKS5Address": "",
          "Timeout": 6,
          "EDNSClientSubnet": {
            "Policy": "disable",
            "ExternalIP": "",
            "NoCookie": true
          }
        }
      ],
      "AlternativeDNS": [
        {
          "Name": "OpenDNS",
          "Address": "208.67.222.222:443",
          "Protocol": "tcp",
          "SOCKS5Address": "",
          "Timeout": 6,
          "EDNSClientSubnet": {
            "Policy": "disable",
            "ExternalIP": "",
            "NoCookie": true
          }
        }
      ],
      "OnlyPrimaryDNS": false,
      "IPv6UseAlternativeDNS": false,
      "IPNetworkFile": {
        "Primary": "./ip_network_primary_sample",
        "Alternative": "./ip_network_alternative_sample"
      },
      "DomainFile": {
        "Primary": "./domain_primary_sample",
        "Alternative": "./domain_alternative_sample"
      },
      "HostsFile": "./hosts_sample",
      "MinimumTTL": 0,
      "CacheSize" : 0,
      "RejectQtype": [255]
    }
    
  • 主要变动

    • XXXXDNS下的 Protocol ,字段除 tcp udp 可选之外,增加了 tcp-tls ,使得无需上游加密DNS,使用 tcp-tls 时,对 Address 字段有要求, "servername:port@serverAddress" , 一般可用 one.one.one.one:853@1.1.1.1 .或者 one.one.one.one:853@1.0.0.1

    • 分流文件,细化为了 IPNetworkFile 和 DomainFile.

      • IPNetworkFile
        • 大致是当 PrimaryDNS 查询的结果在 Primary 字段对应文件时,立刻使用,忽略 AlternativeDNS 查询结果. 这里可以配置为国内ip的list文件.防止国内服务器解析到国外,配合支持 EDNS 的 PrimaryDNS,基本可以做到cdn的就近解析.
        • Alternative字段 可以忽略,作用类似.
      • DomainFile
        • 根据域名直接分流到对应的DNS进行解析. Primary 字段可以是常见国内域名,也可忽略. Alternative 使用处理过的 gfwlist ,即可做到被污染域名走 AlternativeDNS .
      • IPNetworkFile 需要 chinaiplist , DomainFile 需要 gfwlist . gfwlist 需要处理一下格式.

Dockerfile

  • 至此我们确认了Dockerfile的主要内容.
    • 下载并解压最新的 releases ,这里是 overture-linux-amd64.zip ,树莓派3b 需要下载 arm64 版本.
    • 下载 chinaiplist gfwlist 处理格式.
    • 编辑默认的配置文件, 配置 chinalist gfwlist
    • 写入计划任务,自动更新分流文件.
  • 其他

    • 基础镜像使用 apline:3.8 仅 5M大小.
    • apline 使用的是 busybox ,命令与常用的有一些差别.包管理为 apk 命令.
    • 计划任务也与常用的略有不同.
  • Dockerfile

    FROM alpine:3.8
    
    ENV VERSION v1.5-rc3
    
    WORKDIR /srv
    
    RUN set -xe && \
        mkdir overture && \
        cd /srv/overture && \
        apk add --no-cache unzip curl && \
        curl -fsSLO --compressed "https://github.com/shawn1m/  overture/releases/download/${VERSION}/  overture-linux-amd64.zip" && \
        curl https://raw.githubusercontent.com/gfwlist/gfwlist/  master/gfwlist.txt | base64 -d | sort -u | sed '/^$\|@@/  d'| sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/##;   s#https:\/\/##;' | sed '/\*/d; /apple\.com/d; /sina\.cn/  d; /sina\.com\.cn/d; /baidu\.com/d; /qq\.com/d' | sed '/  ^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' | grep '^  [0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##' | sort   -u > gfwlist.txt && \
        curl https://raw.githubusercontent.com/17mon/  china_ip_list/master/china_ip_list.txt >    china_ip_list.txt && \
        unzip -o "overture-linux-amd64.zip" -d /srv/overture  &&   \
        rm -rf "overture-linux-amd64.zip" && \
        apk del unzip && \
        sed -i 's/ip_network_primary_sample/china_ip_list.txt/  g' config.json && \
        sed -i 's/domain_alternative_sample/gfwlist.txt/g'   config.json && \
        echo '#!/bin/sh' > update.sh && \
        echo "curl https://raw.githubusercontent.com/gfwlist/  gfwlist/master/gfwlist.txt | base64 -d | sort -u | sed   '/^$\|@@/d'| sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/  ##; s#https:\/\/##;' | sed '/\*/d; /apple\.com/d; /  sina\.cn/d; /sina\.com\.cn/d; /baidu\.com/d; /qq\.com/  d' | sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' |   grep '^[0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##'   | sort -u > gfwlist.txt" >> update.sh && \
        echo "curl https://raw.githubusercochina_ip_list/master/  china_ip_list.txt >>  china_ip_list.txt" >> update.sh &&   \
      chmod u+x update.sh && \
      echo '0 2 * * *  sh  /srv/overture/update.sh'>>/var/spool/cron/crontabs/root
    
    CMD crond && cd /srv/overture && ./overture-linux-amd64 -l overture.log
    
  • 开箱即用,整体略混乱….配置文件未独立,不太符合docker的最佳实践.修改配置文件需要拷贝 /src/overture 再挂载回容器.

  • 有时间再整理,将配置文件/分流文件独立出来,或者加载到数据卷中. crond 的启动等,全部放入脚本文件.
  • 1.5rc3编译的镜像大致10M左右.

以上所述就是小编给大家介绍的《初入树莓派5----docker运行overture》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beautiful Code

Beautiful Code

Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99

In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具