Получить общедоступные IP-адреса доступных веб-страниц?

Я хотел бы иметь возможность получать публичные IP-адреса на сайтах, которые я просматриваю на своем ПК, таким образом, как:

www.google.es - public IP1 www.cdn.facebook.com - public IP2 

и так далее. Я думаю, что это должно быть сделано путем регистрации DNS-трафика, поэтому я попытался использовать wirehark как часть решения, которое я нашел в другом ответе:

 tshark -f "udp port 53" -Y "dns.qry.type == A and dns.flags.response == 0" 

Однако, похоже, это показывает только соединения между моим маршрутизатором и моей машиной, список полон пар, таких как:

 192.168.200.250 -> 192.168.200.1 192.168.200.1 -> 192.168.200.250` 

Вы можете установить DNSmasq локально и добавить эту опцию в log-facility=/var/log/dnsmasq.log log-queries log-facility=/var/log/dnsmasq.log затем настроить вашу систему на использование 127.0.0.1 или ::1 как DNS-резольвер будет работать для меня.

Затем извлеките данные как любой желаемый формат и сделайте то, что вы хотите с ним

или установите Bind локально. Большинство дистрибутивов по умолчанию Bind будут неавтоматизированы только для кэширования и добавят блок конфигурации logging {} (как описано в Bind 9 Configuration Reference ).

Этот маленький скрипт может предоставить результаты, которые вы ищете. Я избегал поиска в 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, к которому вы обращались, и именем, возвращаемым в результатах.