По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Часто бывает, что на системе Linux произошла незапланированная или по неизвестным очевидным причинам, перезагрузка. Поиск и устранение первопричины может помочь предотвратить повторение таких проблем и избежать незапланированных простоев. Есть несколько способов выяснить, что вызвало перезагрузку. В этой статье мы обсудим эти способы и способы использования доступных утилит и журналов в системе Linux для устранения таких сценариев. Проверка времени перезагрузки Чтобы посмотреть, когда именно произошла перезагрузка системы можно воспользоваться командами who и last Проверка системных журналов Кроме того, можно сопоставить время перезагрузки, которую требуется диагностировать, с системными сообщениями. Для систем CentOS/RHEL журналы можно найти по адресу /var/log/messages, а для систем Ubuntu/Debian - по адресу /var/log/syslog. Для фильтрации или поиска конкретных данных можно использовать команду tail или любимый текстовый редактор. Как видно из приведенных ниже журналов, такие записи предполагают завершение работы или перезагрузку, инициированную администратором или пользователем root. Эти сообщения могут варьироваться в зависимости от типа ОС и способа запуска перезагрузки или завершения работы, но вы всегда найдете полезную информацию, просматривая системные журналы, хотя этого не всегда может быть достаточно, чтобы определить причину. Ниже приведена одна такая команда, которую можно использовать для фильтрации системных журналов: sudo grep -iv ': starting|kernel: .*: Power Button|watching system buttons|Stopped Cleaning Up|Started Crash recovery kernel' /var/log/messages /var/log/syslog /var/log/apcupsd* | grep -iw 'recover[a-z]*|power[a-z]*|shut[a-z ]*down|rsyslogd|ups' Зафиксированные события не всегда могут быть конкретными. Всегда отслеживайте события, которые дают признаки предупреждений или ошибок, которые могут привести к выключению или сбою системы. Проверка журнала auditd Для систем, использующих auditd – это отличное место для проверки различных событий с помощью инструмента ausearch. Используйте приведенную ниже команду для проверки последних двух записей из журналов аудита. $ sudo ausearch -i -m system_boot,system_shutdown | tail -4 Появится сообщение о двух последних остановках или перезагрузках. Если это сообщает о SYSTEM_SHUTDOWN, за которым следует SYSTEM_BOOT, все должно быть хорошо. Но, если он сообщает две строки SYSTEM_BOOT подряд или только одно сообщение SYSTEM_BOOT, то, скорее всего, система некорректно завершила работу. Вывод при нормальной работе должен быть примерно следующим: $ sudo ausearch -i -m system_boot,system_shutdown | tail -4 ---- type=SYSTEM_SHUTDOWN msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' В приведенных ниже выходных данных перечислены два последовательных сообщения SYSTEM_BOOT, которые могут указывать на аварийное завершение работы, хотя результаты нужно скорректировать с данными системного журнала. $ sudo ausearch -i -m system_boot,system_shutdown | tail -4 ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' Анализ журнала systemd Чтобы сохранить журнал системных логов на диске, необходимо иметь постоянный системный журнал, иначе логи будут очищаться при перезагрузке. Для этого можно либо внести изменения в /etc/systemd/journald.conf, либо создать каталог самостоятельно с помощью следующих команд: $ sudo mkdir /var/log/journal $ sudo systemd-tmpfiles --create --prefix /var/log/journal 2>/dev/null $ sudo systemctl -s SIGUSR1 kill systemd-journald После этого можно дополнительно перезагрузить систему для ввода нескольких записей перезагрузки в журнал, хотя это и не требуется. Приведенную ниже команда позволяет выводить список записанных событий о загрузке из журнала: $ journalctl --list-boots Вот его выходные данные на моем сервере: Как видно на рисунке, в системе есть несколько событий загрузки. Для дальнейшего анализа причины конкретной перезагрузки используйте: $ journalctl -b {num} –n Здесь {num} будет индексом, заданным в команде journalctl --list-boots в первом столбце. В приведенных выше выходных данных можно просмотреть сообщения, зарегистрированные в журнале, и отследить аномалии, если таковые имеются. Заключение Не всегда можно определить причину перезагрузки Linux с помощью одной команды или из одного файла журнала. Поэтому всегда удобно знать команды и журналы, которые фиксируют события, связанные с системой, и могут сократить время, необходимое для поиска первопричины. Приведенные выше примеры дают вам возможность начать поиск и устранение неисправностей. Используя комбинацию таких инструментов и журналов, вы можете быть уверены в том, что произошло и как перезагрузилась ваша система.
img
Почитайте предыдущую статью из цикла про Основы IPv4 Access Control Lists. Когда вы думаете о месте и направлении ACL, вы, должно быть, уже думаете о том, какие пакеты вы планируете фильтровать (отбрасывать), а какие хотите пропустить. Чтобы сообщить маршрутизатору те же идеи, вы должны настроить маршрутизатор с IP ACL, который соответствует пакетам. Соответствующие пакеты относятся к тому, как настроить команды ACL для просмотра каждого пакета, перечисляя, как определить, какие пакеты следует отбросить, а какие разрешить. Каждый IP ACL состоит из одной или нескольких команд конфигурации, каждая из которых содержит подробную информацию о значениях, которые нужно искать в заголовках пакетов. Как правило, команда ACL использует такую логику, как "найдите эти значения в заголовке пакета и, если они найдены, отвергните пакет" (вместо этого может быть разрешение пакета, а не его отбрасывание.) В частности, ACL ищет поля заголовка, которые вы уже должны хорошо знать, включая IP-адреса источника и назначения, а также номера портов TCP и UDP. Давайте сначала рассмотрим пример с рисунка 2, в котором нам необходимо разрешить прохождение пакетов с хоста A на сервер S1, но отбросить пакеты от хоста B, идущие на тот же сервер. Все хосты теперь имеют IP-адреса, а на рисунке показан псевдокод ACL на R2. На рисунке 2 также показано расположение, выбранное для включения ACL: входящий на интерфейсе S0/0/1 R2. На рисунке 2 показан ACL, состоящий из двух строк в прямоугольнике внизу с простой логикой сопоставления: оба оператора просто ищут совпадение с исходным IP-адресом в пакете. Когда этот параметр включен, R2 просматривает каждый входящий IP-пакет на этом интерфейсе и сравнивает каждый пакет с этими двумя командами ACL. Пакеты, отправленные хостом A (исходный IP-адрес 10.1.1.1), разрешены, а пакеты, отправленные хостом B (исходный IP-адрес 10.1.1.2), отбрасываются. Принятие мер при возникновении совпадения. При использовании ACL IP для фильтрации пакетов можно выбрать только одно из двух действий. Команды настроек используют ключевые слова deny и allow, и они означают (соответственно) отбросить пакет или разрешить ему продолжать работу, как если бы ACL не существовал. Здесь основное внимание уделяется использованию ACL для фильтрации пакетов, но IOS использует ACL для многих других функций. Эти функции обычно используют одну и ту же логику сопоставления. Однако в других случаях ключевые слова deny или allow подразумевают другое действие. Типы ACL IP Cisco IOS поддерживает ACL IP с первых дней существования маршрутизаторов Cisco. Начиная с исходных стандартных пронумерованных списков контроля доступа IP на заре IOS, которые могли задействовать логику, показанную ранее на рисунке 2, Cisco добавила множество функций ACL, включая следующие: Стандартные нумерованные списки ACL (1–99) Расширенные нумерованные ACL (100–199) Дополнительные номера ACL (1300–1999 стандартные, 2000–2699 расширенные) Именованные ACL Улучшенное редактирование с порядковыми номерами Здесь мы рассматриваем исключительно стандартные пронумерованные списки контроля доступа IP, а в следующей лекции рассмотрим другие три основные категории списков контроля доступа IP. Вкратце, списки управления доступом IP будут либо пронумерованы, либо именованы, так как конфигурация идентифицирует ACL с использованием номера или имени. ACL также будут стандартными или расширенными, при этом расширенные ACL будут иметь гораздо более надежные возможности для сопоставления пакетов. Рисунок 3 суммирует основные идеи, связанные с категориями списков контроля доступа IP. Стандартные нумерованные списки ACL IPv4 Этот подраздел лекции посвящен типу фильтра Cisco (ACL), который соответствует только исходному IP-адресу пакета (стандарт), настроен для идентификации ACL с использованием чисел, а не имен (пронумерованных), и смотрит на пакеты IPv4.В этой части исследуются особенности стандартных пронумерованных списков контроля доступа IP. Во-первых, он исследует идею о том, что один ACL является списком, и какую логику использует этот список. После этого в тексте подробно рассматривается, как сопоставить поле IP-адреса источника в заголовке пакета, включая синтаксис команд. В конце этой лекции дается полный обзор команд конфигурации и проверки для реализации стандартных ACL. Логика списка с IP ACL Один ACL - это одновременно и единый объект, и список одной или нескольких команд конфигурации. Как единый объект, конфигурация включает весь ACL на интерфейсе в определенном направлении, как показано ранее на рисунке 1. В виде списка команд каждая команда имеет различную логику согласования, которую маршрутизатор должен применять к каждому пакету при фильтрации с использованием этого ACL.При обработке ACL маршрутизатор обрабатывает пакет по сравнению с ACL следующим образом: ACL используют логику первого совпадения. Как только пакет соответствует одной строке в ACL, роутер выполняет действие, указанное в этой строке ACL, и прекращает поиск в ACL.Чтобы понять, что это означает, рассмотрим пример, построенный на рисунке 4. На рисунке показан пример ACL 1 с тремя строками псевдокода. В этом примере ACL 1 применяется к входящему интерфейсу S0/0/1 R2 (то же расположение, что и на предыдущем рисунке 2). Рассмотрим логику ACL первого совпадения для пакета, отправленного хостом A на сервер S1. Исходным IP-адресом будет 10.1.1.1, и он будет маршрутизирован так, чтобы входить в интерфейс S0/0/1 R2, управляя логикой ACL 1 R2. R2 сравнивает этот пакет с ACL, сопоставляя первый элемент в списке с действием разрешения. Таким образом, этот пакет должен быть пропущен, как показано на рисунке 5 слева. Затем рассмотрим пакет, отправленный хостом B, исходный IP-адрес 10.1.1.2. Когда пакет поступает в интерфейс S0/0/1 R2, R2 сравнивает пакет с первым оператором ACL 1 и не находит соответствия (10.1.1.1 не равно 10.1.1.2). Затем R2 переходит ко второму утверждению, которое требует некоторого пояснения. Псевдокод ACL, показанный на рисунке 4, показывает 10.1.1.x, что означает сокращение того, что в последнем октете может существовать любое значение. Сравнивая только первые три октета, R2 решает, что этот последний пакет действительно имеет IP-адрес источника, который начинается с первых трех октетов 10.1.1, поэтому R2 считает, что это соответствует второму оператору. R2 выполняет указанное действие (запретить), отбрасывая пакет. R2 также останавливает обработку ACL для пакета, игнорируя третью строку в ACL. Наконец, рассмотрим пакет, отправленный хостом C, снова на сервер S1. Пакет имеет IP-адрес источника 10.3.3.3, поэтому, когда он входит в интерфейс R2 S0/0/1 и управляет обработкой ACL на R2, R2 просматривает первую команду в ACL 1. R2 не соответствует первой команде ACL (10.1.1.1). в команде не совпадает с пакетом 10.3.3.3). R2 просматривает вторую команду, сравнивает первые три октета (10.1.1) с IP-адресом источника пакета (10.3.3) и по-прежнему не находит совпадения. Затем R2 смотрит на третью команду. В этом случае подстановочный знак означает игнорирование последних трех октетов и просто сравнение первого октета (10), чтобы пакет соответствовал. Затем R2 выполняет указанное действие (разрешение), позволяя пакету продолжить работу. Эта последовательность обработки ACL в виде списка происходит для любого типа IOS ACL: IP, других протоколов, стандартных или расширенных, именованных или пронумерованных. Наконец, если пакет не соответствует ни одному из элементов в ACL, пакет отбрасывается. Причина в том, что каждый IP ACL имеет оператор deny all, подразумеваемый в конце ACL. Его нет в конфигурации, но если маршрутизатор продолжает поиск в списке, и до конца списка не найдено совпадение, IOS считает, что пакет соответствует записи, имеющей действие запрета. Соответствие логики и синтаксиса команд Стандартные нумерованные ACL для IP-адресов используют следующую команду: access-list {1-99 | 1300-1999} {permit | deny} matching-parameters Каждый стандартный нумерованный ACL имеет одну или несколько команд списка доступа с одинаковым номером, любым числом из диапазонов, показанных в предыдущей строке синтаксиса. IOS относится к каждой строке в ACL как к записи управления доступом (ACE), но многие сетевые администраторы просто называют их операторами ACL.Помимо номера ACL, каждая команда списка доступа также перечисляет действие (разрешить или запрещать), а также логику сопоставления. Остальная часть этой части изучает, как настроить параметры сопоставления, что для стандартных списков ACL означает, что вы можете сопоставить исходный IP-адрес или части исходного IP-адреса только с помощью так называемой обратной маски ACL. Соответствие точному IP-адресу Чтобы сопоставить конкретный исходный IP-адрес, весь IP-адрес, все, что вам нужно сделать, это ввести этот IP-адрес в конце команды. Например, в предыдущем примере псевдокод используется для "разрешить, если источник = 10.1.1.1". Следующая команда настраивает эту логику с правильным синтаксисом с использованием ACL номер 1: access-list 1 permit 10.1.1.1 Сопоставить точный полный IP-адрес очень просто.В более ранних версиях IOS синтаксис включал ключевое слово host. Вместо того, чтобы просто вводить полный IP-адрес, вы сначала набираете ключевое слово host, а затем IP-адрес. Обратите внимание, что в более поздних версиях IOS, если вы используете ключевое слово host, IOS принимает команду, но затем удаляет ключевое слово. Сопоставление адреса подсети с обратной маской Часто бизнес-цели, которые вы хотите реализовать с помощью ACL, совпадают не с одним конкретным IP-адресом, а с целым рядом IP-адресов. Возможно, вы хотите сопоставить все IP-адреса в подсети. Возможно, вы хотите сопоставить все IP-адреса в диапазоне подсетей. Несмотря на это, вы хотите проверить наличие нескольких IP-адресов в диапазоне адресов. IOS позволяет стандартным ACL сопоставлять диапазон адресов с помощью инструмента, называемого обратной маской. Обратите внимание, что это не маска подсети. Обратная маска (сокращенно называют маской WC) дает сетевому администратору способ сказать IOS игнорировать части адреса при проведении сравнений, по существу рассматривая эти части как подстановочные знаки, как если бы они уже совпадали.Вы можете использовать маски WC в десятичном и двоичном виде, и оба имеют свое применение. Для начала можно использовать маски WC в десятичной системе счисления, используя следующие правила: Десятичное число 0: маршрутизатор должен сравнить этот октет как обычно. Десятичное число 255: маршрутизатор игнорирует этот октет, считая его уже совпадающим. Имея в виду эти два правила, рассмотрим рисунок 6, который демонстрирует эту логику с использованием трех различных, но популярных масок WC: одна, которая говорит маршрутизатору игнорировать последний октет, другая, которая говорит маршрутизатору игнорировать последние два октета, и третья, которая говорит маршрутизатору игнорировать последние три октета. Все три примера во вставках на рисунке 6 показывают два числа, которые явно различаются. Маска WC заставляет IOS сравнивать только некоторые октеты, игнорируя другие октеты. Все три примера приводят к совпадению, поскольку каждая подстановочная маска указывает IOS игнорировать некоторые октеты. В примере слева показана маска WC 0.0.0.255, которая указывает маршрутизатору обрабатывать последний октет как подстановочный знак, по существу игнорируя этот октет для сравнения. Точно так же в среднем примере показана маска WC 0.0.255.255, которая сообщает маршрутизатору игнорировать два октета справа. В крайнем правом случае показана маска WC 0.255.255.255, указывающая маршрутизатору игнорировать последние три октета при сравнении значений. Чтобы увидеть маску WC в действии, вспомните предыдущий пример, относящийся к рисункам 4 и 5. В ACL псевдокода на этих двух рисунках используется логика, которую можно создать с помощью маски WC. Напомним, что логика ACL псевдокода на этих двух рисунках включает следующее: Строка 1: Сопоставить и разрешить все пакеты с адресом источника соответствующий строго 10.1.1.1. Строка 2: Сопоставить и отклонить все пакеты с адресами источника с первыми тремя октетами 10.1.1. Строка 3: сопоставить и разрешить все адреса с первым одиночным октетом 10. На рисунке 7 показана обновленная версия рисунка 4, но с завершенным правильным синтаксисом, включая маски WC. В частности, обратите внимание на использование маски WC 0.0.0.255 во второй команде, указывающей R2 игнорировать последний октет числа 10.1.1.0, и маску WC 0.255.255.255 в третьей команде, указывающую R2 игнорировать последние три октеты в значении 10.0.0.0. Наконец, обратите внимание, что при использовании маски WC свободно определенный параметр источника команды access-list должен иметь значение 0 в любых октетах, где маска WC - 255. IOS будет указывать адрес источника равным 0 для частей, которые будут игнорироваться, даже если были настроены ненулевые значения. Теперь почитайте про wildcard в ACL: бинарные обратные маски
img
Хотим рассказать о простом способе организовать автоматический перенос файлов из директории в операционной системе Windows с одного сервера на другой. Логически, конфигурацию можно поделить на 3 этапа: Создание и шаринг сетевой папки; Формирование batch (cmd) скрипта; Настройка компоненты Task Scheduler для выполнения задач и раз в минуту; Приступаем к последовательной настройке. Создание сетевой папки (шаринг) Итак, дано: есть сервер А (источник файлов) и сервер Б (получатель файлов). На сервере А мы создали директорию, из которой мы будем забирать файлы. Мы назвали ее source, а на сервере Б, который является сервером назначения, мы создали директорию Destination, в которую мы будем складывать файлы. Разобрались. Подключаемся к серверу Б. Создаем директорию Destination, нажимаем на нее правой кнопкой мыши, выбираем Properties (свойства). В открывшемся окне, переходим во вкладку Sharing (общий доступ) и нажимаем кнопку Share (общий доступ). Вот как эта опция выглядит в русской и английском интерфейсах: После нажатия, необходимо выбрать группы пользователей, которым будет видна эта директория. Если нет особых требований к безопасности и это изолированный сетевой сегмент или лаборатория, то можно выбрать Everyone (все). После выбора нажимаем Share. Готово, вот что у нас получилось: На скриншоте выше красным цветом отмечен Network Path (сетевой путь). Это путь, по которому мы будем обращаться к этой папке. Сохраните его. Важно! Обратите внимание, что в Network Path, как правило, будет указан путь вида %ИМЯ_ХОСТА%/Destination, где %ИМЯ_ХОСТА% - это имя компьютера, на котором расположена папка Destination. Важно, чтобы это имя резолвилось (разрешалось в IP - адрес) на хосте, где будет размещена папка Source (это сервер А). Можете добавить это имя и IP – адрес в локальный файл C:WindowsSystem32driversetc в Windows. Батник – batch скрипт В самом начале статьи мы озвучили небольшой roadmap (дорожную карту) по нашим работам. На сервере А (источник файлов) создайте файл с названием movefiles.bat. Важно! Расширение файла movefiles должно быть именно bat В созданный файл добавляем следующий код: robocopy C:Source \%ИМЯ_ХОСТА%Destination *.* /E /XD \%ИМЯ_ХОСТА%Destination /move Если у вас не работает команда robocopy в скрипте, попробуйте заменить ее на xcopy Сохраняем скрипт в корневом каталоге диска С, например. Планировщик задач | Task Scheduler Открываем Task Scheduler в Windows. После открытия, нажимаем на Create Basic Task в меню справа. Даем имя и описание нашему заданию: В меню далее выбираем ежедневное выполнение нашего скрипта: Ставим выполнение задачи на 00:00:00: В Action выбираем Start a program: Далее, указываем путь до нашего скрипта, который создавали ранее - movefiles.bat: В финальном окне смотрим, что у нас получилось. Если все ОК, как у нас, то нажимаем Finish: Отлично. Переходим в свойства свежесозданной таски (задачи) и во вкладке General отмечаем Run whether user is logged on or not и чекбокс Run with highest privileges. Далее, там же, в свойствах, переходим во вкладку Triggers, двойным нажатием открываем свойства уже созданного там триггера (Daily) и делаем вот что: Отмечает чекбокс Repeat task every; В поле, сразу после Repeat task every вписываем 1 mnute; Нажимаем ОК. Тестируем Итак, давайте протестируем, что у нас получилось. На сервере А в папку Source кладем тестовый текстовый файл: Проверяем на сервере Б в директории Destination:
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59