久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

DOH(DNS

 jerry_tom123 2022-05-23 發(fā)布于北京

DOH搭建

1)搭建環(huán)境以及相關(guān)資料

??配置使用服務(wù)器或虛擬機(jī)都可以,,系統(tǒng)鏡像推薦使用Debian或Ubuntu,。本次搭建使用的是Ubuntu18.04版本。

  • DOH服務(wù)器包的下載鏈接,后面會(huì)用到:
    https://pan.baidu.com/s/1au3-AbPOcMo6wqyyVqeZJg密碼:fgnl
  • 本文主要是對(duì)著一篇英文教程寫的,,想直接看英文版的可以轉(zhuǎn)到這里:
    https://www./2018/10/tutorial-setup-dns-over-https-server
  • DOH的使用方法可以參考:
    https:///@nykolas.z/troubleshooting-dns-over-https-c1e1009d3eb8
  • Github
    https://github.com/m13253/dns-over-https

2)DOH原理

??DOH全稱為DNS-over-HTTPs,,顧名思義,,其主要目的是使用https協(xié)議來(lái)進(jìn)行DNS請(qǐng)求,。
??正常的DNS請(qǐng)求過(guò)程是通過(guò)計(jì)算機(jī)上的DNS客戶端程序來(lái)幫助用戶發(fā)起DNS請(qǐng)求,而不是通過(guò)瀏覽器本身發(fā)送,,DNS使用的協(xié)議是UDP協(xié)議,,UDP協(xié)議不具備很好的安全性,這樣發(fā)起的DNS請(qǐng)求會(huì)遭到DNS劫持,,攻擊者會(huì)將用戶想要訪問(wèn)的域名解析到別的IP地址上,,因此DOH為了解決這個(gè)問(wèn)題而出現(xiàn)。
??DOH是使用HTTPs協(xié)議發(fā)送dns請(qǐng)求,,請(qǐng)求到達(dá)DOH服務(wù)器后,,由DOH服務(wù)器解碼HTTPS并發(fā)送DNS請(qǐng)求,DNS請(qǐng)求結(jié)果返回到DOH服務(wù)器上后,,再由將其打包成HTTPS返回給客戶端,,這就保證了客戶端發(fā)起的dns請(qǐng)求不會(huì)被攻擊者拿到,。
??下圖就是本次要搭建DOH的工作流程圖,其中我們配置的部分在圖中為Nginx,、DOH、dnscrypt三個(gè)部分,。

3)具體搭建過(guò)程

(1)dnscrypt的安裝配置

??dnscrypt是位于DOH服務(wù)器上的一個(gè)客戶端,,dnscrypt負(fù)責(zé)安全地轉(zhuǎn)發(fā)DNS請(qǐng)求,安裝方法很簡(jiǎn)單,,具體命令如下:

sudo add-apt-repository ppa:shevchuk/dnscrypt-proxy
apt-get update
sudo apt install dnscrypt-proxy

??安裝成功后/etc路徑下會(huì)出現(xiàn)dnscrypt-proxy文件夾,,dnscrypt-proxy的監(jiān)聽地址為:

127.0.0.53:53

這個(gè)監(jiān)聽地址可以通過(guò)dig命令來(lái)看一下,隨便dig一個(gè)域名顯示的本地服務(wù)器應(yīng)該就是dnscrypt-proxy的監(jiān)聽地址,。
??下一步修改/etc/dnscrypt-proxy/dnscrypt-proxy.toml文件的server_names字段,,最開始這個(gè)字段里面應(yīng)該是包含很多名字的,修改其內(nèi)容如下:

server_names = ['cloudflare']

??最后重啟dnscrypt-proxy服務(wù):

sudo systemctl restart dnscrypt-proxy

(2)安裝DNS-over-HTTPs服務(wù)器

??首先下載上面打包好的DOH服務(wù)器,,這里我使用了上面提供的deb安裝包,,使用安裝命令即可安裝好:

sudo dpkg -i doh-server_*_amd64.deb

安裝好的DOH服務(wù)器的配置文件會(huì)在路徑/etc/dns-over-https/doh-server.conf,現(xiàn)在對(duì)其進(jìn)行修改,,主要修改的部分為,,upstream字段,修改為上面提到的dnscrypt-proxy的監(jiān)聽地址,,另外listen字段我注釋掉了一行,,因?yàn)檫@行不注釋后面無(wú)法啟動(dòng)DOH服務(wù),可以暫時(shí)不用注釋,,如果后面真的遇到了該問(wèn)題再回來(lái)注釋一下試試,,修改如下:

# HTTP listen port
listen = [
    "127.0.0.1:8053",
    #"[::1]:8053",        //這里我把它注釋掉了
]
# TLS certification file
# If left empty, plain-text HTTP will be used.
# You are recommended to leave empty and to use a server load balancer (e.g.
# Caddy, Nginx) and set up TLS there, because this program does not do OCSP
# Stapling, which is necessary for client bootstrapping in a network
# environment with completely no traditional DNS service.
cert = ""
# TLS private key file
key = ""
# HTTP path for resolve application
path = "/dns-query"
# Upstream DNS resolver
# If multiple servers are specified, a random one will be chosen each time.

upstream = [
    "127.0.0.53:53",   //dnscrypt-proxy的監(jiān)聽地址
]

# Upstream timeout
timeout = 60
# Number of tries if upstream DNS fails
tries = 10
# Only use TCP for DNS query
tcp_only = false
# Enable logging
verbose = false

??最后重啟DOH服務(wù):

sudo systemctl restart doh-server

(3)安裝并配置Nginx

??接下來(lái)需要安裝Nginx,Nginx在這里的實(shí)際作用是反向代理服務(wù)器,,將它受到的HTTPS請(qǐng)求解碼并發(fā)送到doh-server上,。
??安裝Nginx的步驟也十分簡(jiǎn)單,安裝命令如下:

sudo add-apt-repository ppa:ondrej/nginx
apt-get uptdate
sudo apt install nginx-full

安裝后/etc路徑下會(huì)出現(xiàn)Nginx路徑,。接下來(lái)進(jìn)行一些配置,,首先在/etc/nginx/sites-available/路徑下新建一個(gè)文件,取名為dns-over-https,,將下面內(nèi)容寫入該文件中:

upstream dns-backend {
    server 127.0.0.1:8053;
}
server {
        listen 80;
        server_name dns.;
        root /var/www/html/dns;
        access_log /var/log/nginx/dns.access.log;
         location /dns-query {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_redirect off;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_read_timeout 86400;
                proxy_pass http://dns-backend/dns-query ;
        }
}

其中dns-backend就是你要Nginx轉(zhuǎn)發(fā)到的地址,,這里就是我們的DOH的監(jiān)聽地址,另外server_name字段是你要給我們這臺(tái)服務(wù)器的域名,,沒(méi)有的話就去注冊(cè)一個(gè)吧,,不然沒(méi)法弄https。然后做一個(gè)符號(hào)鏈接,,并重啟Nginx,,命令如下:

sudo ln -s /etc/nginx/sites-available/dns-over-https /etc/nginx/sites-enabled/dns-over-https
sudo nginx -t
sudo systemctl reload nginx

??接下來(lái),,在路徑/etc/nginx/conf.d/下創(chuàng)建一個(gè)文件stapling.conf,讓Nginx檢查證書是否已過(guò)期,,并將該信息保存在緩存中,,這是為了避免對(duì)證書的證書頒發(fā)機(jī)構(gòu)(CA)執(zhí)行過(guò)多的請(qǐng)求。配置文件內(nèi)容如下:

ssl_stapling on;
ssl_stapling_verify on;
resolver 127.0.0.53;

??安裝certbot,,并申請(qǐng)證書,,安裝certbot的命令如下:

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx

Certbot擁有幫助Nginx配置證書的插件,因此申請(qǐng)證書的過(guò)程也非常簡(jiǎn)單,,使用如下命令,,這里的域名就是你申請(qǐng)的域名:

sudo certbot --nginx -d dns.

如果申請(qǐng)成功則會(huì)出現(xiàn)如下內(nèi)容:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

我們選擇2選項(xiàng)即可。
??最后我們配置一下/etc/letsencrypt/options-ssl-nginx.conf文件,,將里面的內(nèi)容替換為如下內(nèi)容:

# This file contains important security parameters. If you modify this file
# manually, Certbot will be unable to automatically provide future security
# updates. Instead, Certbot will print and log an error message with a path to
# the up-to-date file that you will need to refer to when manually updating
# this file.
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# Enable modern TLS cipher suites
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
# The order of cipher suites matters
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;


??重啟Nginx:

sudo systemctl stop nginx
sudo systemctl start nginx

4)DOH的使用方法

??完成了上面的步驟后,,DOH服務(wù)器就搭建好了,地址為:

https://dns./dns-query

那么這個(gè)東西怎么用呢,,可以通過(guò)curl命令來(lái)用,,如下:

curl "https://dns./dns-query?ct=application/dns-json&name=baidu.com&type=A"

你只需要替換其中的域名部分。
??還可以配置瀏覽器使用,,以火狐瀏覽器為例,,配置方法如下:

  1. 首先進(jìn)入Firefox的about:config頁(yè)面,在頁(yè)面搜索框內(nèi)搜索network.trr,。
  2. 找到network.trr.mode,,并將其值改為2,2表示使用DOH,。
  3. 找到network.trr.uri,,將其改為支持DOH的服務(wù)器,其默認(rèn)值為:
https://mozilla./dns-query

把它改成你搭建的就可以了,。驗(yàn)證的話可以通過(guò)抓包來(lái)驗(yàn)證,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多