Сообщество - Лига Сисадминов

Лига Сисадминов

2 236 постов 18 764 подписчика

Популярные теги в сообществе:

114

Самое бесячее в работе сисадмина

Я работаю системным администратором в госучреждении типа аля районная управа, и самое бесячее в нашей работе это слышать от юзверей - "Нужно СРОЧНО!"

- Принтер не печатает! Срочно почините!
- На сайт не заходит! Срочно почините!
- Подписать ЭЦП не можем! Срочно почините!
- Свет погас! Срочно почините!
- Платежки отправить не можем, СРОЧНО ЧИНИТЕ!

Но кульминация всего это выходные, и любители удаленки! Звонки в 8-9 утра в выходные дни на сотовый, у меня не заходит на удаленку! Срочно почините!

Но я не жалуюсь, нет. В ответ и я и мои коллеги отвечают:

-Извините, очень много заявок, ждите своей очереди!

И передвигают заявку в конец списка...
Даже если в списке одна заявка, на нее кладется огромный болт типа:

СРОЧНО?СОСИТЕ СОЧНО!

33

Разворачиваем сеть на RHEL8-based хостах (копия с Хабра)

Разворачиваем сеть на RHEL8-based хостах (копия с Хабра) Linux, IT, Программирование, Perl, Командная оболочка bash, Длиннопост

1. Предисловие

Развертывание ИТ-инфраструктуры с нуля — задача интересная и трудозатратная. Особенно, когда речь не о постепенном развитии (как это часто случается при поступательно-линейном росте бизнеса и, соответственно, его потребностей), а о куда более сжатых сроках, например, при открытии филиала или обособленного подразделения (другой вариант — необходимость в короткие сроки развернуть инфраструктуру для тестирования), где важную роль играет организация сети.


Конечно, первоначальная установка и настройка — это всегда полевая работа: монтаж СКС, сетевого оборудования и серверов; конфигурирование DHCP и организация удалённого доступа; иногда — заведение VLAN-ов.


2. Описание задачи

Итак, представим, что первичная настройка сети проведена: монтаж СКС осуществлён, DHCP выдал всем устройствам IP-адреса, удалённый доступ до сети филиала (или обособленного подразделения) в наличии, на одни сервера заведены 2 (или более) физических соединения для организации BOND-ов, на другие поданы транковые соединения с несколькими VLAN-ами и т.д.

Список IP-адресов серверов сведён в таблицу и доступ по SSH в наличии. Если размер списка невелик (например, до 3-5 единиц), то ручная настройка покажется неплохим вариантом, хоть и отнимет какое-то время.


А если список содержит, например, 10 (или более) хостов, на части из которых необходима уникальная сетевая конфигурация (разделение trunk-соединения на vlan-ы, виртуальные bridge-ы, etc)? Тут уж временные затраты существенно возрастают.


Но нет необходимости тратить время на рутину, если готовое решение есть и ожидает вас ниже (со ссылкой на guthub-репозиторий в конце публикации).


3. Стек технологий

1) Ansible. Весьма популярен (хотя кому-то ближе Puppet, Chef или Salt). Применяется для доставки контента/команд на целевые хост-системы.

2) Командная оболочка Bash. Присутствует во всех linux-системах. В рамках решения используется как для создания оболочки над Ansible, так и для отложенного выполнения операций (если конкретнее — отката сетевых настроек по таймеру) на целевых хостах.

3) Perl 5. Отличный инструмент в умелых руках. С помощью этого ЯП написан функционал генерации ifcfg-файлов на основе текстового конфига (т.е. Perl задействован только на ansible-хосте).

4) Network-scripts. Хоть и не включён в минимальный вариант установки ОС семейства RHEL8, но является проверенным средством настройки сетевой подсистемы.


4. Концепция приложения

Приложение «conf_int_ipv4_via_network_scripts» (ansible-приложение) представляет собой набор perl/bash-скриптов и файлов конфигурации (inventory-file, etc). Хотя и является составной частью репозитория «ansible_helpers», но имеет автономный характер.


5. Описание приложения

5.1. Структура директорий1. Корневой раздел (условно обозначим «../»). Содержит все основные скрипты поддиректории.

2. Директория с дополнительными конфигами («../additional_configs»). Содержит дополнительные файлы конфигурации, с помощью которых возможно задать содержание resolv.conf (указать NS-сервера), таймаут отката конфигурации и опцию удаления неиспользуемых ifcfg-файлов на стороне целевых хостов.

3. Директория с playbook-ами («../playbooks), которая в свою очередь имеет свои подразделы:

3.1) dyn_ifcfg_playbooks. Тут динамически генерируеются уникальные для каждого хоста плейбуки, ifcfg-файлы и настройки dns (resolv.conf).

3.2) ifcfg_backup_from_remote. Содержит резервные копии сетевых настроек с привязкой к дате («history»), текущую конфигурацию до изменения («now») и полную информацию о сетевых интерфейсах («network_data»).

3.3) ifcfg_tmplt. Как следует из названия, хранит шаблоны ifcfg-конфигураций, на основе которых формируются уникальные для каждого inventory-хоста настройки сети.

3.4) scripts_for_local. Хранит скрипты для исполнения на ansible-хосте. В данном случае подразумевается скрипт преобразования сырых данных в файлы c информацией о сетевых интерфейсах (размещаются в директории «../ifcfg_backup_from_remote/network_data»).

3.5) scripts_for_remote. Скрипты для исполнения на удалённых хостах. В данном случае он один — rollback_ifcfg_changes.sh (скрипт отката к предыдущим настройкам сетевой подсистемы).

6) tasks. Используемые в плейбуках файлы задач.

4. «../run_history». Логи запуска/исполнения сценариев приложения.


5.2. Файлы конфигурации

1. «../conf_network_scripts_hosts» — inventory-файл приложения.

2. «../config» – основной файл конфигурации приложения. Также имеется файл «config_examples» с примерами настроек. Для получения имён сетевых интерфейсов и соответствующих им MAC-адресов, требуемых при заполнении файла «config», необходимо запустить скрипт «just_run_ifcfg_backup.sh» и ознакомиться с файлом «../playbooks/ifcfg_backup_from_remote/network_data/inv_hosts_interfaces_info.txt».

3. «../additional_configs/config_del_not_configured_ifcfg» - задаёт действие относительно тех ifcfg-файлов, которые не сконфигурированы в «../config». Если в «config_del_not_configured_ifcfg» вписать адрес хоста, то ansible-приложение удалит на remote-хосте все ifcfg-файлы, выключит соответствующие интерфейсы («ifdown») и удалит линки (через «ip link delete»), но только те, которые относятся к bond/bridge и vlan-интерфейсам (например, eth0.100). Настройка будет полезна в случая, когда, например, требуется переименовать какое-либо bond/bridge-соединение.

4. «../additional_configs/config_temporary_apply_ifcfg» - тут возможно задать таймаут (как общий, так и для различных inventory-хостов индивидуально) отката к предыдущим настройкам.

5. «../additional_configs/dns_settings». Предоставляет возможность выставить настройки dns индивидуально для каждого inventory-хоста.


5.3. Скрипты и их назначение

1. «install_network_scripts_and_configure_network.sh» - производит бэкап ifcfg-файлов, устанавливает «network-scripts» (если функционал не установлен ранее), проверяет статус сервиса «network.service» (если не запущен, то стартует), исполняет скрипт «generate_dynamic_ifcfg.pl» и применяет изменения сетевых настроек (заданных в файле «config») на удалённых хостах (если, конечно, настройки корректны).

2. «just_install_network_scripts.sh» устанавливает «network-scripts» (если функционал не установлен ранее).

3. «just_run_ifcfg_backup.sh» - производит бэкап ifcfg-файлов.

4. «check_network_scripts_serv_is_started.sh» - проверяет статус сервиса «network.service» (если не запущен, то стартует).

5. «check_ifcfg_without_apply.sh» - проверяет корректность сетевых настроек (файл «config»).

6. «apply_temporary_ifcfg.sh» - временно применяет сетевые настройки. Таймаут отката задается в конфиге «../additional_configs/config_temporary_apply_ifcfg».

7. «apply_immediately_ifcfg.sh» - немедленно применяет новые сетевые настройки, если, конечно, они изменились с момента предыдущего запуска (в т.ч. если были внесены какие-либо изменения вручную на удалённых хостах).


5.4. Описание основного файла конфигурации (UPD 2022-12-19)

Разворачиваем сеть на RHEL8-based хостах (копия с Хабра) Linux, IT, Программирование, Perl, Командная оболочка bash, Длиннопост

Каждая строка в файле представляет собой набор параметров, разделённых символами "пробел/табуляция":
1) INV_HOST. Должен соответствовать одному из хостов inentory-файла "conf_network_scripts_hosts".
2) CONF_ID. Уникальный идентификатор сетевого интерфейса (или набора сетевых интерфейсов) в рамках каждого inventory-хоста.
3) CONF_TYPE. Определяет тип конфигурации для конкретных сетевых интерфейсов. Возможные значения:
3.1) just_interface (обычный интерфейс);
3.2) interface-vlan (интерфейс, поднимаемый в рамках транкового соединения, из которого каждый vlan возможно выделить по vlan-идентификатору);
3.3) virt_bridge (виртуальный мост);
3.4) just_bridge (обычный мост);
3.5) bridge-vlan (мост поверх vlan-интерфейса);
3.6) just_bond (конфигурация агрегированного канала, состоящего из 2-х и более физических соединений);
3.7) bond-vlan (vlan-итерфейс поверх bond-соединения);
3.8) bond-bridge (соединение типа "мост" поверх bond-соединения);
3.9) bond-bridge-vlan (соединение типа "bridge-vlan" поверх bond-соединения).
Каждому из этих значений соответствует свой набор шаблонов ifcfg-файлов (директория "ifcfg_tmplt").
4) INT_LIST. Список сетевых интерфейсов (разделённых запятой), используемых в рамках конкретного типа конфигурации (CONF_TYPE).
5) HWADDR_LIST. Список MAC-адресов, соответствующих сетевым интерфейсам из INT_LIST. Для CONF_TYPE=virt_bridge параметру необходимо присвоить значение "no".
6) VLAN_ID. Идентификатор VLAN. В случае, если речь не про vlan, то должен иметь значение "no".
7) BOND_NAME. Используется только для CONF_TYPE, равных "just_bond, bond-vlan, bond-bridge, bond-bridge-vlan". В остальных случаях необходимо выставлять значение "no".
8) BRIDGE_NAME. Используется только для CONF_TYPE, равных "virt_bridge, just_bridge, bridge-vlan, bond-bridge-vlan". В остальных случаях необходимо выставлять значение "no".
9) IPv4_ADDR_OPTS. Опции IPv4. Возможные значения: строка вида "ipv4,gateway,netmask" (для использования статической адресации) или "dhcp" (для получения ip-адреса и прочих параметров через DHCP).
10) BOND_OPTS. Настройки агрегирования для bond-соединения. Возможные значения: "def" ("mode=4,xmit_hash_policy=2,lacp_rate=1,miimon=100") или иное сочетание параметров, разделённых запятой.
11) DEFROUTE. Флаг "маршрут по умолчанию". Для конкретного inventory-хоста должен быть только один.


Чтение и обработка файла "config" происходит посредством Perl-скрипта "generate_dynamic_ifcfg.pl", который осуществляет ряд проверок конфигурации (в т.ч. и используя информацию, полученную посредством «just_run_ifcfg_backup.sh»), инициирует приостановку исполнения сценариев на удалённых хостах, если данные в "config" некорректны, формирует необходимые наборы ifcfg-файлов для каждого inventory-хоста, а также создаёт персональные для каждого хоста ansible-playbook-и (в директории "dyn_ifcfg_playbooks"), если сгенерированные файлы интерфейсов отличаются от текущих.


6. Постскриптум

Ссылка на репозиторий


В README-файле перечислены как уже готовые приложения, так и те, статус которых варьируется от «в процессе» до «есть в планах».

Спокойного кодинга всем причастным!

=====================
Статья на Хабр

Показать полностью 1
45

Поиск решения проблемы в интернете

Как же бесит .... Поиск решения в интернете по IT проблеме. Задался ты однажды вопросом - Как сделать что то такое что бы все удивились? И вот поиск выдает тебе сотни страниц где мудрые и могучие дают тебе сотню советов с припиской - у меня работает вот так и показывает пруфы. И вот ты довольный тратишь время на то, что бы повторить указания и на выходе получаешь - ничего. Думаешь - странно, наверное МУДРЫЙ и МОГУЧИЙ просто ошибся когда писал сей текст, тогда ты решаешь заглянуть на вторую страницу что бы найти ошибку в синтаксисе и осознаешь, что тут всё совершенно по другому и практически не имеет ничего общего с мнением автора предыдущей страницы. А на третьей странице ты находишь что то совершенно отличающееся от первых двух и так далее и так далее. Ни одна инструкция в интернете не содержит полный рецепт действий, везде и всегда авторы забывают добавить что то важное - один забыл указать какие пакеты/программы нужны дополнительно, другой указал, но забыл сказать как проверить, третий так вообще указал что нужно сделать, но забыл сказать где. Обращение к официальной документации вроде должно решить проблему, но нет же! Везде вы найдете огромные талмуты разрозненной информации и что бы ее соединить потребуются недели и месяцы. Я работаю в сфере системного администрирования уже 20 лет (без пары месяцев), но в сегодняшнем IT столько технологий, что я физически не успеваю всё изучать, а если учесть что от версии к версии сам производитель меняет методики и последовательности то всё становится в разы печальнее. Последний пример: понадобилось прикрутить к docker контейнеру с postgersql внутри авторизацию по AD, выясняю, что авторизации аж 10 видов из которых мне подходят целых 4, начинаем искать:

1. официальный сайт - общие термины, примеры. Указано куда вносить - нет. Работает? НЕТ! 

2. Сторонние сайты - сотни страниц с текстом типа "добавь строку сюда и все будет работать", добавил, не работает.

Потратил уже 3 дня на поиск решения, голова кипит, когда очередной рецепт не помогает членораздельно произнести могу только маты. ВСЁ БЕСИТ!!!!

В общем я слишком старый для IT - уйду в сторожа, буду сидеть, пить чай и разговаривать сам с собой.

P.S: просто выговорится, может что то щелкнет в голове и получу либо инсульт либо некую умную мысль с решением.

Показать полностью
15

Нужна помощь в настройке SSH туннеля для клиента 1С

Приветствую Всех и прошу помощи у знающих людей.

Суть проблемы такая, изучаю возможность подключения через интернет клиента 1С Бухгалтерии по SSH туннелям.


Дано:

Сервер 1С (Linux)

Компьютер в локалке с этим сервером, и с доступом к нему из вне по SSH (Linux)

Клиент с интернетом  (Windows)


Что по теории:

Гипотетически через SSH туннель можно пустить любой TCP трафик, для этого нужно лишь правильно настроить промежуточный узел, и поднять до него туннель. SSH туннель по Windows буду поднимать с помощью plink или putty.

Для работы 1С клиента используются TCP порты 1540, 1541, 1560-1591

netstat на сервере 1С выдает, что прослушиваются три порта 1540, 1541, 1560


Что по практике:

Настраиваю промежуточный узел, в sshd_config устанавливаю PermitTunnel yes

Настраиваю клиент Windows

plink.exe -N -L 1540:IP_1C_SERVER:1540 -L 1541:IP_1C_SERVER:1541 -L 1560:IP_1C_SERVER:1560 IP_MID_COMP user@MID_COMP

В 1С в настройках базы указываю сервер localhost. Проверяю что в hosts есть запись 127.0.0.1 localhost.

Поднимаю туннель и пробую запускать 1С, и получаю:

Ошибка определения принадлежности клиентского и серверного процессов одному компьютеру

Проверяю туннель на других сервисах локальной сети - все ок. Не работает только с 1С, из чего делаю вывод что проблема в клиенте 1С.


Пытался найти корень проблемы самостоятельно но интернет не дает вразумительных пояснений по данной ошибке, везде где упоминается данная ошибка предлагается прописать ip сервера в hosts в ручную, но это не имеет смысла потому как у меня уже есть запись 127.0.0.1 localhost.

Было подозрение, что клиенту 1С не нравится обращение к localhost потому, что он сам что то там поднимает. Поднял виртуальный петлевой интерфейс на клиенте и настроил все на него.

plink.exe -N -L 10.0.0.1:1540:IP_1C_SERVER:1540 ...

Поднял туннель и получил тот же результат.

Ошибка определения принадлежности клиентского и серверного процессов одному компьютеру

Тут у меня тупик. Есть предположения что это?

Понимаю, что изобретаю велосипед, но так надо. Получится ли?


Хочу сразу оговориться, я "не первый год замужем", потому прекрасно знаю как это можно решить по другому, но в силу определенных условий и обстоятельств интересно именно этот вариант решения. Если Вам есть что предложить - добро пожаловать в комментарии.

Показать полностью
100

Дорабатываем драйвера RTX 3060 / 3070 Laptop из Китая

Дисклеймер: Дополнительно считаю нужным пояснить. Автор этого руководства (то есть я) никоим образом НЕ АГИТИРУЕТ к покупке подобных товаров, оно расчитано на тех кто каким либо образом уже владеет данными видеокартами. Хотя мне думается, что каждый разумный человек знает, что использование неофициального железа и\или программного обеспечения сопряжено с риском, тем не менее поясню: ИСПОЛЬЗОВАНИЕ НЕОФИЦИАЛЬНОГО И НЕЛИЦЕНЗИОННОГО ПРОГРАММНОГО И АППАРАТНОГО ОБЕСПЕЧЕНИЯ ВСЕГДА ПРОИСХОДИТ НА СВОЙ СТРАХ И РИСК.


Доброго времени суток. В связи с недавними изменениями в сфере криптовалюты, рынок наводнили различные поделия ранее предназначенные для майнинга. Среди прочих - странные видеокарты-франкенштейны, как например доставшаяся мне за 10 000 руб RTX 3060 Laptop GPU, но в исполнении обыкновенной PCI-E карты. Функционал данного поделия, кстати ненамного хуже ее десктопной сестры, а если пошаманить с MSI Afterburner - то и на уровне, но это уже для фанатов. Казалось бы: "Видеокарта с оригинальным чипом? Работает? Дешево? Так ставь, в чем проблема?!" - Но не все так гладко. Устройство собиралось неофициально, где-то в подвалах поднебесной (где-то была инфа что из б\у чипов, отпаянных с ноутбуков, что в итоге похоже на правду, но при замене термопасты на Termal Grizzly - каких либо потемнелостей и\или повреждений замечено не было, так что лично у меня за такую цену претензий нет, тем более добывал я ее еще когда хоть какая-то видеокарта была сокровищем и страшным дефицитом) и соответственно официальной поддержки не имеет. К чему это я? - Спросят непосвященные - А я к тому, что драйвера с официального сайта не встают на нее. Вот так вот. Поэтому драйвера нужно скачивать по ссылке продавца с Алиэкспресс. (Да, я знаю что это небезопасно и с точки зрения информационной безопасности вообще фу, но тот, кто уже совершил покупку должен стойко переносить тяготы и лишения использования неофициального продукта.) Но так как пишу эту статью я в основном для обладателей данного продукта (и, вполне возможно, они такие же любители геморроя, как и я), у них может возникнуть ряд проблем.

В связи с этим, ниже я собрал основные проблемы и способы решения, которые я вывел помогая подругам, которые не читая описание товара и отзывы купили данное чудо вперед меня. Пишу в надежде что это поможет людям.


Проблема №1: Драйвер не встает, пишет сбой.

Решение:

Перезагрузиться с шифтом, выбрать дополнительные варианты загрузки - выбрать пункт № 7 - "Отключить проверку подписи драйверов" - и затем, когда система стартует установить драйвер.


Проблема №2: Драйвера встали, но после загрузки системы изображение почти сразу пропадает\зависает - при попытке посмотреть что происходит с помощью интегрированной графики - видим, что в диспетчере устройств видеокарта висит с восклицательным знаком.

Решение:

Отключить в настройках UEFI Secure Boot. Те кто помешан на безопасности могут сгенерировать свой сертификат для Secure Boot, или же купить брендовую десктопную видеокарту. На самом деле для простого пользователя это - лучшее решение.


Проблема №3: Которая и побудила меня написать данный пост в итоге: захотел я поиграть в Portal with RTX, а оно требует свежего драйвера. А продавец отправил жутко древний драйвер. А свежий не встает и все тут. На этом моменте лучшее решение - купить наконец нормальную видеокарту! Однако, уважаемый читатель может осознать, что этот путь не для него... Однако о чем это я? Точно, обновляем драйвер.

Решение:

1) Качаем свежий именно LAPTOP драйвер с официального сайта.

2) Качаем 7zip (если не установлен) и открываем с его помощью скачанный .EXE и распаковываем в любое удобное место.

3) Открываем папку "Display.Driver" и ищем файл "nv_dispig.inf", затем открываем его блокнотом.

4) Листаем до раздела "[NVIDIA_Devices.NTamd64.10.0...14393]" или пользуемся кнопкой "найти далее" и вбиваем название пункта без кавычек.

5) В любое место в списке создаем новую строку и вставляем туда "%NVIDIA_DEV.2520.151D.10DE% = Section074, PCI\VEN_10DE&DEV_2520&SUBSYS_000010DE" так же без кавычек, сохраняем.

6) Аналогично решению проблемы №1 отключаем проверку подписи драйвера, устанавливаем

7) Вы великолепны)


Это все проблемы которые мне довелось встретить и их последующие решения. Надеюсь кому-либо это поможет.

P.S. Если кому-то из читателей захочется острых ощущений и будет много свободного времени - то он может забыть все вышепрочитанное, взять паяльник и поиграться с резисторами чтобы изменить Device ID например на 2520.0155.1558. - тогда и родные дрова с сайта будут вставать в нее как влитые.


Данное руководство полностью мое, на рейтинг не претендую, статью продублировал с Хабра, дабы увеличить охват тех, кому это может помочь. Ну и с первым постом на Пикабу меня)

Показать полностью
Отличная работа, все прочитано!