- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF141:IPTState
Материал из Linuxformat.
Содержание |
IPTState
- IPTState знает, кто к вам подключился, и откуда, и какой объем данных шлет. Бен Мартин поможет разобраться, куда девалась ваша полоса пропускания.
Выяснить, кто спалил ваши драгоценные циклы CPU, всегда можно командой top. А вот IPTState подскажет, куда уходит большинство ваших сетевых пакетов, и вы поймете, кто сжирает вашу полосу пропускания.
Команда ipstate использует интерфейс отслеживания соединений (libnetfilter_conntrack) в ядре Linux, чтобы получить детальную информацию о сетевых пакетах, проходящих через вашу систему. На машине Fedora 13 для вас заранее упакованы и библиотека conntrack, и IPTstate, так что вы можете начать с команды
yum install iptstate
В основе своей, IPTState – консольная программа, выводящая прокручиваемый список ваших соединений и позволяющая фильтровать и сортировать этот список. Вам незачем указывать сетевой интерфейс для мониторинга: IPTState без затей следит за вообще всем IP-трафиком, проходящим через ваш компьютер.
Программа IPTState покажет все ваши текущие соединения: их источники, конечные IP-адреса и порты, используемые протоколы (TCP/UDP и т. д.), состояния соединений и сроки их жизни. Стоит упомянуть, что по умолчанию применяется сортировка по исходным IP-адресам.
Выжать максимум из IPTState
Одно из требований – окно вашего терминала, где отображаются результаты работы IPTState, должно быть не менее 72 символов в ширину. В наше время мониторы обычно много шире обычных 80 символов. Тогда вы получите от IPTState гораздо больше информации. Как намекает заголовок меню, по клавише h выведется список горячих клавиш с описанием выполняемых ими действий. Клавиша C переключает режим отображения отосланной информации – в байтах или в пакетах. Если окно терминала слишком узкое, IPTState сообщит об этом и вернется к нормальному режиму.
Клавиши B и Shift+B циклически прокручивают список, отсортированный по видимым столбцам. Жмите B, чтобы сортировать по следующему столбцу; а для сортировки по предыдущему жмите Shift+B. Клавиша R меняет порядок сортировки, который сохраняется при нажатии клавиш B и Shift+B. Следовательно, если вы сортировали по столбцу исходного IP-адреса в обратном порядке, а затем дважды нажали клавишу B, чтобы сортировать по конечному IP-адресу, порядок снова будет обратным. Нажатия клавиши B позволяют сортировать только по видимым столбцам, и чтобы сортировать по байтам или пакетам для конкретного соединения, отобразите соответствующие столбцы нажатием Shift+C.
Многие из клавиатурных команд, используемых интерактивно, работают и в командной строке. Например, нажатию Shift+C для показа счетчиков байтов или пакетов соответствует запуск IPTState с ключом -C.
Порядок сортировки можно установить по умолчанию с помощью опции командной строки –sort. Например, чтобы сортировать по количеству переданных байтов, используйте —sort b. Отметим, что для сортировки по байтам или пакетам необходимо явно указать -C для отображения нужных столбцов.
Фильтруй — не хочу
Более того, можно фильтровать отображаемую информацию, отображая только конкретные исходные и/или конечные IP-адреса, и исходные и/или конечные порты. Можно также удалить все соединения, использующие локальный хост (loopback). Фильтры исходных IP-адреса и порта устанавливаются клавишами S и Shift+S, и, соответственно, фильтры конечных IP-адреса и порта задаются нажатием клавиш D и Shift+D. Клавиша F включает и выключает режим отображения соединений через адрес обратной связи (loopback-адрес).
К сожалению, фильтрация по IP-адресам не принимает имен DNS, масок подсетей, спецификаций CIDR и регулярных выражений. Фильтрация по портам тоже пока позволяет указать лишь один порт. Если применяется сложный протокол, использующий множество портов, эта возможность пригодится для просмотра трафика от конкретного сервиса.
Клавиша L или опция командной строки -l велит IPTState пытаться преобразовать на экранном отображении IP-адреса в имена хостов. По умолчанию эта опция отключена. В частной сети ее включение, вероятно, сгенерировало бы поток запросов DNS по частным IP-адресам. Например, адреса в составе блока 192 – 168 не должны маршрутизироваться в Internet.
Хотя пользователи ITPState могут при желании видеть имена хостов, им нельзя отображать записи в файле /etc/services, соответствующие номерам портов.
Еще, пожалуйста
Воспользуйтесь опцией командной строки -1, чтобы вывести текущие соединения и выйти. Тогда вы сможете перенаправить вывод в Grep или отсортировать и отформатировать его посвоему.
Общие количества байтов и пакетов, отображаемые IPTState, показываются для полного срока жизни соединений. Одна из функций, способная упростить отладку выбросов в сети – просмотр суммарных значений за конкретный период времени: например, только за последние 20 секунд. Обратите внимание, что хотя клавишей R можно менять частоту обновления экранного отображения, это не отменяет того факта, что показатели счетчиков трафика отображаются для полного срока жизни соединений.
Тем не менее, опции фильтрации и сортировки IPTState вместе образуют мощный инструмент для просмотра и исследования текущих потоков трафика в вашей сети. Наличие пакетов для множества дистрибутивов Linux плюс не слишком большой шлейф зависимостей делают IPTState очень удобным инструментом, который следует иметь в виду, если нужно выяснить, кто или что набросился на вашу полосу пропускания.
Netstat
Если у вас есть соединение с конкретным портом, просмотрите файл /etc/services, чтобы увидеть, предусмотрен ли для этого порта какой-нибудь известный сервис. Например, общеизвестно, что порт 22 по умолчанию прослушивается сервером SSH. Чтобы определить, какой процесс в данный момент использует порт, воспользуйтесь командой netstat. Опция командной строки -n выводит номера портов, опция -a отображает все соединения, а опция -p указывает и идентификатор соответствующего процесса ID. Например, попробуйте ввести следующую команду:
netstat -nap | grep “:22\s”
В ответ команда должна вывести нечто вроде
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2957/sshd
сообщив, что sshd использует порт 22.
CIDRs
Примером указания фильтра с помощью CIDR (Classless Inter-Domain Routing) может служить 192.168.1.0/24, где 24 означает, что при наложении фильтра используются первые 24 бита IP-адреса. Следовательно, все адреса, начинающиеся с 192.168.1, будут совпадать с фильтром. CIDR реально полезно для указания адресов виртуальных частных сетей.