- •2. Версии iPv4 и iPv6
- •3. Пакеты и их инкапсуляция
- •4. Адресация пакетов
- •Глава 14. Сети tcp/ip 505
- •6. Cidr: протокол бесклассовой междоменной маршрутизации
- •7. Частные адреса и система nat
- •8. Маршрутизация
- •9. Таблицы маршрутизации
- •11. Dhcp: протокол динамического конфигурирования узлов
- •10. Arp: протокол преобразования адресов
- •12. Ррр: протокол двухточечного соединения
- •13. Команда ifconfig: конфигурирование сетевых интерфейсов
- •14. Демоны маршрутизации
- •Глава 15. Маршрутизация 571
- •15. Основные протоколы маршрутизации
- •Глава 15. Маршрутизация 567
- •16. Технология Ethernet: сетевая панацея
- •17. Беспроводной стандарт: локальная сеть для кочевников
- •18. Dsl и кабельные модемы: “последняя миля” 8
- •Глава 16. Сетевые аппаратные средства 593
- •20. Основные задачи системы dns
- •Глава 18. Сетевой протокол Network File System 737
- •22. Серверная часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 745
- •23. Клиентская часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 753
- •24. Ldap: упрощенный протокол доступа к каталогам
- •25. Структура данных ldap
- •Глава 19. Совместное использование системных файлов 775
- •26. Nis: Сетевая информационная служба
- •27. Системы электронной почты
- •Глава 20. Электронная почта 789
- •28. Протоколы smtp, pop3.
- •30. Почтовые серверы
- •Часть II. Работа в сети
- •31. Cпам и вредоносные программы
- •Глава 20. Электронная почта 813 ip range
- •32. Фильтрация почты
- •33. Почтовый агент sendmail
- •34. Почтовый агент Postfix
- •Глава 20. Электронная почта 877
- •35. Поиск неисправностей в сетях
- •Глава 21. Управление сетями 911
- •36. Kоманда traceroute: трассировка ip-пакетов
- •Глава 21. Управление сетями 915
- •37. Команда netstat: получение информации о состоянии сети
- •Глава 21. Управление сетями 919
- •39. Snmp: простой протокол управления сетями
- •40. Протокол NetFlow: мониторинг соединений
- •Глава 21. Управление сетями 939
- •41. Ключевые аспекты безопасности
- •Глава 22. Безопасность 951
- •42. Пароли и учетные записи пользователей
- •43. Эффективное использование команды chroot
- •44. Команда nmap: сканирование сетевых портов
- •45. Bro: программная система для распознавания вторжения в сеть
- •Глава 22. Безопасность 967
- •46. Мандатное управление доступом
- •47. Ssh: безопасная оболочка
- •48. Брандмауэры
- •Глава 22. Безопасность 983
- •49. Функциональный стек lamp
- •50. Обнаружение ресурсов в сети веб
- •Глава 23. Веб-хостинг 1003
- •51. Принцип работы http
- •52. Конфигурирование сервера Apache
- •Глава 23. Веб-хостинг 1011
- •53. Виртуальные интерфейсы
- •54. Протокол Secure Sockets Layes
- •Глава 23. Веб-хостинг 1017
Глава 21. Управление сетями 915
можно, они вызваны разрывом связи): либо его статические маршруты заданы неверно, либо протоколы динамической маршрутизации не могут определить правильный марш рут для передачи пакета получателю.
Если команда traceroute не работает (или работает слишком медленно), это мо жет быть вызвано превышением тайм-аута при попытках узнать имя компьютера в DNS. Возможно, на компьютере не функционирует служба DNS. В таком случае воспользуй тесь командой traceroute -n. Флаг -n отменяет поиск имен, и только этот способ иногда позволяет все же выполнить команду traceroute в поврежденных сетях.
Для выполнения команды traceroute необходимо иметь права суперпользователя. Чтобы обычный пользователь могут выполнить эту команду, она должна быть инстал лирована с установленным битом setuid. В некоторые дистрибутивные пакеты системы Linux команда traceroute включается без установленного бита setuid. В зависимости от окружения и потребностей, бит setuid можно включить снова или предоставить заин тересованным пользователям доступ к этой команде с помощью команды sudo.
В последние годы появилось несколько утилит, аналогичных команде traceroute, которые могут проходить через брандмауэры, блокирующие ICMP-пакеты. Обзор этих инструментов можно найти на странице tinyurl.com/y99qh6u на сайте РЕТТКВ Wiki. Нам особенно понравилась утилита mtr, которая имеет интерфейс, похожий на интер фейс утилиты top, и работает, как утилита traceroute. Очень хорошо сделано!
В зависимости от вида маршрутизации, иногда полезно посмотреть на свой сайт с точки зрения внешнего мира. Несколько веб-служб для отслеживания маршрутов позво ляют выполнять функции, обратные утилите traceroute, не выходя из браузера. Томас Кернен (Tomas Kemen) поддерживает список этих служб на сайте traceroute.org.
37. Команда netstat: получение информации о состоянии сети
Команда netstat выдает различную информацию о состоянии сетевого программ ного обеспечения, включая статистику сетевых интерфейсов, данные о маршрутизации и таблицы соединений. Никакого объединяющего звена во всех этих информационных блоках нет, просто они касаются функционирования сети. Команду netstat можно сравнить с “кухонным сливом” сетевых инструментов — она отражает много сетевой информации, которая не появляется больше нигде.
Мы рассмотрим пять наиболее распространенных вариантов использования коман ды netstat, а именно:
• проверка состояния сетевых соединений;
• анализ конфигурации интерфейсов;
• изучение таблицы маршрутизации;
• проверка таблицы маршрутизации;
• получение статистических данных о различных сетевых протоколах.
Контроль состояния сетевых соединений
Команда netstat -i демонстрирует конфигурацию и состояние каждого сетевого интерфейса узла и данные соответствующих счетчиков трафика. Результаты обычно вы водятся в виде таблицы, структура которой зависит от операционной системы.
916 Часть II. Работа в сети
solaris$ netstat -i
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
lo0 8232 loopback localhost 319589661 0
e1000g1 1500 host-if1 host-if1 369842112 0
e1000g2 1500 host-if2 host-if2 93141891 0
319589661 0
348557584 0
121107161 0
0 0 0 0 0 0
hp-ux$ netstat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll lan0 1500 192.168.10.0 hpux11 2611259 0 2609847 0 0 lo0 32808 loopback hpux11.atrust.com
aix$ netstat -i
Name Mtu Network Address ZoneID Ipkts Ierrs Opkts Oerrs Coll
en3 1500 link#2 0.11.25.39.e0.b6 41332 0 14173 3 0
en3 1500 192.168.10 IBM 41332 0 14173 3 0
lo0 16896 link#1 1145121 0 1087387 0 0
lo0 16896 127 loopback 1145121 0 1087387 0 0
lo0 16896 ::1 0 1145121 0 1087387 0 0
linux$ ifconfig -a
eth0
eth1
lo
Link encap:EthernetHWaddr 00:15:17:4c:4d:00
inet addr:192.168.0.203Bcast:192.168.0.255Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe4c:4d00/64 Scope:Link
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
RX packets:559543852 errors:0 dropped:62 overruns:0 frame:0
TX packets:457050867 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:478438325085 (478.4 GB)TX bytes:228502292340 (228.5 GB)
Memory:b8820000-b8840000
Link encap:EthernetHWaddr 00:15:17:4c:4d:01
BROADCAST MULTICASTMTU:1500Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)TX bytes:0 (0.0 B)
Memory:b8800000-b8820000
Link encap:Local Loopback
inet addr:127.0.0.1Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNINGMTU:16436Metric:1
RX packets:1441988 errors:0 dropped:0 overruns:0 frame:0 TX packets:1441988 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:327048609 (327.0 MB)TX bytes:327048609 (327.0 MB)
Глава 21. Управление сетями 917
Этот узел имеет два сетевых интерфейса: один предназначен для регулярного тра фика, а второй в настоящее время не используется (он не имеет IP-адреса и не отмечен меткой UP). Команды RX packets и TX packets сообщают количество пакетов, полу ченных интерфейсом и прошедших через него после загрузки компьютера. В разделах, предназначенных для подсчета ошибок, регистрируются многие виды ошибок, и обычно в них можно увидеть небольшие числа.
Количество ошибок не должно превышать 1% от связанных с ними пакетов. Если уровень ошибок выше, сравните его с уровнем ошибок на соседних компьютерах. Большое количество ошибок на отдельном компьютере свидетельствует о проблеме с интерфейсом или соединением. Высокий уровень ошибок почти наверняка означает проблему с окружением или сетью. Одна из наиболее частых причин большого количе ства ошибок заключается в том, что несоответствие скорости работы платы Ethernet или дуплекса вызывает сбой при автоопределении.
Несмотря на то что коллизия — это разновидность ошибки, программа netstat под считывает ее отдельно. Поле с заголовком Collisions содержит количество коллизий, зарегистрированных при отправке пакетов. На основе этого числа можно вычислить процент исходящих пакетов (TX packets), вызвавших коллизию.
В коммутированной сети с полнодуплексными связями, т.е. в современных версиях плат Ethernet, коллизий быть не должно, даже если сеть перегружена. Если обнаружены коллизии, значит, произошло нечто серьезное. Кроме того, следует проверить, что по ток управления поступает на ваши коммутаторы и маршрутизаторы, особенно если ваша сеть содержит связи с разными скоростями.
Причинами сетевых проблем часто становятся дешевые компоненты настольного се тевого оборудования, например коммутатор с временной проводкой, который следует заменить.
Отслеживание состояния сетевых соединений
Если программа netstat запущена без аргументов, она выводит на экран состояние ак
тивных TCP- и UDP-портов. Неактивные (“прослушивающие”) серверы, ожидающие соеди
нения, как правило, скрываются, но вы можете увидеть их, выполнив команду netstat -а.5
Результаты ее работы выглядят следующим образом.
linux$ netstat -а
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address ForeignAddress State
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
tcp 0 0
*:ldap *:*
*:mysql *:*
*:imaps *:*
bull:ssh dhcp-32hw:4208
bull:imaps nubark:54195
bull:http dhcp-30hw:2563
bull:imaps dhcp-18hw:2851
*:http *:*
bull:37203 baikal:mysql
*:ssh *:*
LISTEN
LISTEN
LISTEN
ESTABLISHED
ESTABLISHED
ESTABLISHED
ESTABLISHED
LISTEN
ESTABLISHED
LISTEN
5 В отчете показаны также соединения для “сокетов доменов UNIX”, но поскольку они не относятся
к работе сети, мы их не обсуждаем.
918 Часть II. Работа в сети
Этот отчет сильно сокращен; например, здесь не показаны соединения сокетов UDP и UNIX. В этом отчете упомянуты входящее SSH-соединение, два входящих IMAPS- соединения, одно входящее HTTP-соединение, исходящее MySQL-соединение и группа портов, прослушивающих остальные соединения.
Адреса представлены в формате имя_компьютера.служба, где служба — это номер порта. Для известных служб порты указаны в символическом виде (соответствия между номерами портов и их именами определены в файле /etc/services). При наличии оп ции -n все адреса отображаются в числовом виде. Помните: когда служба DNS не функ ционирует, команда netstat будет выполняться очень медленно, если не указать флаг -n.
В колонках Send-Q и Recv-Q показывается, сколько запросов находится во входя щих и исходящих очередях на данном компьютере. На другом конце соединения раз меры очередей могут быть иными. Желательно, чтобы эти значения были близки к нулю и не были ненулевыми постоянно. Конечно, если команда netstat запускается через сетевой терминал, для ее соединения размер исходящей очереди, скорее всего, никогда не будет равен нулю.
Состояние соединения определено только для протокола TCP. Протокол UDP не проверяет факт установления соединения. Наиболее распространенные состояния тако вы: ESTABLISHED (установлено) — для активных соединений, LISTEN (ожидание) — для серверов, ожидающих поступления запросов (при отсутствии опции -а обычно не по казываются), TIME_WAIT (ожидание закрытия) — для соединений, находящихся в про цессе закрытия.
Эта информация полезна, главным образом, для устранения проблем на высоком уровне, если, конечно, базовые сетевые средства работают нормально. Команда netstat позволяет проверить правильность настройки серверов и диагностировать определенные виды нарушений связи, особенно при работе с протоколом TCP. Например, если соеди нение находится в состоянии SYN_SENT, то это означает наличие процесса, который пы тается установить контакт с несуществующим или недоступным сервером.
Если команда netstat сообщает о большом количестве соединений, находящихся в состоянии SYN_WAIT, то компьютер, очевидно, не в состоянии обработать имеющееся число запросов на установление соединений. Такая ситуация может быть вызвана огра ничениями системного ядра или даже злонамеренными попытками вызвать перегрузку.
Информация о настройке ядра приводилась в главе 13.
Идентификация прослушивающих сетевых служб
Один из наиболее часто возникающих вопросов, связанных с безопасностью, звучит так: “Какие процессы на данном компьютере прослушивает сеть в ожидании входящих соединений?” Команда netstat -а показывает все порты, активно прослушивающие соединения (любой ТСР-порт в состоянии LISTEN и потенциально любой UDP-порт), но на загруженной машине эти линии могут оказаться затерянными в шуме установлен ных ТСР-соединений.
В системе Linux для выявления только прослушивающих портов следует ис пользовать команду netstat -l. Кроме того, можно добавить флаг -р, что бы идентифицировать специфичные процессы, связанные с каждым прослу шивающим портом.6 Пример, продемонстрированный ниже, описывает три обычные службы (sshd, sendmail и named) и одну необычную.
6 В системах UNIX, не поддерживающих флаг -р, эту и другую информацию можно получить с помощью команды lsof, описанной в разделе 6.2.
