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

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

内容简介:新增有变动
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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

网络、群体与市场

网络、群体与市场

大卫·伊斯利(David Esley)、乔恩·克莱因伯格(Jon Kleinberg) / 李晓明、王卫红、杨韫利 / 清华大学出版社 / 2011-10-1 / CNY 69.00

过去十年来,现代社会中复杂的连通性向公众展现出与日俱增的魅力。这种连通性在许多方面都有体现并发挥着强大的作用,包括互联网的快速成长、全球通信的便捷,以及新闻与信息(及传染病与金融危机)以惊人的速度与强度传播的能力。这种现象涉及网络、动机和人们的聚合行为。网络将人们的行为联系起来,使得每个人的决定可能对他人产生微妙的后果。 本书是本科生的入门教材,同时也适合希望进入相关领域的高层次读者。它从交......一起来看看 《网络、群体与市场》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具