У меня есть Linux-сервер, действующий как маршрутизатор между многими клиентами и Интернетом, и мне нужно получить некоторую статистику использования: мне нужно зарегистрировать, какие внутренние IP-адреса обращаются к внешним адресам.
Я использую это, чтобы проверить, какие внутренние IP-адреса имеют доступ к каким внешним IP-адресам:
tcpdump -n -i any port 80 or port 443 and src net 192.168.101.0/24
(Я использую -n и ищу позже)
Тем не менее, это также показывает мне множество дополнений, касающихся установления связи TCP и управления окнами. Можно ли показать только фактический HTTP-запрос?
Я нашел несколько подходов, большинство из которых включают grep
пинг для GET\|POST
, но при этом удаляются IP-адреса, что в первую очередь меня волнует.
Редактировать:
tcp[13] & 2!=0'
помогите, насколько я понимаю, что бы показывать только начальный SYN?Короче да. Использовать httpry
(и Вот). Это открытый исходный код, и он основан на libpcap
и очень близко подходит к тому, что вам нужно, поэтому потребует лишь небольшой настройки.
Если вы ограничены только родными инструментами, я бы подумал, что у вас есть доступный perl. Возможно, вы могли бы использовать этот скрипт на perl. называется chaosreader
в противном случае вы могли бы захватить трафик и проанализировать его с помощью сценария perl в другой системе
Вы можете использовать инструмент захвата консоли wireharks tshark вот несколько примеров захвата один конкретно - захватить только http получает
Лично я использую urlsnarf из найденных инструментов dsniff Вот
(обратите внимание, с помощью любого из этих инструментов, хотя вы получите только http ... https будет защищен, если вы не выполняете расшифровку посередине. вы все равно увидите хосты, с которыми разговаривают клиенты, но не полный URL-адрес, к которому они обращаются)
Вы также можете изучить инструмент под названием ntop, который дает очень подробные возможности отчетности по трафику.