Gipataas namo ang among DNS-over-HTTPS server

Ang lain-laing mga aspeto sa DNS nga operasyon na balik-balik nga natandog sa tagsulat sa usa ka gidaghanon sa mga artikulo gimantala isip kabahin sa blog. Sa parehas nga oras, ang panguna nga gipasiugda kanunay mao ang pagpauswag sa seguridad niining hinungdanon nga serbisyo sa Internet.

Gipataas namo ang among DNS-over-HTTPS server

Hangtud bag-o lang, bisan pa sa dayag nga kahuyang sa DNS trapiko, nga sa gihapon, sa kadaghanan nga bahin, transmitted sa tin-aw, sa malisyosong mga aksyon sa bahin sa mga providers nga nagtinguha sa pagdugang sa ilang kita pinaagi sa pag-embed sa advertising sa sulod, mga ahensya sa seguridad sa gobyerno ug censorship, ingon man sa yano nga mga kriminal, ang proseso pagpalig-on sa pagpanalipod niini, bisan pa sa presensya sa lain-laing mga teknolohiya sama sa DNSSEC/DANE, DNScrypt, DNS-over-TLS ug DNS-over-HTTPS, nahunong. Ug kung ang mga solusyon sa server, ug ang uban niini naglungtad na sa dugay nga panahon, kaylap nga nahibal-an ug magamit, ang ilang suporta gikan sa software sa kliyente nagbilin ug daghan nga gitinguha.

Maayo na lang, ang kahimtang nagbag-o. Sa partikular, ang mga nag-develop sa sikat nga browser sa Firefox gipahayag mahitungod sa mga plano sa pagpagana sa mode sa suporta pinaagi sa default DNS-over-HTTPS (DoH) sa dili madugay. Kinahanglang makatabang kini sa pagpanalipod sa trapiko sa DNS sa tiggamit sa WWW gikan sa mga hulga sa ibabaw, apan mahimo’g makapaila sa mga bag-o.

1. DNS-over-HTTPS nga mga problema

Sa una nga pagtan-aw, ang pagsugod sa masa nga pagpaila sa DNS-over-HTTPS sa software sa Internet hinungdan lamang sa usa ka positibo nga reaksyon. Apan, ang yawa, ingon sa ilang giingon, anaa sa mga detalye.

Ang unang problema nga naglimite sa gilapdon sa kaylap nga paggamit sa DoH mao ang pagtutok lamang niini sa trapiko sa web. Sa pagkatinuod, ang HTTP protocol ug ang kasamtangang bersyon niini nga HTTP/2, diin gibase ang DoH, mao ang basehan sa WWW. Apan ang Internet dili lang web. Adunay daghang mga sikat nga serbisyo, sama sa email, lainlaing instant messenger, file transfer system, multimedia streaming, ug uban pa, nga wala mogamit sa HTTP. Busa, bisan pa sa panglantaw sa kadaghanan sa DoH isip usa ka panacea, kini nahimong dili magamit nga walay dugang (ug wala kinahanglana) nga paningkamot alang sa bisan unsa gawas sa mga teknolohiya sa browser. Pinaagi sa dalan, ang DNS-over-TLS morag usa ka mas takus nga kandidato alang niini nga tahas, nga nagpatuman sa encapsulation sa standard nga trapiko sa DNS sa luwas nga standard TLS protocol.

Ang ikaduhang problema, nga posibleng mas mahinungdanon kaysa sa una, mao ang aktuwal nga pag-abandonar sa kinaiyanhong desentralisasyon sa DNS pinaagi sa disenyo pabor sa paggamit sa usa ka server sa DoH nga gitakda sa mga setting sa browser. Sa partikular, gisugyot ni Mozilla ang paggamit sa usa ka serbisyo gikan sa Cloudflare. Ang susama nga serbisyo gilusad usab sa ubang mga prominenteng numero sa Internet, ilabi na sa Google. Kini nahimo nga ang pagpatuman sa DNS-over-HTTPS sa porma diin kini gisugyot karon nagdugang lamang sa pagsalig sa mga end user sa pinakadako nga serbisyo. Dili kini sekreto nga ang kasayuran nga mahatag sa pag-analisar sa mga pangutana sa DNS mahimo’g mangolekta labi pa nga datos bahin niini, ingon usab madugangan ang katukma ug kalabotan niini.

Niining bahina, ang tagsulat kaniadto ug nagpabilin nga tigpaluyo sa mass nga pagpatuman dili sa DNS-over-HTTPS, apan sa DNS-over-TLS kauban ang DNSSEC/DANE isip usa ka unibersal, luwas ug dili maayo sa dugang nga sentralisasyon sa Internet nga paagi. alang sa pagsiguro sa seguridad sa trapiko sa DNS. Ikasubo, tungod sa klaro nga mga hinungdan, dili mapaabut ang paspas nga pagpaila sa suporta sa masa alang sa mga alternatibo sa DoH sa software sa kliyente, ug kini gihapon ang domain sa mga mahiligon sa teknolohiya sa seguridad.

Apan tungod kay aduna na kitay DoH, nganong dili man kini gamiton human makalingkawas sa posibleng pagpaniid sa mga korporasyon pinaagi sa ilang mga server ngadto sa atong kaugalingong DNS-over-HTTPS server?

2. DNS-over-HTTPS nga protocol

Kung tan-awon nimo ang standard RFC8484 nga naghulagway sa DNS-over-HTTPS protocol, imong makita nga kini, sa pagkatinuod, usa ka web API nga nagtugot kanimo sa pag-encapsulate sa usa ka standard nga DNS package sa HTTP/2 protocol. Gipatuman kini pinaagi sa espesyal nga mga header sa HTTP, ingon man ang pagkakabig sa binary nga format sa gipasa nga data sa DNS (tan-awa. RFC1035 ug misunod nga mga dokumento) ngadto sa usa ka porma nga nagtugot kanimo sa pagpadala ug pagdawat niini, ingon man sa pagtrabaho uban sa gikinahanglan nga metadata.

Sumala sa sumbanan, HTTP/2 lamang ug luwas nga koneksyon sa TLS ang gisuportahan.

Ang pagpadala sa hangyo sa DNS mahimo gamit ang standard nga GET ug POST nga mga pamaagi. Sa unang kaso, ang hangyo giusab ngadto sa base64URL-encoded string, ug sa ikaduha, pinaagi sa lawas sa POST request sa binary nga porma. Sa kini nga kaso, usa ka espesyal nga tipo sa data sa MIME ang gigamit sa panahon sa hangyo ug tubag sa DNS aplikasyon/dns-mensahe.

root@eprove:~ # curl -H 'accept: application/dns-message' 'https://my.domaint/dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE' -v
*   Trying 2001:100:200:300::400:443...
* TCP_NODELAY set
* Connected to eprove.net (2001:100:200:300::400) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /usr/local/share/certs/ca-root-nss.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=my.domain
*  start date: Jul 22 00:07:13 2019 GMT
*  expire date: Oct 20 00:07:13 2019 GMT
*  subjectAltName: host "my.domain" matched cert's "my.domain"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x801441000)
> GET /dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE HTTP/2
> Host: eprove.net
> User-Agent: curl/7.65.3
> accept: application/dns-message
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 200
< server: h2o/2.3.0-beta2
< content-type: application/dns-message
< cache-control: max-age=86274
< date: Thu, 12 Sep 2019 13:07:25 GMT
< strict-transport-security: max-age=15768000; includeSubDomains; preload
< content-length: 45
<
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failed writing body (0 != 45)
* stopped the pause stream!
* Connection #0 to host eprove.net left intact

Hatagi usab ug pagtagad ang titulo pagpugong sa cache: sa tubag gikan sa web server. Sa parameter labing taas nga edad naglangkob sa TTL nga bili alang sa DNS record nga gibalik (o ang minimum nga bili kung ang usa ka set niini ibalik).

Base sa ibabaw, ang pag-andar sa usa ka server sa DoH naglangkob sa daghang mga yugto.

  • Pagdawat og HTTP nga hangyo. Kung kini usa ka GET unya decode ang pakete gikan sa base64URL encoding.
  • Ipadala kini nga pakete sa DNS server.
  • Pagkuha og tubag gikan sa DNS server
  • Pangitaa ang minimum nga kantidad sa TTL sa nadawat nga mga rekord.
  • Ibalik ang tubag sa kliyente pinaagi sa HTTP.

3. Imong kaugalingong DNS-over-HTTPS server

Ang pinakasimple, pinakapaspas ug labing epektibo nga paagi sa pagpadagan sa imong kaugalingong DNS-over-HTTPS server mao ang paggamit sa HTTP/2 web server H2O, nga gisulat na sa tagsulat sa mubo (tan-awa ang "Taas nga Pagganap H2O Web Server").

Kini nga pagpili gisuportahan sa kamatuoran nga ang tanan nga code sa imong kaugalingon nga server sa DoH mahimong hingpit nga ipatuman gamit ang tighubad nga gisagol sa H2O mismo mruby. Dugang pa sa standard nga mga librarya, aron sa pagbayloay og data sa DNS server, kinahanglan nimo ang (mrbgem) Socket library, nga, maayo na lang, nalakip na sa kasamtangan nga bersyon sa pagpalambo sa H2O 2.3.0-beta2 presente sa mga pantalan sa FreeBSD. Bisan pa, dili lisud ang pagdugang niini sa bisan unsang miaging bersyon pinaagi sa pag-clone sa repository Socket nga mga librarya sa katalogo /deps sa wala pa ang pag-compile.

root@beta:~ # uname -v
FreeBSD 12.0-RELEASE-p10 GENERIC
root@beta:~ # cd /usr/ports/www/h2o
root@beta:/usr/ports/www/h2o # make extract
===>  License MIT BSD2CLAUSE accepted by the user
===>   h2o-2.2.6 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by h2o-2.2.6 for building
===>  Extracting for h2o-2.2.6.
=> SHA256 Checksum OK for h2o-h2o-v2.2.6_GH0.tar.gz.
===>   h2o-2.2.6 depends on file: /usr/local/bin/ruby26 - found
root@beta:/usr/ports/www/h2o # cd work/h2o-2.2.6/deps/
root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # git clone https://github.com/iij/mruby-socket.git
Клонирование в «mruby-socket»…
remote: Enumerating objects: 385, done.
remote: Total 385 (delta 0), reused 0 (delta 0), pack-reused 385
Получение объектов: 100% (385/385), 98.02 KiB | 647.00 KiB/s, готово.
Определение изменений: 100% (208/208), готово.
root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # ll
total 181
drwxr-xr-x   9 root  wheel  18 12 авг.  16:09 brotli/
drwxr-xr-x   2 root  wheel   4 12 авг.  16:09 cloexec/
drwxr-xr-x   2 root  wheel   5 12 авг.  16:09 golombset/
drwxr-xr-x   4 root  wheel  35 12 авг.  16:09 klib/
drwxr-xr-x   2 root  wheel   5 12 авг.  16:09 libgkc/
drwxr-xr-x   4 root  wheel  26 12 авг.  16:09 libyrmcds/
drwxr-xr-x  13 root  wheel  32 12 авг.  16:09 mruby/
drwxr-xr-x   5 root  wheel  11 12 авг.  16:09 mruby-digest/
drwxr-xr-x   5 root  wheel  10 12 авг.  16:09 mruby-dir/
drwxr-xr-x   5 root  wheel  10 12 авг.  16:09 mruby-env/
drwxr-xr-x   4 root  wheel   9 12 авг.  16:09 mruby-errno/
drwxr-xr-x   5 root  wheel  14 12 авг.  16:09 mruby-file-stat/
drwxr-xr-x   5 root  wheel  10 12 авг.  16:09 mruby-iijson/
drwxr-xr-x   5 root  wheel  11 12 авг.  16:09 mruby-input-stream/
drwxr-xr-x   6 root  wheel  11 12 авг.  16:09 mruby-io/
drwxr-xr-x   5 root  wheel  10 12 авг.  16:09 mruby-onig-regexp/
drwxr-xr-x   4 root  wheel  10 12 авг.  16:09 mruby-pack/
drwxr-xr-x   5 root  wheel  10 12 авг.  16:09 mruby-require/
drwxr-xr-x   6 root  wheel  10 12 сент. 16:10 mruby-socket/
drwxr-xr-x   2 root  wheel   9 12 авг.  16:09 neverbleed/
drwxr-xr-x   2 root  wheel  13 12 авг.  16:09 picohttpparser/
drwxr-xr-x   2 root  wheel   4 12 авг.  16:09 picotest/
drwxr-xr-x   9 root  wheel  16 12 авг.  16:09 picotls/
drwxr-xr-x   4 root  wheel   8 12 авг.  16:09 ssl-conservatory/
drwxr-xr-x   8 root  wheel  18 12 авг.  16:09 yaml/
drwxr-xr-x   2 root  wheel   8 12 авг.  16:09 yoml/
root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # cd ../../..
root@beta:/usr/ports/www/h2o # make install clean
...

Ang pag-configure sa web server kasagaran nga sukaranan.

root@beta:/usr/ports/www/h2o #  cd /usr/local/etc/h2o/
root@beta:/usr/local/etc/h2o # cat h2o.conf
# this sample config gives you a feel for how h2o can be used
# and a high-security configuration for TLS and HTTP headers
# see https://h2o.examp1e.net/ for detailed documentation
# and h2o --help for command-line options and settings

# v.20180207 (c)2018 by Max Kostikov http://kostikov.co e-mail: [email protected]

user: www
pid-file: /var/run/h2o.pid
access-log:
    path: /var/log/h2o/h2o-access.log
    format: "%h %v %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i""
error-log: /var/log/h2o/h2o-error.log

expires: off
compress: on
file.dirlisting: off
file.send-compressed: on

file.index: [ 'index.html', 'index.php' ]

listen:
    port: 80
listen:
    port: 443
    ssl:
        cipher-suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
        cipher-preference: server
        dh-file: /etc/ssl/dhparams.pem
        certificate-file: /usr/local/etc/letsencrypt/live/eprove.net/fullchain.pem
        key-file: /usr/local/etc/letsencrypt/live/my.domain/privkey.pem

hosts:
    "*.my.domain":
        paths: &go_tls
            "/":
                redirect:
                    status: 301
                    url: https://my.domain/
    "my.domain:80":
        paths: *go_tls
    "my.domain:443":
        header.add: "Strict-Transport-Security: max-age=15768000; includeSubDomains; preload"
        paths:
            "/dns-query":
               mruby.handler-file: /usr/local/etc/h2o/h2odoh.rb

Ang bugtong eksepsiyon mao ang tigdumala sa URL /dns-query diin ang among DNS-over-HTTPS server, nga gisulat sa mruby ug gitawag pinaagi sa opsyon sa handler, mao ang tinuud nga responsable mruby.handler-file.

root@beta:/usr/local/etc/h2o # cat h2odoh.rb
# H2O HTTP/2 web server as DNS-over-HTTP service
# v.20190908 (c)2018-2019 Max Kostikov https://kostikov.co e-mail: [email protected]

proc {|env|
    if env['HTTP_ACCEPT'] == "application/dns-message"
        case env['REQUEST_METHOD']
            when "GET"
                req = env['QUERY_STRING'].gsub(/^dns=/,'')
                # base64URL decode
                req = req.tr("-_", "+/")
                if !req.end_with?("=") && req.length % 4 != 0
                    req = req.ljust((req.length + 3) & ~3, "=")
                end
                req = req.unpack1("m")
            when "POST"
                req = env['rack.input'].read
            else
                req = ""
        end
        if req.empty?
            [400, { 'content-type' => 'text/plain' }, [ "Bad Request" ]]
        else
            # --- ask DNS server
            sock = UDPSocket.new
            sock.connect("localhost", 53)
            sock.send(req, 0)
            str = sock.recv(4096)
            sock.close
            # --- find lowest TTL in response
            nans = str[6, 2].unpack1('n') # number of answers
            if nans > 0 # no DNS failure
                shift = 12
                ttl = 0
                while nans > 0
                    # process domain name compression
                    if str[shift].unpack1("C") < 192
                        shift = str.index("x00", shift) + 5
                        if ttl == 0 # skip question section
                            next
                        end
                    end
                    shift += 6
                    curttl = str[shift, 4].unpack1('N')
                    shift += str[shift + 4, 2].unpack1('n') + 6 # responce data size
                    if ttl == 0 or ttl > curttl
                        ttl = curttl
                    end
                    nans -= 1
                 end
                 cc = 'max-age=' + ttl.to_s
            else
                 cc = 'no-cache'
            end
            [200, { 'content-type' => 'application/dns-message', 'content-length' => str.size, 'cache-control' => cc }, [ str ] ]
        end
    else
        [415, { 'content-type' => 'text/plain' }, [ "Unsupported Media Type" ]]
    end
}

Palihug timan-i nga ang lokal nga caching server ang responsable sa pagproseso sa mga DNS packet, sa kini nga kaso mabugkos nga gikan sa standard nga FreeBSD distribution. Gikan sa usa ka punto sa seguridad, kini ang labing maayo nga solusyon. Apan, walay makapugong kanimo sa pag-ilis localhost ngadto sa laing DNS address nga gusto nimong gamiton.

root@beta:/usr/local/etc/h2o # local-unbound verison
usage:  local-unbound [options]
        start unbound daemon DNS resolver.
-h      this help
-c file config file to read instead of /var/unbound/unbound.conf
        file format is described in unbound.conf(5).
-d      do not fork into the background.
-p      do not create a pidfile.
-v      verbose (more times to increase verbosity)
Version 1.8.1
linked libs: mini-event internal (it uses select), OpenSSL 1.1.1a-freebsd  20 Nov 2018
linked modules: dns64 respip validator iterator
BSD licensed, see LICENSE in source package for details.
Report bugs to [email protected]
root@eprove:/usr/local/etc/h2o # sockstat -46 | grep unbound
unbound  local-unbo 69749 3  udp6   ::1:53                *:*
unbound  local-unbo 69749 4  tcp6   ::1:53                *:*
unbound  local-unbo 69749 5  udp4   127.0.0.1:53          *:*
unbound  local-unbo 69749 6  tcp4   127.0.0.1:53          *:*

Ang nahabilin mao ang pagsugod pag-usab sa H2O ug tan-awon kung unsa ang moabut niini.

root@beta:/usr/local/etc/h2o # service h2o restart
Stopping h2o.
Waiting for PIDS: 69871.
Starting h2o.
start_server (pid:70532) starting now...

4. Pagsulay

Busa, atong susihon ang mga resulta pinaagi sa pagpadala pag-usab sa usa ka pagsulay nga hangyo ug pagtan-aw sa trapiko sa network gamit ang utility tcpdump.

root@beta/usr/local/etc/h2o # curl -H 'accept: application/dns-message' 'https://my.domain/dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE'
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
...
root@beta:~ # tcpdump -n -i lo0 udp port 53 -xx -XX -vv
tcpdump: listening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes
16:32:40.420831 IP (tos 0x0, ttl 64, id 37575, offset 0, flags [none], proto UDP (17), length 57, bad cksum 0 (->e9ea)!)
    127.0.0.1.21070 > 127.0.0.1.53: [bad udp cksum 0xfe38 -> 0x33e3!] 43981+ A? example.com. (29)
        0x0000:  0200 0000 4500 0039 92c7 0000 4011 0000  ....E..9....@...
        0x0010:  7f00 0001 7f00 0001 524e 0035 0025 fe38  ........RN.5.%.8
        0x0020:  abcd 0100 0001 0000 0000 0000 0765 7861  .............exa
        0x0030:  6d70 6c65 0363 6f6d 0000 0100 01         mple.com.....
16:32:40.796507 IP (tos 0x0, ttl 64, id 37590, offset 0, flags [none], proto UDP (17), length 73, bad cksum 0 (->e9cb)!)
    127.0.0.1.53 > 127.0.0.1.21070: [bad udp cksum 0xfe48 -> 0x43fa!] 43981 q: A? example.com. 1/0/0 example.com. A 93.184.216.34 (45)
        0x0000:  0200 0000 4500 0049 92d6 0000 4011 0000  ....E..I....@...
        0x0010:  7f00 0001 7f00 0001 0035 524e 0035 fe48  .........5RN.5.H
        0x0020:  abcd 8180 0001 0001 0000 0000 0765 7861  .............exa
        0x0030:  6d70 6c65 0363 6f6d 0000 0100 01c0 0c00  mple.com........
        0x0040:  0100 0100 0151 8000 045d b8d8 22         .....Q...].."
^C
2 packets captured
23 packets received by filter
0 packets dropped by kernel

Ang output nagpakita kung giunsa ang hangyo sa pagsulbad sa adres example.com nadawat ug malampusong giproseso sa DNS server.

Karon ang nahabilin mao ang pagpaaktibo sa among server sa browser sa Firefox. Aron mahimo kini, kinahanglan nimo nga usbon ang daghang mga setting sa mga panid sa pag-configure mahitungod sa: config.

Gipataas namo ang among DNS-over-HTTPS server

Una, kini ang adres sa among API diin ang browser mangayo sa kasayuran sa DNS network.trr.uri. Girekomenda usab nga itakda ang domain IP gikan sa kini nga URL alang sa luwas nga resolusyon sa IP gamit ang browser mismo nga wala mag-access sa DNS network.trr.bootstrapAddress. Ug sa katapusan, ang parameter mismo network.trr.mode lakip ang paggamit sa DoH. Ang pagbutang sa bili ngadto sa "3" mopugos sa browser sa paggamit sa eksklusibong DNS-over-HTTPS alang sa resolusyon sa ngalan, samtang ang mas kasaligan ug luwas nga "2" maghatag ug prayoridad sa DoH, nga magbilin sa standard DNS lookup isip fallback nga opsyon.

5. GANTOS!

Nakatabang ba ang artikulo? Unya palihug ayaw kaulaw ug pagsuporta sa kuwarta pinaagi sa porma sa donasyon (sa ubos).

Source: www.habr.com

Idugang sa usa ka comment