По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Цель стати разобраться с текстовыми потоками. А также рассмотреть фильтрование текстовых выводы логов их редактирование, журналов сообщений и т.д. Проще говоря, рассмотреть фильтрация и корректировка выводимого на экран текста. Текстовый поток так называется, потому что это выводимая информация может быть не просто статичный текстовый файл, а те текстовые файлы, которые постоянно меняются или дополняются в режиме реального времени.
Список стандартных команд, которые понадобятся для достижения цели:
Cat, cut, expand, fmt, head, join, less, nl, od, paste, pr, sed, sort, split, tail, tr, unexpand, uniq, wc
Для начала создадим пару текстовых файлов. Переходим в домашнюю корневую папку пользователя root. Переключение пользователя sudo su, и cd ~ . В любом текстовом редакторе создаем 2 файла hello1.txt и hello2.txt с содержанием как на скриншотах.
Первый. И второй ниже.
Команда cat
Начнем с команды, с которой уже не однократно встречались, команда cat. Сначала посмотрим справку по данной команде. man cat. Тут мы можем увидеть, что данная команда предназначена для объединения файлов и печати на стандартный вывод информации. Под стандартным выводом подразумевается вывод на консоль информации. Так же можно увидеть, что у данной команды есть ключи.
Самое простое применение данной команды. Вводим cat hello1.txt команда показывает то, что на скриншоте выше.
Проведем маленький эксперимент и выведем сразу информацию из двух созданных файлов.
cat hello1.txt hello2.txt
А в справке было написано, что команда может объединять содержимое файлов. Попробуем:
cat hello1.txt hello2.txt > hello3.txt
cat hello3.txt
Мы вывели на стандартный вывод (консоль) содержимое файлов и передали то, что на экране в новый файл hello3.txt. А затем просто вывели на консоль. Результат можно посмотреть на скриншоте ниже.
Если нам файл более не нужен можно воспользоваться командой для удаления файлов
rm hello3.txt
Команда cat более часто используется для объединения файлов, для просмотра содержимого чаще используются другие команды.
Команда cut
Данная команда предназначена для удаления секций из строчек файлов. Если посмотреть на ключи, то мы можем увидеть, что данная команда может удалять по различным признакам. По полям, по символам, по байтам, это интересная команда, которая позволяет нам вырезать части из файлов. Небольшой пример:
cut -c 2,3,4,5,10 hello1.txt
Данной командой мы говорим, что при выводе на экран нам необходимо "вырезать" перечисленные символы и вывести оставшееся на экран. Замечу, что команда cut не является текстовым редактором и поэтому фалы не правит! А только правит вывод в консоль. Если посмотреть командой cat hello1.txt файл остался неизменным.
Все команды, про которые речь в статье не редактируют исходные файлы, они только фильтруют или редактируют стандартный вывод информации. Для редактирования файлов используются текстовые редакторы.
Мы посмотрели, как данная команда редактирует вывод, на практике мы можем редактировать колонки, столбцы, вывода в каком-то конкретном логе или таблице. Т.е. мы можем выводить на экран только то, что нам нужно. Например, у нас есть лог события, какого-то, мы можем вывести только дату и события, остальное все лишнее отрезать данной командой в выводе.
Команда expand
man expand
Данная команда редко используется. Она необходима для конвертации символов табуляции в пробелы. Пример: expand hello2.txt и все табуляции превратились в пробелы. На практики редко применяемая команда.
Команда fmt
man fmt
Как написано в мануале это текст форматер. Это серьезная команда, она умеет форматировать вывод текста различными способами.
Теперь посмотрим, как данной командой пользоваться.
Например, написать fmt hello1.txt, как вы видите команда сделала вывод в одну строчку. Следовательно, команда без указания ключа, команда игнорирует все символы переноса каретки.
Т.е. все "enter" и перехода на новую строку он убрал.
Мы можем сказать, чтобы команда отформатировала текст так. чтобы на одной строке не было не более 5 символов, но это без переносов, если первое слово на 20 символов он его не перенесет, а если 2 слова по 2 символа, то оба оставит на этой строке.
fmt w 5 hello1.txt
Ничего не произошло, а если мы дадим fmt w 10 hello1.txt, то мы видим, что команда осуществила перенос. Таким образом можно просматривать длинные логи в удобном для нас виде, т. к. лог может уходить очень далеко в сторону, а через данную команду мы можем разбить на удобные абзацы для нас.
Команда head
man head
Показывает первую часть файлов. Очень удобная команда, для просмотра того, что было в начале файла. По умолчанию показывает первые 10 строк файла.
head /var/log/syslog
Для изменения, количества выводимых строк необходимо использовать ключ n и за ним указать необходимое количество строк.
Команда od
man od
Превращает файлы в другие форматы. Грубо говоря это программа конвертор. Редко используется на практике.
Используя данную команду по умолчанию, мы можем превратить файл в восьмеричный код od hello1.txt. Или с использованием ключа c превратить в формат ASCII, od c hello1.txt. это может понадобится для конвертации файла, например для другой машины со специфичным форматом данных.
Команда join
man join
Данная команда, объединяет строчки файлов по общему полю. Для того, чтобы понять, как работает данная команда необходимо создать 2 текстовых файла touch {1,2}.txt. Создаем сразу 2 файла 1.txt и 2.txt. И с помощью редактора nano редактируем. При применении команды join мы видим произошло объединение по полю нумерации.
Это удобно, например, для слияния файлов, особенно логов, например, два файла логов и вам необходимо их сопоставить по времени.
Команда less
man less
В описании команды говорится, что эта команда противоположна команде more. По сути это команда, которая позволяет читать файл.
Можно посмотреть работу ее на примере. Например, cat /var/log/syslog при запуске этой, команды мы получим очень большой вывод на несколько экранов. Если мы воспользуемся командой less /var/log/syslog, то вывод даст возможность листать постранично, через pgdn. Согласитесь, это намного упрощает чтение и просмотр файла. Бывает такое, что работа идет в консоли, в которой нету прокрутки, через мышку, то в таком случае данная команда становится вообще не заменимой. Если посмотреть описание, данная команда еще умеет делать небольшой поиск по файлу.
Команда nl
man nl
Нумерация строк. Простой пример. Берем файл и говорим пронумеровать строки. На картинке наглядно показано, как работает команда.
Команда paste
man paste
Команда вставка умеет вставлять построчно вставлять какие-то строки в файлы. Объединяет строки файлов, как написано в мануале.
У нас есть 2 файла 1.txt и 2.txt. Команда join их объединяла по определенному полю. Если мы применим команду paste мы увидим, что команда paste объединила их построчно.
Т.е. это может быть очень удобно. У нас объединились первые строки, вторые строки и т.д. Например, если мы сопоставляем какие-нибудь события или файлы и т.д.
Команда pr
man pr
Данная команда конвертирует текстовые файлы для вывода на печать. Очень наглядно можно увидеть, как работает данная команда, если ее применить к большому файлу. Например, pr /var/log/syslog
Как можно убедится, команда разбила вывод на страницы и подготовила данный вывод для печати.
Команда sed
man sed
Потоковый редактор для фильтрации и трансформирования текста. Это практически полноценный текстовый редактор, но опять же он не редактирует файлы, а работает с выводом.
Как его использовать, пример следующий заменим в файле 2.txt слово socks на слово people получается примерно так:
sed e ‘s/socks/people/’ 2.txt
Функционал у команды очень большой, вывод можно для себя очень сильно изменить, заменить слова, удалить, отредактировать, отрезать, добавить, все это можно делать с помощью данной команды. При этом содержимое файла не меняется. Меняется только для нас вывод.
Команда sort
man sort
Сортирует строки в файлах по какому-то признаку. Поработаем с файлом hello1.txt. Если мы применим команду к данному файлу sort hello1.txt, то мы увидим, что вывод отсортировал строчки по алфавиту. А если применить ключик r, то от сортируется в обратном порядке. Это удобно использовать так же в совокупности с другими командами, отсортировать лишнее.
Команда split
man split
Данная команда бьет файл на куски. Даная команда работает следующим образом. Даная команда разбивает файл на части, но при этом исходный не меняет. Например разобьем по строчкам фал 1.txt. split -l 2 1.txt . Разбивку делаем на 2 строчки. И мы видим, что у нас исходный файл остался неизменным, а появилось еще 2 файла xaa и xab. Они как раз и содержат разбиение.
Данную команду удобно применять к большим файлам и использовать ключик для разбивки по размеру, например, по байтам b и указываем на какие куски разбить в байтах. Пример:
split b 5 путь_к_файлу
Команда tail
man tail
В отличии от команды head, данная команда показывает последнюю часть файла. Например, tail /var/log/syslog нам покажет последнюю часть лога событий.
Добавляем ключ -n и число, мы получим число последних событий, которых мы указали. Очень полезный ключ -f, который говорит показывать добавление в файл на "живую", т.е в реальном времени. Очень удобно для диагностики, события пишутся в лог и сразу выводится на экран. Например, запись лога прокси сервера. Прерывание такого режима ctr+C.
Команда tr
man tr
Переводит или удаляет символы. Посмотрим на прямом выводе текста. Введем echo Hello. Далее введем echo Hello | tr -t A-Z a-z и заглавные буквы будут заменены строчными. Echo Hello | tr -t l L и маленькие l будет заменены на L. Echo Hello | tr -d l и буквы l будут удалены.
Мощный трансформатор текста. Работает непосредственно с текстом, ключей у него полно их можно посмотреть в мануале.
Команда unexpand
man unexpand
Работает в противоположную сторону команде expand. Конвертирует пробелы в знаки табуляции.
Обычно работают в паре expand и unexpand, для раздвижения столбцов.
Команда uniq
man uniq
Даная команда ищет уникальные и дублирующийся линии, т.е. она смотрит что у нас в строчках есть одинакового и разного. Для примера, я в файл 1.txt добавлю повторяющуюся строчку. И сделаю вывод uniq 1.txt команда покажет только уникальные строчки, а затем uniq c 1.txt и команда покажет строчки с числом повторений. Можно сказать, чтобы показала команда только дублирующиеся строчки uniq d 1.txt или неповторяющиеся uniq u 1.txt. Применение заключается в том. что если у нас есть файлы с повторяющееся информацией мы можем таким образом ее фильтровать.
Команда wc
man wc
Показывает число строк, байт, слов и т.д. для определенного файла. Например: wc 1.txt показывает 4 строки, 8 слов, 28 символов.
Можно использовать с ключом w покажет количество слов. И т.д., можно получить информацию полностью по папке:
wc *
Умение настраивать VLAN (Virtual Local Area Network) или виртуальные локальные сети - одно из самых базовых умений, которым должен обладать системный администратор. Сегментирование сети с помощью VLAN-ов строго необходимо для PCI, HIPAA и прочих стандартов безопасности, и, кроме того, это помогает сохранять “чистоту” и порядок в больших сетях. Настройка VLAN-ов на маршрутизаторах MikroTik не является сложной задачей, подробнее о шагах настройки вы можете прочесть ниже.
Дизайн VLAN в организации
Первым шагом в сегментировании сети должен быть не настройка маршрутизатора, а понимание будущей схемы в целом - предпочтительно нарисовать схему на листе бумаги, использовать ПО наподобие Microsoft Visio и т.д. К тому же, если ваша сеть должна соответствовать стандартам безопасности, которые были перечислены выше, то практически не нужно ничего придумывать - в описании стандартов есть подробные инструкции что и как должно быть сегментировано. Однако, чаще всего, сегментирование происходит для общей оптимизации сети - и тут необходимо будет что-то придумать самому. На наш взгляд, проще всего отразить структуру организации в схеме VLAN-ов. Каждый департамент должен находится в собственном VLAN-е, т.к каждый департамент обладает своими собственными уникальными функциями, и, скорее всего, различными правами доступа. Также в отдельные VLAN-ы необходимо поместить сервера и дисковые хранилища.
Для серверов и хранилищ рекомендуется использовать отдельные коммутаторы, но, для маленьких компаний это часто невозможно из-за лимитированного бюджета.
К тому же, с помощью таких инструментов как Torch или NetFlow можно будет контролировать и мониторить трафик каждого департамента. Гостевая сеть также должна быть помещена в отдельный VLAN, который будет полностью изолирован от внутренней сети. Беспроводные сети также должны находится в своем VLAN, таким образом весь трафик мессенджеров, обновлений мобильных приложений и т.д будет полностью отделен от основной сети.
Транковые протоколы VLAN
В нашем сценарии у нас есть только один роутер, и создадим VLAN-ы для HR (192.168.105.0/24), бухгалтерии (192.168.155.0/24) и гостевую сеть (192.168.1.175.0/24). Если у вас получится создать три VLAN-а, то, очевидно, получится создать и сто - в нашем примере мы описываем создание только трех VLAN-ов для простоты и прозрачности примера. IP-адреса для каждого VLAN-а также были выбраны случайным образом - для вашей организации, скорее всего, адресация будет иной. В нашем случае, маршрутизатор подключен к коммутатору по интерфейсу ether2, с 802.1q транком между ними - эта схема также известна под именем “роутер на палке” (router on a stick). Мы не будем углубляться в детали касаемо свитча - это может быть Cisco, HP и т.д - потому что 802.1q транки одинаковы практически на всех платформах - если у вас какой-нибудь необычный свитч, то вам стоит просто обратиться к документации и прочесть, как выполняется конфигурация транкового порта. Наш маршрутизатор также обладает подключением к WAN на порту ether1 - все пользователи в VLAN-ах будут использовать его для доступа к интернету.
Создание VLAN-ов на MikroTik
Сперва необходимо создать VLAN-ы на маршрутизаторе и назначить их на интерфейс ether2. После этого, интерфейс ether2 будет автоматически настроен как 802.1q транк и не будет доступен для трафика без тэгов, что означает, что до конца настройки этот линк будет “лежать” - поэтому строго рекомендуется выполнять эти действия во в нерабочее время.
/interface vlan
add comment="HR" interface=ether2 name="VLAN 105 - HR" vlan-id=105
add comment="Accounting" interface=ether2 name="VLAN 155 - Accounting" vlan-id=155
add comment="Guests" interface=ether2 name="VLAN 180 - Guests" vlan-id=180
Крайне рекомендуется всегда давать понятные имена интерфейсам и писать комментарии - в дальнейшем это может сильно облегчить администрирование сети и обучение новых системных администраторов. Как мы упомянули выше, создание VLAN-ов и назначение их на физический порт ether2 автоматически изменит тип инкапсуляции на 802.1q, но вы нигде этого не увидите - даже если выведете всю информацию об интерфейсе.
Назначаем IP-адреса
Далее, необходимо назначить сетевые адреса, чтобы VLAN интерфейсы могли работать как шлюзы:
/ip address
add address=192.168.105.1/24 comment="HR Gateway" interface="VLAN 105 - HR"
add address=192.168.155.1/24 comment="Accounting Gateway" interface="VLAN 155 - Accounting"
add address=192.168.180.1/24 comment="Guests Gateway" interface="VLAN 180 - Guests"
На всякий случай, еще раз обращу ваше внимание на то, как важно комментировать интерфейсы для удобства в дальнейшем. На данном моменте у нас уже настроены VLAN-ы и у них назначены сетевые адреса. Если у вас не используется DHCP, а используется статическая адресация - на этом настройка VLAN в общем-то закончена. Следующим шагом (этот шаг, соответственно, опционален) является настройка DHCP на VLAN интерфейсах, для того чтобы клиенты внутри каждого VLAN могли автоматически получить динамический IP-адрес.
DHCP для VLAN
Для начала, необходимо установить адресные пулы для каждого из VLAN-ов:
/ip pool
add name=HR ranges=192.168.105.2-192.168.105.254
add name=Accounting ranges=192.168.155.2-192.168.155.254
add name=Guests ranges=192.168.180.2-192.168.180.254
Далее, настраиваем DHCP с опциями для DNS и шлюзов:
/ip dhcp-server network
add address=192.168.105.0/24 comment="HR Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.105.1
add address=192.168.155.0/24 comment="Accounting Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.155.1
add address=192.168.180.0/24 comment="Guest Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.180.1
В данном случае мы используем DNS сервис от Google.
Далее, добавляем ранее настроенные пулы на VLAN интерфейсы:
/ip dhcp-server
add address-pool=HR disabled=no interface="VLAN 105 - HR" name=HR
add address-pool=Accounting disabled=no interface="VLAN 155 - Accounting" name=Accounting
add address-pool=Guests disabled=no interface="VLAN 180 - Guests" name=Guests
Адресные пулы соответствуют настроенным сетям, и именно такие DHCP опции как шлюз и DNS присваиваются конкретной DHCP инстанции. Смысл присвоения DHCP для каждого VLAN в том, чтобы у вас была возможность контролировать сроки выдачи адреса (lease times), опции и т.д для каждого сегмента сети, что дает большой простор для оптимизации и контроля DHCP в вашей организации.
Настройка VLAN на коммутаторе
На данном этапе настройки вам необходимо будет назначить порты доступа на ваших свитчах на конкретные VLAN-ы, и клиенты, которые будут подключены к этим портам будут находится в их VLAN и получать соответствующие IP-адреса по DHCP. Теперь уже вам решать, какие VLAN будут полностью изолированы друг от друга, а какие смогут “общаться” - осталось только настроить соответствующие правила на фаерволле. Как правило, мы разрешаем доступ только абсолютно необходимого трафика в VLAN - если разрешить весь трафик, тогда теряется смысл сегментирования.
Современные IP сети должны обеспечивать надежную передачу пакетов сети VoIP и других важных служб. Эти сервисы должны обеспечивать безопасную передачу, определенную долю предсказуемости поведения трафика на ключевых узлах и конечно гарантированный уровень доставки пакетов. Сетевые администраторы и инженеры обеспечивают гарантированную доставку пакетов путем изменения параметров задержки, джиттера, резервирования полосы пропускания и контроля за потерей пакетов с помощью Quality Of Service (QoS).
Современные сети конвергентны. Это означает, что приходящей трафик в корпоративный сегмент сети, будь то VoIP, пакеты видеоконференцсвязи или обычный e-mail приходят по одному каналу передачу от Wide Area Network (WAN) . Каждый из указанных типов имеет свои собственные требования к передаче, например, для электронной почты задержка 700 мс некритична, но задержка 700 мс при обмене RTP пакетами телефонного разговора уже недопустима. Для этого и создаются механизмы QoS [описаны в рекомендации Y.1541]. Рассмотрим главные проблемы в корпоративных сетях:
Размер полосы пропускания: Большие графические файлы, мультимедиа, растущее количество голосового и видео трафика создает определенные проблемы для сети передачи;
Задержка пакетов (фиксированная и джиттер): Задержка – это время, которое проходит от момента передачи пакета до момента получения. Зачастую, такая задержка называется «end-to-end», что означает точка – точка. Она бывает двух типов:
Фиксированная задержка: Данные вид задержки имеет так же два подтипа: задержка сериализации и распространения. Сериализация - это время затрачиваемое оборудованием на перемещение бит информации в канал передачи. Чем шире пропускная способность канала передачи, тем меньше время тратится на сериализацию. Задержка распространения это время, требуемое для передачи одного бита информации на другой конец канала передачи;
Переменная сетевая задержка: Задержка пакета в очереди относится к категории переменной задержки. В частности, время, которое пакет проводит в буфере интерфейса, зависит от загрузки сети и относится так же к переменной сетевой задержке;
Изменение задержки (джиттер): Джиттер это дельта, а именно, разница между задержками двух пакетов;
Потеря пакетов: Потеря пакетов, как правило, вызывается превышением лимита пропускной способности, в результате чего теряются пакеты и происходят неудобства в процессе телефонного разговора.
Размер полосы пропускания
Рисунок иллюстрирует сети с четырьмя «хопами» - промежуточными узлами на пути следования пакета между сервером и клиентом. Каждый «хоп» соединен между собой своим типом среды передачи в разной пропускной способностью. В данном случае, максимальная доступная полоса для передачи равна полосе пропускания самого «узкого» места, то есть с самой низкой пропускной способностью.
Расчет доступной пропускной способности - это неотъемлемая часть настройки QoS, которая является процессом, осложненным наличием множества потоков трафика проходящего через сеть передачи данных и их необходимо учесть. Расчет доступной полосы пропускания происходит приблизительно по следующей формуле:
A=Bmax/F
где A – доступная полоса пропускания, Bmax – максимальная полоса пропускания, а F – количество потоков. Наиболее правильным методом при расчете пропускной способности является расчет с запасом в 10-20% от расчетной величины. Однако, увеличение пропускной способности вызывает удорожание всей сети и занимает много времени на осуществление. Но современные механизмы QoS могут быть использованы для эффективного и оптимального увеличения доступной пропускной способности для приоритетных приложений.
С помощью метода классификации трафика, алгоритм QoS может отдавать приоритет вызову в зависимости от важности, будь то голос или критически важные для бизнеса приложения. Алгоритмы QoS подразумевают предоставление эффективной полосы пропускания согласно требованиям подобных приложений; голосовой трафик должен получать приоритет отправки. Перечислим механизмы Cisco IOS для обеспечения необходимой полосы пропускания:
Priority queuing (приоритетная очередь или - PQ) или Custom queuing (пользовательская или настраиваемая очередь - CQ);
Modified deficit round robin - MDRR - Модифицированный циклический алгоритм с дополнительной очередью (маршрутизаторы Cisco 1200 серии);
Распределенный тип обслуживания, или Type Of Service (ToS) и алгоритм взвешенных очередей (WFQ) (маршрутизаторы Cisco 7x00 серии);
Class-Based Weighted Fair Queuing (CBWFQ) или алгоритм очередей, базирующийся на классах;
Low latency queuing (LLQ) или очередь с малой задержкой. Оптимизация использования канала путем компрессии поля полезной нагрузки «фреймов» увеличивает пропускную способность канала. С другой стороны, компрессия может увеличить задержку по причине сложности алгоритмов сжатия. Методы Stacker (укладчик) и Predictor (предсказатель) - это два алгоритма сжатия, которые используются в Cisco IOS.
Другой алгоритм эффективного использования канала передачи это компрессия заголовков. Сжатие заголовков особенно эффективно в тех сетях, где большинство пакетов имеют маленькое количество информационной нагрузки. Другими словами, если отношение вида (Полезная нагрузка)/(Размер заголовка) мало, то сжатие заголовков будет очень эффективно. Типичным примером компрессии заголовков может стать сжатие TCP и Real-time Transport Protocol (RTP) заголовков.
Задержка пакетов из конца в конец и джиттер
Рисунок ниже иллюстрирует воздействие сети передачи на такие параметры как задержка пакетов проходящих из одной части сетевого сегмента в другой. Кроме того, если задержка между пакетом с номером i и i + 1 есть величина, не равная нулю, то в добавок к задержке "end-to-end" возникает джиттер. Потеря пакетов в сети при передаче трафика происходит не по причине наличия джиттера, но важно понимать, что его высокое значение может привести к пробелам в телефонном разговоре. Каждый из узлов в сети вносит свою роль в общую задержку:
Задержка распространения (propagation delay) появляется в результате ограничения скорости распространения фотонов или электронов в среде передачи (волоконно-оптический кабель или медная витая пара);
Задержка сериализации (serialization delay) это время, которое необходимо интерфейсу чтобы переместить биты информации в канал передачи. Это фиксированное значение, которое является функцией от скорости интерфейса;
Задержка обработки и очереди в рамках маршрутизатора.
Рассмотрим пример, в котором маршрутизаторы корпоративной сети находятся в Иркутске и Москве, и каждый подключен через WAN каналом передачи 128 кбит/с. Расстояние между городами около 5000 км, что означает, что задержка распространения сигнала по оптическому волокну составит примерно 40 мс. Заказчик отправляет голосовой фрейм размером 66 байт (528 бит). Отправка данного фрейма займет фиксированное время на сериализацию, равное:
tзс = 528/128000=0,004125с=4.125 мс.
Также, необходимо прибавить 40 мс на распространение сигнала. Тогда суммарное время задержки составит 44.125 мс. Исходя из рисунка расчет задержки будет происходить следующим способом:
D1+Q1+D2+Q2+D3+Q3+D4
Если канал передачи будет заменен на поток Е1, в таком случае, мы получим задержку серилизации, равную:
tзс=528/2048000=0,00025781с=0,258 мс
В этом случае, общая задержка передачи будет равнять 40,258 мс.