Dns over https windows server

DNS over HTTPS (DoH) — or «DNS encryption» as it is called in Windows — is a way to encrypt DNS queries and responses between a user’s device and the resolving DNS server. For more on this see New in Simple DNS Plus v. 9.0.

To enable this in Windows Server 2022, do the following.

Unless you are using one of the DoH DNS server pre-configured in Windows (Cloudflare, Google, Quad 9), you first need to add the DoH DNS server to the «list of known servers».

This is done in PowerShell with the command:

Add-DnsClientDohServerAddress -ServerAddress '<resolver-IP-address>' -DohTemplate '<resolver-DoH-template>' -AllowFallbackToUdp $False -AutoUpgrade $True

For example if your DNS server IP address is 1.2.3.4 and its host name is example.com, and the DNS server is Simple DNS Plus, you would use:

Add-DnsClientDohServerAddress -ServerAddress 1.2.3.4 -DohTemplate https://example.com/doh/dns-query

To do this, click the Windows Start Button, right-click on «Windows PowerShell», click «More» and click «Run as administrator»:

Enter the command from above:

Next, click the Windows Start button, and click «Settings»:

In the «Settings» dialog, select «Network & Internet» :

Click on «Ethernet» and then click on your network connection:

Under DNS settings, click the «Edit» button:

In the «Edit DNS settings» dialog, select «Manual», turn it on for IPv4 and/or IPv6, under «Preferred DNS» enter the IP address of your DNS server, and under «Preferred DNS encryption» select one of the «Encrypted…» options:

Note that the last setting («Preferred DNS encryption) will only be available if you have completed the first steps above (adding the DNS server IP address to the «list of known servers» through PowerShell).

For more details about the «list of known servers», see Microsoft’s documentation Secure DNS Client over HTTPS (DoH).

Современные версии Windows поддерживают протокол DNS over HTTPS (DoH), который позволяет выполнять разрешение имен (DNS запросы) через шифрованное HTTPS соединение. В этой статье мы рассмотрим, для чего нужен протокол DNS over HTTPS, как его включить и использовать в Windows.

Содержание:

  • Как включить DNS over HTTPS из графического интерфейса Windows?
  • Настройка DNS over HTTPS в Windows 11 из командной строки
  • Как убедиться, что для разрешения имен в Windows используется DNS over HTTPS?

По умолчанию DNS трафик не шифруется. Это означает, что все запросы с вашего компьютера на разрешение имен к DNS-серверу передаются по сети в открытом виде. Сторонние лица могут подслушать ваш DNS трафик, определить какие ресурсы вы посещали, или манипулировать DNS трафиком по типу main-in-the-middle. Протокол DoH позволяет инкапсулировать DNS запросы в шифрованное HTTPS соединение и отправить их DNS серверу (нужен специальный DNS сервер с поддержкой DoH).

Как включить DNS over HTTPS из графического интерфейса Windows?

Встроенная поддержка протокола DNS-over-HTTPS (DoH) в DNS клиенте доступна в Windows 11 и Windows Server 2022. Чтобы ваш клиент использовал DoH для шифрования DNS трафика, нужно в настройках сетевого подключения указать IP адрес сервера с поддержкой DoH.

Список IP адресов публичных DNS серверов с поддержкой DoH можно вывести PowerShell командой:

Get-DNSClientDohServerAddress

Get-DNSClientDohServerAddress список зарегистрированных DNS серверов с поддержкой DNS over HTTPS

Провайдер IPv4 адреса DNS серверов с поддержкой DNS over HTTPS
Cloudflare 1.1.1.1, 1.0.0.1
Google 8.8.8.8, 8.8.4.4
Quad9 9.9.9.9, 149.112.112.112

Нужно указать IPv4 и IPv6 адрес одного из этих DNS сервера (или адрес любого альтернативного DNS сервера с поддержкой DoH, предварительно добавив его, о чем ниже) в настройках сетевого интерфейса.

  1. Перейдите в Settings -> Network & Internet -> Ethernet (или Wi-Fi)
  2. В данном случае видно, что DNS трафик не зашифрован.
    Настройка DNS серверов на клиенте Windows 11, незашифрованные запросы neshifrovano

  3. Нажмите кнопку Edit
  4. Укажите IP адрес DNS сервера, и для параметра DNS over HTTPS выберите -> On (automatic template)
  5. Сохраните изменения. Теперь DNS запросы будут отправляться в шифрованном виде.
    Включено шифрование DNS запросов в Windows

В DNS клиенте Windows Server 2022 также поддерживается DoH (но служба DNS Server в этой версии Windows Server пока не поддерживает DoH).

Укажите IP адрес DNS сервера в настройках сетевого интерфейса и включите режим обязательного использования шифрования: Encrypted only (DNS over HTTPS).

Ни один из релизов Windows 10 сейчас не поддерживает протокол DoH. В одной из инсайдерской версии (Insider Preview OS Build 19628) этот протокол можно было включить через реестр. Для включения поддержки DoH, нужно было создайть параметр реестра с помощью командлета New-ItemProperty:

$AutoDohPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters'
$AutoDohKey = 'EnableAutoDoh'
New-ItemProperty -Path $AutoDohPath -Name $AutoDohKey -Value 2 -PropertyType DWord -Force

EnableAutoDoh параметр реестра для включения DNS-over-HTTPS в windows 10

Но в финальный релиз Windows 10 этот функционал не внедрен!

Настройка DNS over HTTPS в Windows 11 из командной строки

В Windows можно включить и настроить использование DNS over HTTPS из командной строки.

Сначала нужно добавить IP адрес сервера DoH в список известных серверов. Например, чтобы добавить альтернативные DNS сервера Cloudflare Family
1.1.1.3
и
1.0.0.3
(фильтруют вредоносный и взрослый контент), выполните PowerShell команду:

$DNSServer="1.1.1.3"
Add-DnsClientDohServerAddress -ServerAddress $DNSServer -DohTemplate "https://family.cloudflare-dns.com/dns-query" -AllowFallbackToUdp $False -AutoUpgrade $True

powershell Add-DnsClientDohServerAddress

После того, как вы зарегистрировали шаблон для DNS сервера DoH нужно назначить этот IP в качестве предпочтительного DNS сервера в настройках сетевого интерфейса с помощью PowerShell команды:

Set-DnsClientServerAddress Ethernet0 -ServerAddresses ($DNSServer)

Затем включить обязательное использование DNS over HTTPS для сетевого интерфейса:
$i = Get-NetAdapter -Physical -Name Ethernet0

$s1 = "HKLM:System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\" + $i.InterfaceGuid + "\DohInterfaceSettings\Doh\$DNSServer"
New-Item -Path $s1 -Force | New-ItemProperty -Name "DohFlags" -Value 1 -PropertyType QWORD
Clear-DnsClientCache

powershell: включить исопльзование dns-over-https для сетевого адаптера

С помощью отдельного параметра GPO можно включить обязательное использование DoH:

  1. Запустите редактор локальной GPO (
    gpedit.msc
    )
  2. Перейдите в Computer Configuration -> Policies -> Administrative Templates -> Network -> DNS Client section
  3. Включите политику «Configure DNS over HTTPS (DoH) name resolution» и задайте значение Require DoH.
    Параметр GPO: Configure DNS over HTTPS (DoH) name resolution

Как убедиться, что для разрешения имен в Windows используется DNS over HTTPS?

Чтобы проверить, что клиент DNS использует для разрешения имен протокол HTTPS по порту 443 вместо обычного 53 порта, используете встроенную утилита захвата сетевого трафика PktMon.exe (о которой мы говорили ранее).

Удалите все текущие фильтры Packet Monitor:

pktmon filter remove

Создайте новый фильтр для стандартного DNS порта 53:

pktmon filter add -p 53

Запустите мониторинг трафика в реальном времени (трафик выводится в консоль):

pktmon start --etw -m real-time

Если вы правильно настроили DNS over HTTPS, то трафик по порту 53 должен отсутствовать. Это ожначает, что все DNS запросы отправляются в шифрованной HTTPS сессии (на скриншоте ниже показан вывод в консоль при отключённом DoH и при включенном).

дамп трафика с включенным и отключенным dns over https

DNS over HTTPS реализован во всех популярных браузерах (Google Chrome, Mozilla Firefox, Microsoft Edge, Opera). В каждом из этих браузеров вы можете включить поддержку DoH. Таком образом все DNS запросы от браузера будут шифроваться (DNS трафик других приложений по-прежнему будет идти в открытом текстовом виде).

Больше все проблем технологии DNS over HTTPS и DNS over TLS создадут администраторам корпоративных сетей, которым станет сложнее блокировать доступ к внешним ресурсам из внутренних сетей. Также не понятно, что планирует делать Роскомнадзор, чья методика глубокой проверки и управления сетевым трафиком Deep Packet Inspection (DPI) перестанет работать при переходе протокола DNS на рельсы шифрованного https.

Secure Dns (Dns over Https, Dns Over Tls)

Secure Dns Settings for windows android and linux

  1. Windows Secure DNS
  2. Android Secure DNS
  3. Linux Secure DNS

Windows Secure DNS

Windows supports dns over https natively. You can enable windows secure dns by:

  • Ethernet

    Settings -> Network & Internet -> Ethernet -> Edit Dns -> change DHCP to Manual -> add dns server addresses

  • Wifi

    Settings -> Network & Internet -> Wi-fi -> Wifi Name -> Edit Dns -> change DHCP to Manual -> add dns server addresses

Available Dns server address

  1. Google 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844
  2. Cloudflare 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001
  3. Quad 9 9.9.9.9, 149.112.112.112, 2620:fe::fe, 2620:fe::fe:9

Add additional Dns Over Https (DOH) server to windows network manager

Add-DnsClientDohServerAddress -ServerAddress '<resolver-IP-address>' -DohTemplate '<resolver-DoH-template>' -AllowFallbackToUdp $False -AutoUpgrade $True

Example (add cisco OpenDNS)

Add-DnsClientDohServerAddress -ServerAddress '208.67.222.222' -DohTemplate 'https://doh.opendns.com/dns-query' -AllowFallbackToUdp $False -AutoUpgrade $True
Add-DnsClientDohServerAddress -ServerAddress '208.67.220.220' -DohTemplate 'https://doh.opendns.com/dns-query' -AllowFallbackToUdp $False -AutoUpgrade $True
Add-DnsClientDohServerAddress -ServerAddress '2620:119:35::35' -DohTemplate 'https://doh.opendns.com/dns-query' -AllowFallbackToUdp $False -AutoUpgrade $True
Add-DnsClientDohServerAddress -ServerAddress '2620:119:53::53' -DohTemplate 'https://doh.opendns.com/dns-query' -AllowFallbackToUdp $False -AutoUpgrade $True

More DNS Providers

Known DNS Provider (By adguard-dns)

Android Secure DNS

Android support dns over tls natively from android 9. You can enable Android secure dns by:

  • MIUI

    Settings -> Connection & Sharing -> Private DNS -> Private DNS provider hostname

  • Samsung

    Settings -> Connection -> More connection settings -> Private DNS -> Private DNS provider hostname

  • Other

    Settings -> (Search Private Dns) -> Private DNS provider hostname

Most used dns over tls addresses

  1. Google dns.google
  2. Cloudflare one.one.one.one, 1dot1dot1dot1.cloudflare-dns.com cloudflare-malweare-block security.cloudflare-dns.com cloudflare-malweare-and-adult-content-block family.cloudflare-dns.com

More DNS Providers

Known DNS Provider (By adguard-dns)

Linux Secure DNS

Linux supports dns over tls natively through systemd-resolver. You can enable linux secure dns by:

  1. Check systemd-resolved.service status in your system
  1. If not enabled
    1. enable by running
    sudo systemctl enable --now systemd-resolved.service
    1. change /etc/resolv.conf
    sudo rm /etc/resolv.conf
    sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  2. Set-up systemd-resolved to resolve dns over tls
    1. Modify the File
    sudo nano /etc/systemd/resolved.conf
    
    1. The file should look like
    [Resolve]
    DNS=2001:4860:4860::8888 8.8.8.8
    FallbackDNS=2001:4860:4860::8844 8.8.4.4
    Domains=~.
    #LLMNR=no
    #MulticastDNS=no
    DNSSEC=yes
    DNSOverTLS=yes
    #Cache=yes
    #DNSStubListener=yes
    #ReadEtcHosts=yes
    
  3. Restart systemd-resolved service
sudo systemctl restart systemd-resolved.service

A quick note about the options:

  • DNS: A space-separated list of IPv6 and IPv4 addresses to use as system DNS servers
  • FallbackDNS: A space-separated list of IPv4 and IPv6 addresses to use as the fallback DNS servers.
  • Domains: These domains are used as search suffixes when resolving single-label host names, ~. stand for use the system DNS server defined with DNS= preferably for all domains.
  • DNSOverTLS: If true all connections to the server will be encrypted. Note that this mode requires a DNS server that supports DNS-over-TLS and has a valid certificate for it’s IP.
  • DNSSEC: allows a user, application, or recursive resolver to trust that the answer to their DNS query is what the domain owner intends it to be.
  • Cache: If yes dns will be cached, if no than dns will not be cached and the dns request time will take longer. So the recomended value is yes

Fore More Details about options:

  • Check manual
    man resolved.conf
    
  • Online Manual
    Ubuntu reslved.conf Manual

More DNS Providers

Known DNS Provider (By adguard-dns)

The latest versions of Windows support the DNS over HTTPS (DoH) protocol, which allows domain name resolution (DNS queries) to be performed over an encrypted HTTPS connection. In this article, we’ll look at what the DNS over HTTPS protocol is used for, and how to use it in Windows.

Contents:

  • How to Enable DNS over HTTPS from the Windows GUI
  • DNS over HTTPS Configuration on Windows 11 via Command Prompt
  • How to verify that DNS over HTTPS works on Windows

By default, DNS traffic is not encrypted. All queries from your computer to a DNS server to resolve names are sent over the network in plain text. Third parties can intercept your DNS traffic, determine what resources you have visited, or manipulate DNS responses in main-in-the-middle attacks. The DoH protocol can encapsulate DNS queries in an encrypted HTTPS connection and send them to a DNS server (a DNS server with DoH support is required).

How to Enable DNS over HTTPS from the Windows GUI

Windows 11 and Windows Server 2022 have built-in DNS-over-HTTPS (DoH) support in the DNS client. The client will use DoH to encrypt DNS traffic if you have specified the IP address of the DNS server that supports DoH in the settings of the network adapter.

Use PowerShell to list the IP addresses of public DNS servers that support DoH:

Get-DNSClientDohServerAddress

Get-DNSClientDohServerAddress - list available DNS servers with DNS-over-HTTPS support

Provider IP addresses of public DNS servers supporting DNS-over-HTTPS
Cloudflare 1.1.1.1, 1.0.0.1
Google 8.8.8.8, 8.8.4.4
Quad9 9.9.9.9, 149.112.112.112

Specify the IPv4 or IPv6 address of one of these DNS servers in the network interface settings (or the address of an alternative DNS server with DoH support, after you have added it as described below.)

  1. Navigate to Settings -> Network & Internet -> Ethernet (or Wi-Fi)
  2. DNS traffic is not encrypted in this case.
    unencrypted DNS in network connection settings

  3. Click the Edit
  4. Enter the IP address of the DNS server and select -> On (automatic template) for the DNS over HTTPS parameter.  
  5. Save the changes. Now the DNS queries from the computer will be encrypted.

Windows Server 2022 DNS client also supports DoH (however, the DNS Server service itself does not support DoH in this release.).

Specify the DNS server IP address in the network interface settings and enable the Encrypted only (DNS over HTTPS) mode.

None of the Windows 10 releases currently support the DoH protocol. In one of the Insider Windows 10 releases (Insider Preview OS Build 19628), this protocol could be enabled via the registry.  To enable DoH support, you had to create a registry parameter by using the New-ItemProperty cmdlet:

$AutoDohPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters'
$AutoDohKey = 'EnableAutoDoh'
New-ItemProperty -Path $AutoDohPath -Name $AutoDohKey -Value 2 -PropertyType DWord -Force

windows 10 enable dns over https via registry parameter EnableAutoDoh

However, this feature has not been implemented in the final release of Windows 10!

DNS over HTTPS Configuration on Windows 11 via Command Prompt

On Windows, you can use the command line interface to enable and configure DNS over HTTPS.

First, add the IP address of the DoH server to the list of known DNS servers. For example, to add Cloudflare Family alternative DNS servers 1.1.1.3 and 1.0.0.3 (used to filter malware and adult content), run:

$DNSServer="1.1.1.3"
Add-DnsClientDohServerAddress -ServerAddress $DNSServer -DohTemplate "https://family.cloudflare-dns.com/dns-query" -AllowFallbackToUdp $False -AutoUpgrade $True

Add-DnsClientDohServerAddress - add new DoH template IP address

After you register the template for the DoH DNS server, assign that IP as the preferred DNS server in the network interface settings using the following PowerShell command:

Set-DnsClientServerAddress Ethernet0 -ServerAddresses ($DNSServer)

Then enable mandatory use of DNS over HTTPS for the network interface:

$i = Get-NetAdapter -Physical -Name Ethernet0
$s1 = "HKLM:System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\" + $i.InterfaceGuid + "\DohInterfaceSettings\Doh\$DNSServer"
New-Item -Path $s1 -Force | New-ItemProperty -Name "DohFlags" -Value 1 -PropertyType QWORD
Clear-DnsClientCache

Or use a separate GPO setting to enforce using DoH:

  1. Open the local GPO editor (gpedit.msc)
  2. Navigate to Computer Configuration -> Policies -> Administrative Templates -> Network -> DNS Client section
  3. Enable the policy Configure DNS over HTTPS (DoH) name resolution and set the value to Require DoH.
    GPO: Enable DNS-over-HTTPS name resolution

How to verify that DNS over HTTPS works on Windows

To verify that the DNS client is using the encrypted HTTPS (443) protocol for name resolution instead of the default UDP/TCP port 53, use the built-in network traffic capture tool named PktMon.exe.

Remove all current Packet Monitor filters:

pktmon filter remove

Create a new filter for the default DNS port (53):

pktmon filter add -p 53

Start real-time traffic monitoring (traffic will be output to the console):

pktmon start --etw -m real-time

There should be no traffic on port 53 if you have properly configured DNS over HTTPS. This means that all DNS queries are sent in an encrypted HTTPS session (the screenshot below shows the console output with DoH disabled and enabled).

ispecting dns traffic over https

DNS over HTTPS support is implemented in all popular browsers (Google Chrome, Mozilla Firefox, Microsoft Edge, Opera). You can enable DoH support in any of them. This encrypts your browser’s DNS queries (DNS traffic from other apps will still sent as plain text).

DNS over HTTPS and DNS over TLS will cause problems for corporate network administrators by making it more difficult to restrict access to external resources from internal networks.

DNS over HTTPS — это безопасный DNS. Потому что в этом случае весь трафик DNS шифруется и скрывается в обширном потоке HTTPS трафика. С DNS over HTTPS повышается безопасность и конфиденциальность пользователя в сети интернет. Давайте настроим себе безопасный DNS в Linux (Debian) и Windows.

Введение

DNS

DNS (Domain Name System) преобразовывает доменные имена ресурсов сети интернет в соответствующие IP адреса. Запросы и ответы DNS отправляются открытым текстом. Вот, например, как легко с помощью обычного сетевого анализатора прочитать доменное имя (adminkin.pro) в запросе DNS и в ответе DNS:

Протокол DNS. Запрос и ответ DNS в виде открытого текста

Утечка DNS

Утечка DNS (DNS leak) — это ситуация, когда отправляются запросы DNS через незащищенные каналы, раскрывая информацию о посещаемых пользователем веб-сайтах и доменных именах. В этой ситуации третьи лица, такие как интернет-провайдеры или злоумышленники, могут получить доступ к онлайн-активности пользователя. Это нарушает приватность и безопасность пользователя в интернете.

DNS over HTTPS (DoH)

DNS over HTTPS (DoH) — это протокол для шифрования трафика DNS, чтобы третьи лица не могли интерпретировать пересылаемые данные. DoH использует порт 443, который используется и для всего остального трафика HTTPS (web трафика).

Dnscrypt-proxy

Dnscrypt-proxy — это кроссплатформенный DNS-прокси. Повышает безопасность и конфиденциальность, обмениваясь данными с вышестоящими удаленными DNS-серверами по защищенными каналам. Поддерживает, среди прочих, протокол шифрования DNS over HTTPS с использованием TLS 1.3. Ускоряет работу за счет кэширования ответов DNS. Подробнее смотрите в документации разработчиков dnscrypt-proxy на GitHub https://github.com/DNSCrypt/dnscrypt-proxy/wiki.

Установка dnscrypt-proxy

Скачиваем dnscrypt-proxy c GitHub разработчиков: https://github.com/DNSCrypt/dnscrypt-proxy/releases. Ищем файл вида dnscrypt-proxy-win64-*.zip, скачиваем его и распаковываем.

Запускаем Командную строку Windows от имени администратора:

DNS over HTTPS. Windows. Запуск командной строки

Переходим в директорию, в которую распаковали dnscrypt-proxy. В моем случае это будет команда:

cd c:\dnscrypt-proxy\win64\

Создаем конфигурационный файл dnscrypt-proxy.toml:

copy example-dnscrypt-proxy.toml dnscrypt-proxy.toml

Запускаем dnscrypt-proxy:

.\dnscrypt-proxy.exe
DNS over HTTPS. Запуск dnscrypt-proxy

Dnscrypt-proxy запускается на IP адресе 127.0.0.1, на порту 53 и готовится получать запросы как по протоколу TCP, так и UDP. Сортируются по задержке ответа DNS-резолверы (см. рисунок выше).

Все! Dnscrypt-proxy готов к работе:

DNS over HTTPS. Dnscrypt-proxy готов к работе

Проверим, как выполнится запрос на разрешение доменного имени adminkin.pro на IP адрес. Для этого запускаем еще одну командную строку Windows (запуск от имени администратора не требуется), переходим в директорию dnscrypt-proxy и вводим команду:

.\dnscrypt-proxy.exe -resolve adminkin.pro

Доменное имя adminkin.pro разрешилось с помощью сервиса на 127.0.0.1:53, т.е. с помощью dnscrypt-proxy. IP адрес запрашиваемого домена успешно получен (77.222.56.16). Разрешение DNS работает!

Dnscrypt-proxy. Разрешение доменного имени

Настройка DNS over HTTPS

Чтобы пустить весь трафик DNS: от браузеров, web приложений, от самой ОС Windows через dnscrypt-proxy, изменим DNS настройку сетевого подключения, через которое выходим в интернет. Укажем в качестве IP адреса DNS-сервера — 127.0.0.1 (IP адрес dnscrypt-proxy).

В моем случае сетевое подключение, через которое выход в интернет, — это Беспроводная сеть. Выбираю Свойства:

DNS over HTTPS. Меняем DNS настройки сетевого подключения

В окне Свойства кликаю мышью по IP версии 4 (TCP/IPv4), нажимаю кнопку Свойства, далее выбираю Использовать следующие адреса DNS-серверов и ввожу 127.0.0.1:

DNS over HTTPS. IP адрес DNS сервера 127.0.0.1

Проверяем, как работает просмотр веб-страниц, загрузка файлов, веб-приложения, мессенджеры — все, что может использовать DNS.

Зарегистрируем dnscrypt-proxy как системную службу Windows. Системна служба Windows запускается при загрузке операционной системы и работает в фоновом режиме.

В окне командной строки, запущенной от имени администратора, нажимаем комбинацию клавиш Ctrl + C, чтобы остановить dnscrypt-proxy.

Чтобы зарегистрировать dnscrypt-proxy как системную службу Windows, в окне командной строки, запущенной от имени администратора, набираем команду:

.\dnscrypt-proxy.exe -service install
DNS over HTTPS. Регистрируем dnscrypt-proxy как системную службу Windows

Чтобы стартовать dnscrypt-proxy, набираем команду:

.\dnscrypt-proxy.exe -service start

Остановить dnscrypt-proxy:

.\dnscrypt-proxy.exe -service stop

Перезапустить dnscrypt-proxy, например, после изменения конфигурационного файла:

.\dnscrypt-proxy.exe -service restart

Отменить регистрацию dnscrypt-proxy в качестве системной службы Windows:

.\dnscrypt-proxy.exe -service uninstall

Чтобы проверить, работает ли разрешение DNS:

.\dnscrypt-proxy.exe -resolve example.com

Внесем минимальные правки в конфигурационный файл dnscrypt-proxy.toml. Для этого откроем этот конфигурационный файл как текстовый файл в любом текстовом редакторе Windows.

Чтобы использовать только DNS резолверы, реализующие протокол DNS over HTTPS, отключаем использование DNS резолверов, реализующих протокол DNSCrypt:

dnscrypt_servers = false

Проверить, если ли у вас подключение к IPv6, можно на сайте https://test-ipv6.com/. Даже если у вас нет подключения к IPv6, обязательно будут приложения, отправляющие DNS запросы для разрешения IPv6 адресов. Dnscrypt-proxy можно настроить на немедленный ответ: «нет IPv6 адресов», вместо отправки запроса на вышестоящий DNS резолвер и ожидания бесполезного ответа. Настройка немедленного ответа:

block_ipv6 = true

Сохраняем конфигурационный файл, перезапускаем dnscrypt-proxy.

Проверка работоспособности DNS over HTTPS

Сначала очистим кэш DNS. Запускаем командную строку от имени администратора и вводим команду:

ipconfig /flushdns

Кэш DNS очищен.

Чтобы проверить, что весь DNS трафик проходит через dnscrypt-proxy, остановим dnscrypt-proxy. И убедимся, что приложения, включая веб-браузеры, больше не могут разрешать DNS имена. Это и может означать, что весь DNS трафик проходил через dnscrypt-proxy.

Чтобы проверить работоспособность DNS over HTTPS, запустим захват трафика с помощью сетевого анализатора, например, с помощью Wireshark. И применим фильтр, чтобы нам отображались только захваченные DNS пакеты. Выждем время и убедимся в отсутствии DNS пакетов, т.е. в отсутствии исходящего незашифрованного трафика.

Вот захвачено 243 400 пакетов, а из них незашифрованных DNS пакетов — 0.

Отсутствует исходящий незашифрованный DNS трафик

DNS over HTTPS в Linux (Debian)

Установка dnscrypt-proxy

Скачиваем dnscrypt-proxy самой свежей версии c GitHub разработчиков: https://github.com/DNSCrypt/dnscrypt-proxy/releases. Ищем файл вида dnscrypt-proxy-linux_x86_64-*.tar.gz, скачиваем его и распаковываем, например, в директорию /opt/dnscrypt-proxy/ (на момент написания статьи самая свежая версия dnscrypt-proxy была 2.1.4):

wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.1.4/dnscrypt-proxy-linux_x86_64-2.1.4.tar.gz
mkdir -p /opt/dnscrypt-proxy/ && tar -C /opt/dnscrypt-proxy -xvzf dnscrypt-proxy-linux_x86_64-2.1.4.tar.gz

Переходим в директорию, в которую распаковали dnscrypt-proxy. В моем случае это будет команда:

cd /opt/dnscrypt-proxy/linux-x86_64/

Создаем конфигурационный файл dnscrypt-proxy.toml:

cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml

Проверяем, не слушает ли какой сервис нужный нам порт 53:

ss -lp 'sport = :domain'

ss — это утилита для вывода информации о сетевых сокетах.

-lp — флаг вывода подробной информации.

'sport = :domain' — это фильтр, который указывает на поиск сокетов с определенным исходящим портом. В нашем случае — это порт domain (порт 53), который обычно используется для DNS (Domain Name System).

Если порт 53 незанят, то вывод команды будет следующий:

Проверяем, занят ли порт 53

Если порт 53 занят, то сервис, занявший его, нужно останавливать и убирать из автозагрузки. В случае, если порт 53 занял systemd-resolved, то команды будет следующие:

systemctl stop systemd-resolved
systemctl disable systemd-resolved

Запускаем dnscrypt-proxy:

./dnscrypt-proxy
DNS over HTTPS. Запуск dnscrypt-proxy в Linux (Debian)

Dnscrypt-proxy запускается на IP адресе 127.0.0.1, на порту 53 и готовится получать запросы как по протоколу TCP, так и UDP (см. рисунок выше). Загружается список DNS резолверов с поддержкой шифрования, тестируется их доступность и скорость отклика.

Dnscrypt-proxy готов к работе:

DNS over HTTPS. Dnscrypt-proxy готов к работе в Linux (Debian)

Настройка DNS over HTTPS

Открываем новое окно терминала. Изменим системные настройки DNS. Сначала делаем резервную копию файла /etc/resolv.conf:

cp /etc/resolv.conf /etc/resolv.conf.backup

/etc/resolv.conf может быть как файлом, так и символической ссылкой. Поэтому, сначала его удалим командой:

rm -f /etc/resolv.conf

Затем создадим новый файл /etc/resolv.conf со следующим содержимым:

nameserver 127.0.0.1
options edns0

Выставим атрибут «только для чтения» (immutable) у файла /etc/resolv.conf. Этот атрибут не позволяет изменить файл даже привилегированным пользователям, защищает файл от случайного или нежелательного изменения.

chattr +i /etc/resolv.conf

Чтобы убрать атрибут «только для чтения», введите команду:

chattr -i /etc/resolv.conf

Проверим, как выполнится запрос на разрешение доменного имени adminkin.pro на IP адрес. Вводим команду:

/opt/dnscrypt-proxy/linux-x86_64/dnscrypt-proxy -resolve adminkin.pro

Доменное имя adminkin.pro разрешилось с помощью сервиса на 127.0.0.1:53, т.е. с помощью dnscrypt-proxy. IP адрес запрашиваемого домена успешно получен (77.222.56.16). Разрешение DNS работает!

Dnscrypt-proxy. Разрешение DNS имени в Linux

Проверяем, как работает просмотр веб-страниц, загрузка файлов и другое использование системы, где требуется разрешение имен DNS.

Например, получим содержимое главной страницы сайта https://adminkin.pro с помощью утилиты curl из командной строки:

apt install curl
curl https://adminkin.pro

Получили? Супер!

Теперь зарегистрируем dnscrypt-proxy как системную службу Linux. Системная служба запускается при загрузке системы и работает в фоновом режиме.

Остановим dnscrypt-proxy, нажав комбинацию клавиш Ctrl + C в окне терминала, где мы запустили dnscrypt-proxy.

Чтобы зарегистрировать 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.toml также, как мы это делали в Windows (Настройка конфигурационного файла dnscrypt-proxy.toml в Windows). И не забываем после изменения конфигурационного файла перезапустить dnscrypt-proxy.

Проверка работоспособности DNS over HTTPS

Проверим работоспособность DNS over HTTPS. Запустим захват трафика с помощью сетевого анализатора tcpdump:

apt install tcpdump
tcpdump -n dst port 53

Такая команда позволит захватывать и отображать только пакеты, проходящие через порт 53. Так мы отловим незашифрованные DNS пакеты, если они остались.

-n указывает tcpdump не выполнять обратное разрешение DNS для IP-адресов и портов, а оставить их в числовом формате.

В новом окне терминала запустим команду на получение главной страницы сайта https://adminkin.pro с помощью утилиты curl:

curl https://adminkin.pro

Ура! Незашифрованных DNS пакетов нет:

DNS over HTTPS работает. Незашифрованных DNS пакетов нет

Если остановить dnscrypt-proxy и восстановить из бекапа файл /etc/resolv.conf, то картина будет другая:

Незашифрованные DNS пакеты

Выводы

Когда вы в адресной строке браузера набираете доменное имя сайта, ваша система отправляет запрос, что вы ищете IP адрес такого-то домена. И в этот момент, например, ваш интернет-провайдер может зарегистрировать у себя, к какому домену вы подключаетесь. DNS over HTTPS делает этот надзор невозможным, а анонимность и конфиденциальность пользователя в интернете — возможными. А благодаря данной статье настройка DNS over HTTPS тоже делается возможной.

Очень жду ваши вопросы в комментариях под статьей!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Трансляция экрана windows 10 на телевизор samsung
  • Microsoft office 2016 preview для windows 7
  • Как выйти из директории в командной строке windows
  • Rufus долго создает загрузочную флешку windows 10
  • Лучший просмотрщик видео для windows 10