小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DOH(DNS

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

DOH搭建

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

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

  • DOH服務(wù)器包的下載鏈接,后面會用到:
    https://pan.baidu.com/s/1au3-AbPOcMo6wqyyVqeZJg密碼:fgnl
  • 本文主要是對著一篇英文教程寫的,想直接看英文版的可以轉(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é)議來進(jìn)行DNS請求。
??正常的DNS請求過程是通過計算機上的DNS客戶端程序來幫助用戶發(fā)起DNS請求,而不是通過瀏覽器本身發(fā)送,DNS使用的協(xié)議是UDP協(xié)議,UDP協(xié)議不具備很好的安全性,這樣發(fā)起的DNS請求會遭到DNS劫持,攻擊者會將用戶想要訪問的域名解析到別的IP地址上,因此DOH為了解決這個問題而出現(xiàn)。
??DOH是使用HTTPs協(xié)議發(fā)送dns請求,請求到達(dá)DOH服務(wù)器后,由DOH服務(wù)器解碼HTTPS并發(fā)送DNS請求,DNS請求結(jié)果返回到DOH服務(wù)器上后,再由將其打包成HTTPS返回給客戶端,這就保證了客戶端發(fā)起的dns請求不會被攻擊者拿到。
??下圖就是本次要搭建DOH的工作流程圖,其中我們配置的部分在圖中為Nginx、DOH、dnscrypt三個部分。

3)具體搭建過程

(1)dnscrypt的安裝配置

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

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

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

127.0.0.53:53

這個監(jiān)聽地址可以通過dig命令來看一下,隨便dig一個域名顯示的本地服務(wù)器應(yīng)該就是dnscrypt-proxy的監(jiān)聽地址。
??下一步修改/etc/dnscrypt-proxy/dnscrypt-proxy.toml文件的server_names字段,最開始這個字段里面應(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ù)器的配置文件會在路徑/etc/dns-over-https/doh-server.conf,現(xiàn)在對其進(jìn)行修改,主要修改的部分為,upstream字段,修改為上面提到的dnscrypt-proxy的監(jiān)聽地址,另外listen字段我注釋掉了一行,因為這行不注釋后面無法啟動DOH服務(wù),可以暫時不用注釋,如果后面真的遇到了該問題再回來注釋一下試試,修改如下:

# 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

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

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

安裝后/etc路徑下會出現(xiàn)Nginx路徑。接下來進(jìn)行一些配置,首先在/etc/nginx/sites-available/路徑下新建一個文件,取名為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字段是你要給我們這臺服務(wù)器的域名,沒有的話就去注冊一個吧,不然沒法弄https。然后做一個符號鏈接,并重啟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

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

ssl_stapling on;
ssl_stapling_verify on;
resolver 127.0.0.53;

??安裝certbot,并申請證書,安裝certbot的命令如下:

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

Certbot擁有幫助Nginx配置證書的插件,因此申請證書的過程也非常簡單,使用如下命令,這里的域名就是你申請的域名:

sudo certbot --nginx -d dns.

如果申請成功則會出現(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選項即可。
??最后我們配置一下/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

那么這個東西怎么用呢,可以通過curl命令來用,如下:

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

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

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

把它改成你搭建的就可以了。驗證的話可以通過抓包來驗證。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多