Linux утилиты для работы с сетью

Основы Linux. Как управлять сетью

Привет, друг! Я уже неоднократно говорил, но продолжу повторять, что любой хакер или специалист по информационной безопасности (называй как хочешь) должен, просто обязан знать Linux. Причин тому миллион, и в очередной раз останавливаться на этом не вижу смысла. А раз мы определились, что Linux важен, давай продолжим изучать Linux. В прошлый раз мы разобрались как работать с файлами и каталогами, если ты пропусти этот материал, он ЗДЕСЬ. А теперь я предлагаю разобраться как в Linux работать с сетями. В этой статье будет только практическая часть вопроса, если, вдруг у тебя присутствует пробел в теоретических знаниях основ работы сетей, то ознакомься с нашими материалами:

Что бы эта статья была полезна максимальному количеству людей, я постараюсь дать обобщённую информацию о наиболее необходимых сетевых утилитах и способах их применения т.е. я не буду расписывать все возможные способы применения той или иной утилиты, а дам наиболее необходимые, на мой взгляд, функции, которые наиболее часто могут применяться на практике.

Перед тем как работать с сетью, иногда (а лучше всегда) необходимо узнать какая сетевая карта установлена в системе, например решать вопросы совместимости довольно трудно не зная модель сетевой карты. Проще всего использовать для этого утилиту lshw. Установим её и запустим:

Если запустить её без дополнительных параметров, она выдаст подробную информацию о всех компонентах и устройствах компьютера.

В результате мы видим довольно подробную информацию об установленных сетевых адаптерах: производитель, модель, способ подключения, mac адрес, конфигурационные настройки и т.д.

Суть работы этой утилиты заключается в отправке ICMP пакетов удалённому серверу, а после возврата пакета, ping подсчитывает время которое понадобилось ему, чтобы дойти до сервера и вернуться.

В результате работы утилиты ping мы видим что:

  • Мы можем установить соединение с сервером
  • DNS работает корректно (имя запрашиваемого сервера было успешно преобразовано в ip)
  • Соединение устойчиво, об этом говорит отсутствие пропусков в параметре icmp_seq
  • Значение time говорит нам сколько времени понадобилось пакету чтобы добраться до хоста и обратно (именно этот параметр часто называют скоростью пинга)

Пару слов о возможных неисправностях: если появилась ошибка в стиле «сеть недоступна», то можно попробовать определить на каком этапе возникает проблема. Для начала «пропингуй» ip адрес роутера, если ответа нет, значит проблема у тебя (обрыв кабеля, настройки системы, параметры адаптера и т.д.) Если роутер отозвался, можно послать запрос серверу провайдера (как узнать ip провайдера будет ниже), если ответ не получен, значит проблема в сетях провайдера. Если сервер провайдера отвечает, можно попробовать послать запрос сайту по IP, если ответ придет, значит некорректно работает DNS. Если всё это не помогло, то провести более детальный анализ можно с помощью утилиты traceroute.

Traceroute

Каждый отправленный нами пакет, прежде чем достигнуть своей цели вынужден пройти некоторое количество узлов. При этом каждый пакет имеет, так называемое, время жизни — это количество узлов которое может пройти пакет перед тем как будет уничтожен. Это значение записывается в заголовке пакета, и уменьшается на 1 при прохождении каждого узла, если значение достигает 0 — пакет уничтожается, а отправитель получает сообщение что время превышено. Утилита traceroute отправляет на случайный порт по три UDP пакета со значением времени жизни сначала 1, потом 2, потом 3 и так пока не достигнет цели, при этом каждый раз замеряется время прохождения пакета. Трассировка считается оконченной когда traceroute от целевого узла получает сообщение что порт недоступен.

И очень часто в ответ ты увидишь звёздочки:

Это не значит, что всё пропало, это значит, что фаервол на сервере заблокировал все лишние пакеты, и соответственно трассировка UDP пакетами не работает, но сработает трассировка ICMP пакетами, чтобы её выполнить надо добавить параметр -I:

Читайте также:  If windows visible true

Теперь мы видим, что наши пакеты прошли через 8 узлов, перед тем как достигнуть цели. Также мы видим время которое понадобилось каждому из трёх отправленных пакетов. Если бы на каком-то этапе возникла ошибка, мы бы увидели соответствующее сообщение.

Также в четвертой строке мы можем увидеть ip адрес нашего провайдера, а если сделать ещё парочку трассировок на другие адреса:

То можно придти к выводу, что провайдер осуществляет доступ к глобальной сети из сети 81.23.23.0/24, а локальная сеть провайдера к которой непосредственно подключен наш роутер не очень охотно отвечает на сервисные запросы.

Ifconfig

Чтобы получить общую информацию о сетевых интрефейсах, проще всего использовать утилиту:

После ввода этой команды мы увидим на экране достаточно большое количество технической информации, распределенной на группы в зависимости от типа сетевого интерфейса:

  • eth0 — проводное соединение;
  • wlan0 — беспроводное соединение;
  • lo — петлевой интерфейс т.е. интерфейс с обратной связью (используется компьютером для «общения с самим собой», он нужен, в основном, для диагностики, а также для подключения к серверам работающим на локальном компьютере.

В зависимости от используемого дистрибутива название сетевых интерфейсов может отличаться, но смысл от этого не меняется

Что касается самой полученной информации, то из всего этого набора непонятных слов и символов стоит выделить наиболее необходимые сведения:

  • RUNNING — означает, что интерфейс активен и пропускает трафик;
  • BROADCAST — широковещательное соединение;
  • inet — ip адрес протокола IPv4;
  • netmask — маска подсети, это информация о том, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети;
  • broadcast — диапазон широковещательного соединения broadcast;
  • inet6 — ip адрес протокола IPv6;
  • ether — уникальный адрес сетевой карты;
  • RX/TX — активность сетевого интерфейса.

Помимо ifconfig общую информацию о сетевых интерфейсах можно получить использовав утилиту ip (более новая и в некоторых моментах более функциональная, чем ifconfig):

Чтобы получить более подробную информацию о сетевых интерфейсах, необходимо выполнить команду (сведения аналогичны полученным от ifconfig) :

Иногда возникает необходимость увидеть маршруты в таблице маршрутизации, для этого также используется утилита ip:

Здесь мы видим ip нашего маршрутизатора, ip нашего компьютера и в какой подсети он находится.

Чтобы отключить какой-либо интерфейс, вводим команду:

Если возникла необходимость сменить ip адрес, сделать это можно использовав утилиту ifconfig, указав какому интерфейсу, какой ip мы хотим назначить;

Также можно задать не только ip, но и подсеть и широковещательный адрес (можно задавать каждый параметр по отдельности):

По такому же принципу можно изменить MAC адрес нашей сетевой карты, что иногда бывает полезно с точки зрения «заметания следов», (например если ты решил похулиганить в общественной wi-fi сети). Нужно предварительно отключить сетевой интерфейс (выше показывал как это сделать) и задать новый mac, предварительно указав какому именно интерфейсу мы меняем mac-адрес:

Контроль состояния сети

Чтобы контролировать состояние твоей сети, существует масса сторонних приложений (например NetHogs), но раз уж эта статья называется «основы», то давай рассматривать возможности самой системы, а в самой системе для этого существует утилита netstat.

Для начала используем флаг -i, чтобы увидеть состояние наших сетевых интерфейсов, с данные счётчиков трафика:

В результате мы видим данные по каждому интерфейсу. Где RX — это общее количество пакетов полученных интерфейсом, а TX — это количество пакетов пропущенных через интерфейс с момента текущей активации. RX-ERR и TX-ERR — это количество ошибок, есть разные мнения о допустимом количество ошибок, но, как правило, если их меньше 5% от общего количества — это нормально, если больше значит, в большинстве случаев, есть проблемы с сетевой картой или с самим соединением.

Если ввести команду netstat без каких-либо дополнительных параметров, то мы увидим список процессов для которых установлены сетевые соединения, с адресом, портом, типом соединения, службой и количеством запросов в очереди:

Для того чтобы определить какие именно процессы какие порты слушают и по какому протоколу, нужно использовать параметры lpn:

Читайте также:  A4tech pk 333mb драйвер windows 10

Чтобы получить информацию о таблице маршрутизации, необходимо использовать параметр r:

А на этом пожалуй всё. В моём понимании перечисленных утилит вполне достаточно начинающему линуксоиду для комфортной работы с сетью, а если какие-то важные утилиты я пропустил значит либо я о них забыл, либо они выходят за моё понимание основ работы с сетью. Не забывай возвращаться, ведь нужно изучить ещё очень много)))

Источник

Настройка сети в Linux, диагностика и мониторинг

Содержание

Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).

Настройка TCP/IP в Linux для работы в сети Ethernet

Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.

Параметры сети

Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:

IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1

Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с маской 255.255.255.0 принадлежит подсети 192.168.0.

Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.

Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.

IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.

Файлы настроек сети в Linux (конфигурационные файлы)

Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux. Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian/Ubuntu (за основу возьмем эту ветвь дистрибутивов) за инициализацию сети отвечает скрипт /etc/init.d/networking , просмотрев содержимое которого:

можно найти несколько функций, проверяющих наличие подключенных сетевых файловых систем (check_network_file_systems(), check_network_swap()), а так же проверку существования какого-то пока непонятного конфига /etc/network/options (функция process_options()), а в самом низу, конструкцией case «$1» in проверяется первый параметр переданный скрипту и в соответствии с введенным параметром (start/stop/force-reload|restart или любое дугое) производит определенные действия. Из этих самых «определенных действий», на примере аргумента start видно, что сначала запускается функция process_options, далее отправляется в лог фраза Configuring network interfaces, и запускается команда ifup -a. Если посмотреть man ifup, то видно что данная команда читает конфиг из файла /etc/network/interfaces и согласно ключу -a запускает все интерфейсы имеющие параметр auto.

Соответственно, прочитав man interfaces (rus) или man interfaces (eng), становиться ясно, как же в Debian/Ubuntu настроить какой-либо сетевой интерфейс с помощью конфига /etc/network/interfaces. Ниже, пример данного конфигурационного файла для 3х интерфейсов: петлевой (lo), со статичным IP (eth2) и IP получаемым по dhcp (eth0):

Читайте также:  Виртуальный сканер для windows

В данном конфиге строки allow-hotplug и auto — это синонимы и интерфейсы будут подняты по команде ifup -a. Вот, собственно, и вся цепь работы сетевой подсистемы. Аналогично, в других дистрибутивах: в RedHat и SUSE сеть запускается скриптом /etc/init.d/network. Рассматрев его, аналогично можно найти, где лежит конфигурация сети.

/etc/hosts

Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:

/etc/networks

Данный файл хранит имена и адреса локальной и других сетей. Пример:

При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.

/etc/nsswitch.conf

Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:

Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.

/etc/resolv.conf

Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:

В современных дистрибутивах Linux используется динамическая генерация данного файла, с помощью утилиты resolvconf. Она является посредником между службами, динамически предоставляющими сервера имен (например DHCP client) и службами, использующими данные сервера имен. Статические адреса DNS серверов, в случае использования resolvconf, задаются внутри /etc/network/interfaces (подробнее об этом — в разделе настройки).

Настройка сети

Настройка сети подробно разобрана в отдельной статье.

Диагностика сети Linux

Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.

Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:

Так же, утилита ping интересна тем, что может позволить увидеть, где именно возникли неполадки. Допустим, утилита ping выводит сообщение network not reachable (сеть недоступна), либо другое аналогичное сообщение. Это, скорее всего, говорит о некорректной настройке вашей системы. В таком случае, можно послать пакеты по IP-адресу провайдера, чтобы понять, в каком месте возникает проблема (между локальным ПК или «дальше»). Если Вы подключены к интернету через маршрутизатор, то можно послать пакеты по его IP. Соответственно, если проблема проявиться уже на этом этапе, это говорит, о неправильном конфигурировании локальной системы, либо о повреждении кабеля, если маршрутизатор отзывается, а сервер провайдера нет, то проблема — в канале связи провайдера и т.д. Наконец, если неудачей завершилось преобразовании имени в IP, то можно проверить связь по IP, если ответы будут приходить корректно, то можно догадаться, что проблема в DNS .

Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.

traceroute

Простым языком, команда называется трассировка маршрута. Как можно понять из названия — данная утилита покажет по какому маршруту шли пакеты до хоста. Утилита traceroute несколько похожа на ping, но отображает больше интересной информации. Пример:

Источник

Оцените статью