dnsx

Reconnaissance v1.2.3 · 10.12.2025 активный

Быстрый многофункциональный DNS-резолвер от ProjectDiscovery. Позволяет делать массовые DNS-запросы с поддержкой wildcard-фильтрации, резолвинга по нескольким записям (A, AAAA, CNAME, MX, NS, TXT, PTR, SOA), брутфорса субдоменов и цепочки резолверов. Незаменим при subdomain enumeration в связке с subfinder/amass.

v1.2.3
10.12.2025 current
Добавлен 10.06.2026 · Обновлён 07.07.2026 · Reconnaissance
Установка
go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest

# или через apt
apt install dnsx

# Примеры:
cat domains.txt | dnsx -a -resp
dnsx -d example.com -w wordlist.txt -o subdomains.txt
переведено ИИ

dnsx

Быстрый и многоцелевой DNS-инструмент, предназначенный для выполнения DNS-запросов

ВозможностиУстановкаИспользованиеЗапуск dnsxФильтр подстановочных знаковЗаметкиПрисоединяйтесь к Discord


dnsx — это быстрый и многоцелевой DNS-инструмент, предназначенный для выполнения различных проверок через библиотеку retryabledns. Он поддерживает множественные DNS-запросы, пользовательские резолверы, фильтрацию DNS-подстановочных знаков (wildcard), как в shuffledns, и многое другое.

Возможности

dnsx

  • Простой и удобный утилита для запроса DNS-записей.
  • Поддержка запросов A, AAAA, CNAME, PTR, NS, MX, TXT, SRV, SOA
  • Поддержка DNS резолвинга / брутфорса
  • Поддержка пользовательского ввода резолвера
  • Поддержка нескольких форматов резолверов (TCP/UDP/DOH/DOT)
  • Поддержка stdin и stdout
  • Автоматическая поддержка обработки подстановочных знаков

Инструкции по установке

dnsx требует go1.21 для успешной установки. Запустите следующую команду для установки последней версии:

go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest

Использование

dnsx -h

Это отобразит справку по инструменту. Вот все поддерживаемые параметры.

ВВОД:
   -l, -list string      список поддоменов/хостов для резолвинга (файл или stdin)
   -d, -domain string    список доменов для брутфорса (файл или через запятую, или stdin)
   -w, -wordlist string  список слов для брутфорса (файл или через запятую, или stdin)

ЗАПРОС:
   -a                       запрос A-записи (по умолчанию)
   -aaaa                    запрос AAAA-записи
   -cname                   запрос CNAME-записи
   -ns                      запрос NS-записи
   -txt                     запрос TXT-записи
   -srv                     запрос SRV-записи
   -ptr                     запрос PTR-записи
   -mx                      запрос MX-записи
   -soa                     запрос SOA-записи
   -any                     запрос ANY-записи
   -axfr                    запрос AXFR
   -caa                     запрос CAA-записи
   -recon                   запрос всех DNS-записей (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa)
   -e, -exclude-type value  тип DNS-запроса для исключения (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa) (по умолчанию нет)

ФИЛЬТР:
   -re, -resp          отображать DNS-ответ
   -ro, -resp-only     отображать только DNS-ответ
   -rc, -rcode string  фильтровать результат по коду статуса DNS (например, -rcode noerror,servfail,refused)

ПРОВЕРКА:
   -cdn  отображать имя CDN
   -asn  отображать ASN-информацию хоста

ОГРАНИЧЕНИЕ ЧАСТОТЫ:
   -t, -threads int      количество используемых одновременных потоков (по умолчанию 100)
   -rl, -rate-limit int  количество DNS-запросов в секунду (по умолчанию отключено) (по умолчанию -1)

ОБНОВЛЕНИЕ:
   -up, -update                 обновить dnsx до последней версии
   -duc, -disable-update-check  отключить автоматическую проверку обновлений dnsx

ВЫВОД:
   -o, -output string  файл для записи вывода
   -j, -json           записывать вывод в формате JSONL(ines)
   -omit-raw, -or      опускать необработанный DNS-ответ в выводе jsonl

ОТЛАДКА:
   -hc, -health-check  запустить диагностическую проверку
   -silent             отображать только результаты в выводе
   -v, -verbose        отображать подробный вывод
   -raw, -debug        отображать необработанный DNS-ответ
   -stats              отображать статистику выполняемого сканирования
   -version            отображать версию dnsx
   -nc, -no-color      отключить цвет в выводе

ОПТИМИЗАЦИЯ:
   -retry int                количество попыток DNS (должно быть не менее 1) (по умолчанию 2)
   -hf, -hostsfile           использовать системный файл хостов
   -trace                    выполнять трассировку DNS
   -trace-max-recursion int  Максимальная рекурсия для трассировки DNS (по умолчанию 32767)
   -resume                   возобновить существующее сканирование
   -stream                   потоковый режим (список слов, подстановочные знаки, статистика и остановка/возобновление будут отключены)
   -timeout value            максимальное время ожидания завершения DNS-запроса (по умолчанию 3s)

КОНФИГУРАЦИИ:
   -auth                         настроить API-ключ projectdiscovery cloud (pdcp) (по умолчанию true)
   -r, -resolver string          список резолверов для использования (файл или через запятую)
   -wt, -wildcard-threshold int  порог фильтрации подстановочных знаков (по умолчанию 5)
   -auto-wildcard                автоматически определять домены с подстановочными знаками для фильтрации
   -wd, -wildcard-domain string  имя домена для ручной фильтрации подстановочных знаков (взаимоисключающий с -auto-wildcard; другие флаги будут игнорироваться - рекомендуется вывод в JSON)

Запуск dnsx

Резолвинг DNS

Фильтрация активных имен хостов из списка пассивных поддоменов, полученных из различных источников:

subfinder -silent -d hackerone.com | dnsx -silent

a.ns.hackerone.com
www.hackerone.com
api.hackerone.com
docs.hackerone.com
mta-sts.managed.hackerone.com
mta-sts.hackerone.com
resources.hackerone.com
b.ns.hackerone.com
mta-sts.forwarding.hackerone.com
events.hackerone.com
support.hackerone.com

Вывод A-записей для заданного списка поддоменов:

subfinder -silent -d hackerone.com | dnsx -silent -a -resp

www.hackerone.com [104.16.100.52]
www.hackerone.com [104.16.99.52]
hackerone.com [104.16.99.52]
hackerone.com [104.16.100.52]
api.hackerone.com [104.16.99.52]
api.hackerone.com [104.16.100.52]
mta-sts.forwarding.hackerone.com [185.199.108.153]
mta-sts.forwarding.hackerone.com [185.199.109.153]
mta-sts.forwarding.hackerone.com [185.199.110.153]
mta-sts.forwarding.hackerone.com [185.199.111.153]
a.ns.hackerone.com [162.159.0.31]
resources.hackerone.com [52.60.160.16]
resources.hackerone.com [3.98.63.202]
resources.hackerone.com [52.60.165.183]
resources.hackerone.com [read.uberflip.com]
mta-sts.hackerone.com [185.199.110.153]
mta-sts.hackerone.com [185.199.111.153]
mta-sts.hackerone.com [185.199.109.153]
mta-sts.hackerone.com [185.199.108.153]
gslink.hackerone.com [13.35.210.17]
gslink.hackerone.com [13.35.210.38]
gslink.hackerone.com [13.35.210.83]
gslink.hackerone.com [13.35.210.19]
b.ns.hackerone.com [162.159.1.31]
docs.hackerone.com [185.199.109.153]
docs.hackerone.com [185.199.110.153]
docs.hackerone.com [185.199.111.153]
docs.hackerone.com [185.199.108.153]
support.hackerone.com [104.16.51.111]
support.hackerone.com [104.16.53.111]
mta-sts.managed.hackerone.com [185.199.108.153]
mta-sts.managed.hackerone.com [185.199.109.153]
mta-sts.managed.hackerone.com [185.199.110.153]
mta-sts.managed.hackerone.com [185.199.111.153]

Извлечение A-записей для заданного списка поддоменов:

subfinder -silent -d hackerone.com | dnsx -silent -a -resp-only

104.16.99.52
104.16.100.52
162.159.1.31
104.16.99.52
104.16.100.52
185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153
104.16.99.52
104.16.100.52
104.16.51.111
104.16.53.111
185.199.108.153
185.199.111.153
185.199.110.153
185.199.111.153

Извлечение CNAME-записей для заданного списка поддоменов:

subfinder -silent -d hackerone.com | dnsx -silent -cname -resp

support.hackerone.com [hackerone.zendesk.com]
resources.hackerone.com [read.uberflip.com]
mta-sts.hackerone.com [hacker0x01.github.io]
mta-sts.forwarding.hackerone.com [hacker0x01.github.io]
events.hackerone.com [whitelabel.bigmarker.com]

Извлечение ASN-записей для заданного списка поддоменов:

subfinder -silent -d hackerone.com | dnsx -silent  -asn

b.ns.hackerone.com [AS13335, CLOUDFLARENET, US]
a.ns.hackerone.com [AS13335, CLOUDFLARENET, US]
hackerone.com [AS13335, CLOUDFLARENET, US]
www.hackerone.com [AS13335, CLOUDFLARENET, US]
api.hackerone.com [AS13335, CLOUDFLARENET, US]
support.hackerone.com [AS13335, CLOUDFLARENET, US]

Проверка с использованием кодов статуса DNS на заданном списке (под)доменов:

subfinder -silent -d hackerone.com | dnsx -silent -rcode noerror,servfail,refused

ns.hackerone.com [NOERROR]
a.ns.hackerone.com [NOERROR]
b.ns.hackerone.com [NOERROR]
support.hackerone.com [NOERROR]
resources.hackerone.com [NOERROR]
mta-sts.hackerone.com [NOERROR]
www.hackerone.com [NOERROR]
mta-sts.forwarding.hackerone.com [NOERROR]
docs.hackerone.com [NOERROR]

Извлечение поддоменов из заданного сетевого диапазона с помощью PTR-запроса:

echo 173.0.84.0/24 | dnsx -silent -resp-only -ptr

cors.api.paypal.com
trinityadminauth.paypal.com
cld-edge-origin-api.paypal.com
appmanagement.paypal.com
svcs.paypal.com
trinitypie-serv.paypal.com
ppn.paypal.com
pointofsale-new.paypal.com
pointofsale.paypal.com
slc-a-origin-pointofsale.paypal.com
fpdbs.paypal.com

Извлечение поддоменов из заданного ASN с помощью PTR-запроса:

echo AS17012 | dnsx -silent -resp-only -ptr 

apiagw-a.paypal.com
notify.paypal.com
adnormserv-slc-a.paypal.com
a.sandbox.paypal.com
apps2.paypal-labs.com
pilot-payflowpro.paypal.com
www.paypallabs.com
paypal-portal.com
micropayments.paypal-labs.com
minicart.paypal-labs.com

DNS-брутфорс

Брутфорс поддоменов для заданного домена или списка доменов с использованием флагов d и w:

dnsx -silent -d facebook.com -w dns_worldlist.txt

blog.facebook.com
booking.facebook.com
api.facebook.com
analytics.facebook.com
beta.facebook.com
apollo.facebook.com
ads.facebook.com
box.facebook.com
alpha.facebook.com
apps.facebook.com
connect.facebook.com
c.facebook.com
careers.facebook.com
code.facebook.com

Брутфорс целевых поддоменов с использованием одного или нескольких ключевых слов в качестве ввода, так как флаги d или w поддерживают файл или ключевые слова через запятую:

dnsx -silent -d domains.txt -w jira,grafana,jenkins

grafana.1688.com
grafana.8x8.vc
grafana.airmap.com
grafana.aerius.nl
jenkins.1688.com
jenkins.airbnb.app
jenkins.airmap.com
jenkins.ahn.nl
jenkins.achmea.nl
jira.amocrm.com
jira.amexgbt.com
jira.amitree.com
jira.arrival.com
jira.atlassian.net
jira.atlassian.com

Значения принимаются из stdin для всех типов ввода (-list, -domain, -wordlist). Флаг -list по умолчанию использует stdin, но то же самое можно сделать для других типов ввода, добавив - (дефис) в качестве параметра:

cat domains.txt | dnsx -silent -w jira,grafana,jenkins -d -

grafana.1688.com
grafana.8x8.vc
grafana.airmap.com
grafana.aerius.nl
jenkins.1688.com
jenkins.airbnb.app
jenkins.airmap.com
jenkins.ahn.nl
jenkins.achmea.nl
jira.amocrm.com
jira.amexgbt.com
jira.amitree.com
jira.arrival.com
jira.atlassian.net
jira.atlassian.com

DNS-брутфорс со списком слов на основе плейсхолдеров

$ cat tld.txt

com
by
de
be
al
bi
cg
dj
bs
dnsx -d google.FUZZ -w tld.txt -resp

      _             __  __
   __| | _ __   ___ \ \/ /
  / _' || '_ \ / __| \  / 

 | (_| || | | |\__ \ /  \ 
  \__,_||_| |_||___//_/\_\ v1.1.2

      projectdiscovery.io

google.de [142.250.194.99] 
google.com [142.250.76.206] 
google.be [172.217.27.163] 
google.bs [142.251.42.35] 
google.bi [216.58.196.67] 
google.al [216.58.196.68] 
google.by [142.250.195.4] 
google.cg [142.250.183.131] 
google.dj [142.250.192.3] 

Фильтрация подстановочных знаков (Wildcard)

Особая возможность dnsx — обработка многоуровневых DNS-подстановочных знаков с очень небольшим количеством DNS-запросов. Иногда все поддомены разрешаются, что приводит к большому количеству мусора в выводе. dnsx решает эту проблему, отслеживая количество поддоменов, указывающих на определенный IP-адрес. Если количество превышает определенный порог, инструмент итеративно проверяет наличие подстановочных знаков на всех уровнях хостов для этого IP-адреса.

dnsx -l subdomain_list.txt -wd airbnb.com -o output.txt

Для автоматического обнаружения и фильтрации DNS-подстановочных знаков сразу для нескольких доменов в одном запуске с сохранением выбранного режима вывода:

dnsx -l subdomain_list.txt -auto-wildcard -o output.txt

-auto-wildcard и -wd / -wildcard-domain являются взаимоисключающими. Используйте -wd, когда нужен существующий ручной процесс фильтрации подстановочных знаков для одного домена; используйте -auto-wildcard, когда нужно, чтобы dnsx автоматически определял корневые домены с подстановочными знаками во входных данных, содержащих смешанные домены.


Dnsx как библиотека

Возможно использовать библиотеку напрямую в ваших Go-программах. Следующие фрагменты кода являются примерами использования в Go-программах. Пожалуйста, обратитесь сюда для подробной информации о конфигурации и использовании пакета.

package main

import (
    "fmt"

    "github.com/projectdiscovery/dnsx/libs/dnsx"
)

func main() {
    // Создание DNS-резолвера с параметрами по умолчанию
    dnsClient, err := dnsx.New(dnsx.DefaultOptions)
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }

    // DNS A-запрос, возвращает соответствующие IP-адреса
    result, err := dnsClient.Lookup("hackerone.com")
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    for idx, msg := range result {
        fmt.Printf("%d: %s\n", idx+1, msg)
    }

    // Запрос
    rawResp, err := dnsClient.QueryOne("hackerone.com")
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    fmt.Printf("rawResp: %v\n", rawResp)

    jsonStr, err := rawResp.JSON()
    if err != nil {
        fmt.Printf("err: %v\n", err)
        return
    }
    fmt.Println(jsonStr)

    return
}

📋 Заметки

  • По умолчанию dnsx проверяет A-запись.
  • По умолчанию dnsx использует резолверы Google, Cloudflare, Quad9 (ссылка).
  • Пользовательский список резолверов можно загрузить с помощью флага r.
  • -auto-wildcard автоматически определяет домены с подстановочными знаками среди нескольких корневых доменов, доступных для регистрации, за один запуск.
  • Имя домена (-wd) требуется только для ручной фильтрации подстановочных знаков и не может использоваться вместе с -auto-wildcard.
  • При использовании ручной фильтрации подстановочных знаков с -wd другие флаги DNS-записей игнорируются, рекомендуется вывод в формате JSON.
  • Резолвинг DNS (l) и DNS-брутфорс (w) не могут использоваться одновременно.
  • Операторы VPN, как правило, фильтрируют высокий DNS/UDP-трафик, поэтому инструмент может испытывать потерю пакетов (например, Mullvad VPN). Проверьте возможное решение).

dnsx сделан с 🖤 командой projectdiscovery.

Комментарии
Войдите, чтобы оставить комментарий