Netsniff-ng
Netsniff-ng — бесплатный анализатор и набор сетевых инструментов для Linux, изначально созданный Даниэлем Боркманном. Повышение производительности достигается за счёт механизмов передачи пакетов без копирования (zero-copy) — RX_RING, TX_RING[1], благодаря чему ядро Linux не перемещает пакеты из пространства ядра в пользовательское пространство через системные вызовы (например, recvmsg())[2]. Начиная с версии 1.0.0, libpcap для Linux тоже поддерживает механизм zero-copy для захвата пакетов (RX_RING), поэтому программы, использующие libpcap в Linux, также используют этот механизм.
Общие сведения
| Netsniff-ng | |
|---|---|
| Тип | инженерия сетей, управление сетью, безопасность компьютеров |
| Автор | Daniel Borkmann |
| Разработчики | Daniel Borkmann, Tobias Klauser, Herbert Haas, Emmanuel Roullit, Markus Amend и многие другие |
| Написана на | C |
| Операционная система | Linux |
| Языки интерфейса | английский |
| Первый выпуск | декабрь 2009 |
| Последняя версия | 0.6.8 (11 января 2021) |
| Репозиторий | github.com/netsniff-ng/n… |
| Лицензия | GPLv2 |
| Сайт | netsniff-ng.org |
Возможности
Netsniff-ng изначально создавался как сетевой анализатор пакетов («сниффер») с поддержкой интерфейса пакетного обмена ядра Linux (mmap) для сетевых пакетов, позднее в него была добавлена и другая функциональность, что, по аналогии с iproute2, сделало его полноценным набором утилит. Благодаря zero-copy-интерфейсу ядра, netsniff-ng обеспечивает эффективную обработку пакетов даже на стандартном аппаратном обеспечении: например, утилита trafgen обеспечивает скорость передачи на уровне Gigabit Ethernet[3][4]. Netsniff-ng не зависит от libpcap. Для работы не требуется применение специальных патчей к операционной системе. Netsniff-ng распространяется как свободное программное обеспечение под лицензией GNU GPL версии 2[5].
В состав набора входят сетевой анализатор, средство захвата и воспроизведения пакетов, генератор трафика с линией пропускания, многопользовательский зашифрованный IP-туннель, компилятор фильтра пакетов Berkeley, инструменты для сетевой статистики, трассировка маршрутов автономных систем («AS») и другое[6]:
- netsniff-ng — анализатор пакетов с поддержкой zero-copy, средство захвата и воспроизведения; поддерживает файловый формат pcap
- trafgen — генератор сетевого трафика на основе zero-copy
- mausezahn — генератор и анализатор пакетов для аппаратных и программных инструментов (CLI-интерфейс совместим с Cisco)
- bpfc — компилятор фильтров пакетов Berkeley
- ifpps — инструмент top-like для статистики сетевого трафика ядра Linux
- flowtop — программа для отслеживания сетевых соединений с Geo-IP-информацией (на основе netfilter)
- curvetun — легковесный многопользовательский IP-туннель с криптографией на эллиптических кривых
- astraceroute — трассировщик маршрутов автономных систем с выводом Geo-IP
Пакеты netsniff-ng доступны во всех основных дистрибутивах Linux, включая Debian[7] и Fedora Linux. Входит в состав Xplico[8], дистрибутива GRML, SecurityOnion[9] и других сетевых форензик-наборов[10]. Netsniff-ng также используется в академических исследованиях[11][12].
Примеры команд netsniff-ng
В примерах предполагается, что используется сетевая карта eth0. Все программы в пакете netsniff-ng поддерживают длинные ключи командной строки, такие как—in (-i), --out (-o), --dev (-d).
- Географическая трассировка маршрута TCP SYN для сайта:
astraceroute -d eth0 -N -S -H <host, например netsniff-ng.org>
- Получение сетевой статистики ядра Linux в промискуитетном режиме:
ifpps -d eth0 -p
- Генерация высокоскоростного сетевого трафика; конфиг trafgen.txf указывает параметры пакета:
trafgen -d eth0 -c trafgen.txf
- Компиляция фильтра пакетов Berkeley (например, fubar.bpf):
bpfc fubar.bpf
- Мониторинг активных TCP-соединений (выводит протокол, имя приложения, город и страну источника/получателя):
flowtop
- Выгрузка сетевого трафика в файл формата pcap:
netsniff-ng -i eth0 -o dump.pcap -s -b 0
Платформы и совместимость
Netsniff-ng работает только под управлением Linux. Разработчики отказались от портирования для Microsoft Windows[13].
Примечания
Ссылки
- http://netsniff-ng.org/ — официальный сайт (англ.)
- http://netsniff-ng.org/faq.html — раздел часто задаваемых вопросов (англ.)
- https://github.com/netsniff-ng/netsniff-ng — репозиторий на GitHub (англ.)
- https://web.archive.org/web/20120515195011/http://news.gmane.org/gmane.linux.network.netsniff-ng — архивация рассылки netsniff-ng (англ.)
- — доклад DevConf: packet mmap(), BPF и набор инструментов netsniff-ng (англ.)
- https://web.archive.org/web/20160303/http://video.dkuug.dk/media/linuxs-packet-mmap2-bpf-and-the-netsniff-ng-toolki?id=75 — выступление на OpenSourceDays: packet sockets, BPF, netsniff-ng (англ.)
- https://linux.die.net/man/8/netsniff-ng — раздел man 8: описание для администрирования и привилегированных команд в Linux