Насколько я понимаю, чтобы сделать это навсегда, вы просто складываете все адреса вместе, например:
Address=192.168.59.1/24 192.168.1.5/24
Вы можете установить DNSmasq локально и добавить эту опцию в файл конфигурации log-feature = / var / log / dnsmasq.log
log-questions
, затем настроить вашу систему на использование 127.0 .0.1
или :: 1
в качестве преобразователя DNS его работа для меня.
Затем извлеките данные в любом формате и делайте с ними все, что захотите
или установите Bind локально. Большинство дистрибутивов, устанавливаемых по умолчанию для Bind, будут выполнять только неавторитативное кэширование и добавить блок конфигурации logging {}
(как описано в Справочнике по настройке Bind 9 ).
Этот небольшой скрипт может дать желаемый результат. Я избегал DNS-запросов, вместо этого предпочитая использовать фактические HTTP-запросы (порты 80 / http и 443 / https).
tshark -nlp -f '(port 80 or port 443) and (tcp[tcpflags] & (tcp-syn|tcp-ack)) == (tcp-syn|tcp-ack)' 2>/dev/null |
stdbuf -oL awk '{print $3}' |
while IFS= read -r ip
do
name=$(dig +short -x "$ip")
printf "%-16s%s\n" "$ip" "${name:-$ip}"
done |
uniq
Пример вывода
212.58.244.27 bbc-vip146.telhc.bbc.co.uk.
78.129.164.123 free.hands.com.
195.20.242.89 195.20.242.89
Этот код будет генерировать результаты только для HTTP-запросов, тогда как поиск по DNS-запросам найдет все и вся. Однако имейте в виду, что он генерирует имена из поиска rDNS по IP-адресу, поэтому не всегда существует прямое соответствие между именем хоста HTTP, к которому вы обращались, и именем, возвращаемым в результатах.