暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ESXI:安装DNS教程篇(三)

冷莫trli 2020-06-17
2511

自建基于DNS over HTTPS的无污染本地dns服务器


防污染DNS,去广告,缓存根服务器

内部DOH,内部分流,内部缓存


系统:debian10本地服务器(已经选择ssh服务器)

软件:dnscrypt-proxy,ChinaDNS-ng,unbound,cloudflared,AdGuardHome,supervisord,git

请确保您的本地服务器具有必要的最低要求

    sudo apt-get install wget sudo nano dnsutils bind9-host supervisor git dnscrypt-proxy unbound


    先把Debian10网络设置静态IP

    (本地服务器上是默认没有root,需要sudo su进行设置)

      nano etc/network/interfaces
        iface ens33 inet static
        address *.*.*.*
        netmask 255.255.255.0
        gateway *.*.*.*(本地网关)
        dns-nameservers 127.0.0.1(本地DNS)

        禁用DHCP分配的dns

          nano etc/dhcp/dhclient.conf
            supersede domain-name-servers 127.0.0.1;

            然后重启本地服务器

              sudo reboot


              AdGuardHome安装和使用:

              以AdGuardHome root身份安装(端口:53)

              项目地址 https://github.com/AdguardTeam/AdGuardHome/


              要下载AdGuard Home并解压缩它,请执行以下命令:

                wget https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_amd64.tar.gz
                tar xvf AdGuardHome_linux_amd64.tar.gz

                运行sudo ./AdGuardHome -s install
                以将AdGuard Home安装为系统服务。

                  sudo ./AdGuardHome -s install

                  需要控制服务的其他命令。

                    ./AdGuardHome -s uninstall -卸载AdGuard Home服务。
                    ./AdGuardHome -s start -启动服务。
                    ./AdGuardHome -s stop -停止服务。
                    ./AdGuardHome -s restart -重新启动服务。
                    ./AdGuardHome -s status -显示当前服务状态。


                    cloudflared安装和使用:

                    以cloudflared root身份安装(端口:54)

                    项目地址 https://developers.cloudflare.com/argo-tunnel/downloads/

                      wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb
                      sudo apt-get install ./cloudflared-stable-linux-amd64.deb
                      cloudflared -v

                      继续为cloudflared中的/etc/cloudflared命名配置文件config.yml:

                        sudo mkdir etc/cloudflared/
                        sudo nano etc/cloudflared/config.yml

                        复制以下配置:

                          proxy-dns: true
                          proxy-dns-port: 54
                          proxy-dns-upstream:
                            - https://1dot1dot1dot1.cloudflare-dns.com/dns-query
                          - https://dns.google/dns-query

                          现在通过cloudflared的service命令安装该服务:

                            sudo cloudflared service install

                            启动systemd服务并检查其状态:

                              sudo systemctl start cloudflared
                              sudo systemctl status cloudflared


                              unbound安装和使用:

                              以unbound root身份安装(端口:55)

                              设置为递归DNS服务器解决方案

                              我们将使用unbound主要由NLnet Labs,VeriSign Inc.,Nominet和Kirei开发的安全的开源递归DNS服务器。

                              重要说明:下载当前的根目录提示文件(服务于域“。”-根域的主根服务器列表)。大约每六个月更新一次。请注意,此文件很少更改。

                                wget -O root.hints https://www.internic.net/domain/named.root
                                sudo mv root.hints var/lib/unbound/

                                配置 unbound

                                强调:

                                仅侦听来自本地安装的查询(端口55)

                                侦听UDP和TCP请求

                                验证DNSSEC签名,丢弃BOGUS域

                                应用一些安全和隐私技巧

                                  nano /etc/unbound/unbound.conf.d/unbound.conf
                                    server:
                                    # If no logfile is specified, syslog is used
                                    # logfile: "/var/log/unbound/unbound.log"
                                    verbosity: 0


                                    interface: 127.0.0.1
                                        port: 55
                                    do-ip4: yes
                                    do-udp: yes
                                    do-tcp: yes
                                    # May be set to yes if you have IPv6 connectivity
                                    do-ip6: no
                                    # You want to leave this to no unless you have *native* IPv6. With 6to4 and
                                    # Terredo tunnels your web browser should favor IPv4 for the same reasons
                                    prefer-ip6: no
                                    # Use this only when you downloaded the list of primary root servers!
                                    root-hints: "/var/lib/unbound/root.hints"
                                    # Trust glue only if it is within the server's authority
                                    harden-glue: yes
                                    # Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS
                                    harden-dnssec-stripped: yes
                                    # Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes
                                    # see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details
                                    use-caps-for-id: no
                                    # Reduce EDNS reassembly buffer size.
                                    # Suggested by the unbound man page to reduce fragmentation reassembly problems
                                    edns-buffer-size: 1472
                                    # Perform prefetching of close to expired message cache entries
                                    # This only applies to domains that have been frequently queried
                                    prefetch: yes
                                    # One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1.
                                    num-threads: 1
                                    # Ensure kernel buffer is large enough to not lose messages in traffic spikes
                                        so-rcvbuf: 1m
                                    # Ensure privacy of local IP ranges
                                    private-address: 192.168.0.0/16
                                    private-address: 169.254.0.0/16
                                    private-address: 172.16.0.0/12
                                    private-address: 10.0.0.0/8
                                    private-address: fd00::/8
                                    private-address: fe80::/10

                                    启动本地递归服务器

                                      sudo service unbound start


                                      dnscrypt-proxy安装和使用:

                                      项目地址 https://github.com/dnscrypt/dnscrypt-proxy

                                      示例配置文件为example-dnscrypt-proxy.toml。把这个文件复制一份,重命名为dnscrypt-proxy.toml。以下为配置文件前面部分修改样例。

                                        nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
                                          #这个列表用于指定将要使用的服务器。有ipv6网络时建议优先使用ipv6服务器。
                                          #服务器名称能在 https://dnscrypt.info/public-servers 找到。
                                          #server_names = ['dnswarden-doh2-ipv6','cloudflare-ipv6','gridns-jp-ipv6','jp.tiar.app-doh-ipv6']
                                          server_names = ['dnswarden-doh2','cloudflare','doh-jp-blahdns','jp.tiarap.org']
                                          #程序监听地址。如果要对所有地址服务,可以监听'0.0.0.0:53'或'[::]:53'.
                                          #也可以监听多个地址,例如 listen_addresses = ['127.0.0.1:53', '192.168.1.2:53']
                                          listen_addresses = ['127.0.0.1:53','127.0.0.1:54','127.0.0.1:55']
                                          max_clients = 250
                                          # Use servers reachable over IPv4
                                          ipv4_servers = true
                                          # Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity
                                          ipv6_servers = false
                                          # Use servers implementing the DNSCrypt protocol
                                          dnscrypt_servers = true
                                          # Use servers implementing the DNS-over-HTTPS protocol
                                          doh_servers = true
                                          ## Require servers defined by remote sources to satisfy specific properties
                                          # Server must support DNS security extensions (DNSSEC)
                                          #服务器支持DNSSEC
                                          require_dnssec = true
                                          # Server must not log user queries (declarative)
                                          #服务器不会记录查询
                                          require_nolog = true
                                          # Server must not enforce its own blacklist (for parental control, ads blocking...)
                                          #服务器不会过滤结果
                                          require_nofilter = true
                                          # Server names to avoid even if they match all criteria
                                          #服务器黑名单
                                          disabled_server_names = []

                                          DNSCrypt-proxy 运行命令(管理员身份)

                                            dnscrypt-proxy -service install    #安装dnscrypt-proxy服务
                                            dnscrypt-proxy -service start #启动dnscrypt-proxy服务
                                            dnscrypt-proxy -service stop #停止dnscrypt-proxy服务
                                            dnscrypt-proxy -service restart #重启dnscrypt-proxy服务
                                            dnscrypt-proxy -service uninstall #卸载dnscrypt-proxy服务

                                            该dnscrypt-proxy.socket文件(例如,更改本地端口)

                                            PPA的程序包使用不受支持的systemd套接字来接受连接。为了配置本地端口,dnscrypt-proxy.socket需要编辑dnscrypt-proxy.toml文件而不是标准文件:

                                              nano lib/systemd/system/dnscrypt-proxy.socket
                                                [Unit]
                                                Description=dnscrypt-proxy listening socket
                                                Documentation=https://github.com/DNSCrypt/dnscrypt-proxy/wiki
                                                Before=nss-lookup.target
                                                Wants=nss-lookup.target
                                                Wants=dnscrypt-proxy-resolvconf.service


                                                [Socket]
                                                ListenStream=127.0.0.1:53
                                                ListenDatagram=127.0.0.1:53
                                                NoDelay=true
                                                DeferAcceptSec=1


                                                [Install]
                                                WantedBy=sockets.target


                                                全部配置完重启本地服务器

                                                  sudo reboot


                                                  把unbound,cloudflared的都设置AdGuardHome DNS的上游DNS

                                                  第一次查询可能会很慢,但是随后的查询(以及对同一TLD下的其他域的查询)也应该会很快。测试其是否正常运行!

                                                  AdGuardHome:

                                                    lsof -i:53
                                                    dig baidu.com @127.0.0.1 -p 53

                                                    cloudflared:

                                                      lsof -i:54
                                                      dig baidu.com @127.0.0.1 -p 54

                                                      unbound:

                                                        lsof -i:55
                                                        dig baidu.com @127.0.0.1 -p 55
                                                        文章转载自冷莫trli,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                        评论