ИТ-заметки: субъективно
56 subscribers
23 photos
203 links
ИТ заметки по Network, Ops, DevOps

🔗 it.mxav.ru
Download Telegram
Правила в iptables для Zabbix

Часто в процессе настройки сервера и/или агентов Zabbix требуется прописывать правила для файервола. Обычно используются порты 10050 на агенте и 10051 на сервер.
Например, для сервера в iptables вот такое правило может быть:
iptables -A INPUT -s IP_ADDRESS_AGENT/32 -p tcp -m tcp --dport 10051 -j ACCEPT

Eсли для всех надо сделать порт доступным
iptables -A INPUT -p tcp -m tcp --dport 10051 -j ACCEPT

Если правило надо поместить на самый верх цепочки, то
iptables -I

На агенте:
iptables -A INPUT -s IP_ADDRESS_SERVER/32 -p tcp -m tcp --dport 10050 -j ACCEPT

Удаление правил:
iptables -D INPUT -s IP_ADDRESS_AGENT/32 -p tcp -m tcp --dport 10051 -j ACCEPT
iptables -D INPUT -s IP_ADDRESS_SERVER/32 -p tcp -m tcp --dport 10050 -j ACCEPT
iptables -D INPUT -p tcp -m tcp --dport 10051 -j ACCEPT


#zabbix@itmxav
#linux@itmxav
#iptables@itmxav
#firewall@itmxav

🔗 На сайте
Как включить IP Forwarding в Linux?

Чтобы включить пересылку пакетов между интерфейсами на Linux надо для начала проверить состояние форвардинга:
sysctl net.ipv4.ip_forward

Если net.ipv4.ip_forward = 0, то выключен. Если 1, то включен.

Времененно включить IP Forwarding можно командой
# sysctl -w net.ipv4.ip_forward=1

Отключить
# sysctl -w net.ipv4.ip_forward=0

Чтобы постоянно был включен IP Forwarding надо прописать в файле /etc/sysctl.conf
net.ipv4.ip_forward = 1

Постоянно отключен
net.ipv4.ip_forward = 0

Далее применяем конфигурацию
# sysctl -p

#linux@itmxav
#сети@itmxav

🔗 На сайте
Как записать образ ОС на флешку через dd на Linux?

Небольшая заметка про простой способ записать образ ОС на флешку.
Подключаем флешку с файловой системой FAT32, запускаем команду в терминале с указанием нужного образа, параметров и ждем завершения.
$ sudo dd if=/home/chocobo/Загрузки/linuxmint-18-cinnamon-32bit.iso of=/dev/sdb bs=4M

if — путь к образу
of — куда записать (физический устройство)
bs — размер блока

Есть ещё интересный вариант. Качаем с Инета и сразу записываем (нужно установить curl)
$ curl -L http://mirror.yandex.ru/linuxmint/stable/18/linuxmint-18-mate-64bit.iso | sudo dd of=/dev/sdb bs=4M


#linux@itmxav

🔗 На сайте
Установка Альт Сервер

Сделал видео на тему простой установки Альт Сервера в формате FastHowTo. Что-то описывать в текстовом варианте смысла нет, т.к. установка обычная. По созданию установочной флешки на Windows тоже есть видео. Если на Linux, то можно через dd записать образ.

Установка Альт Сервера
🎬 На Youtube
🎬 На Rutube

Как создать установочную флешку через Rufus?
🎬 На Youtube
🎬 На Rutube

#linux@itmxav
#fasthowto@itmxav

🔗 На сайте
Ошибка в VirtualBox E_ACCESSDENIED (0x80070005)

После перезагрузки ОС на Linux Ubuntu перестали запускаться виртуальные машины на VirtualBox.

В логах появляется ошибка
ERROR [COM]: aRC=E_ACCESSDENIED (0x80070005) aIID={...} aComponent={DisplayWrap} aText={The console is not powered up (setVideoModeHint)}, preserve=false aResultDetail=0

Пытался решить разными способами эту проблему. Кто-то писал в интернете, что надо переустановить ​Extension Pack, кто-то отмечал, что надо в настройках ВМ USB 1 поставить. После разных попыток и анализа того, что происходит помогла только переустановка VB на последнюю версию:

1. Лучше папку с ВМ переименовать. Например добавить .bak в хвост, чтобы случайно не удалить её вместе с удалением VB.
2. Далее удаляется VB и VB-dkms через remove на Ubuntu, не через purge
sudo apt remove virtualbox
sudo apt remove virtualbox-dkms

3. Скачивается последняя версия VB и Extension Pack на оф.сайте.
4. Устанавливается VB
sudo dpkg -i virtualbox-7.0_7.0.20-163906~Ubuntu~focal_amd64.deb

5. Устанавливаем Extension Pack. Просто 2 раза кликнуть по файлу ЛКМ.
6. Возвращаем имя папки с виртуальными машинами и пробуем запустить всё.

#virtualbox@itmxav
#linux@itmxav

🔗 На сайте
Простая установка Ред ОС

Сделал видео на тему простой установки Ред ОС в формате FastHowTo. Что-то описывать в текстовом варианте смысла нет, т.к. установка обычная. По созданию установочной флешки на Windows тоже есть видео. Если на Linux, то можно через dd записать образ.

Установка Ред ОС
🎬 На Youtube
🎬 На Rutube

Как создать установочную флешку через Rufus?
🎬 На Youtube
🎬 На Rutube

#linux@itmxav
#fasthowto@itmxav

🔗 На сайте
Связка Obsidian c GitLab или замена Notion

Относительно недавно многие начали искать замену Notion. Решил потестировать вариант Obsidian + GitLab (self hosted). Поставилось всё достаточно просто. Единственная момент возник когда хотел чтобы при push можно было вводить пароль с логином, но потом переделал на ssh ключи, потому что так удобнее по горячим клавишам всё отправлять и не делать лишних телодвижений.
Для Obsidian есть встроенные или сторонние плагины. Если новый репозиторий создается, то всё как обычно инициализируется в папке с заметками. Если подключить имеющийся надо, то можно просто клонировать и Obsidian найдет в папке с заметками git раздел. Для работы с GitLab (или GitHub) надо поставить плагин Git автора Vinzent (он самый распространенный, хотя может и другие есть) и на машину сам Git, конечно. В настройках плагина указать путь до исполняемого Git, от кого коммиты и email.
Графы связности заметок рисуются хорошо, если вдруг всё сильно разрастется и надо будет искать что с чем связано. Тем для оформления много. Markdown поддерживается.
На мой взгляд хорошая альтернатива Notion в плане основных функций. Конечно, это всё на вкус и цвет. Можно много других готовых вариантов найти или костылей нагородить, но здесь базовые вещи есть (структуры каталогов, визуальная связность заметок, возможность организовать версионность заметок + бэкапы через gitlab, поддержка markdown) и этого, мне кажется, для решения многих задач достаточно. А если недостаточно, то возможности кастомизации есть.
Приложения для разных платформ тоже есть, но над вопросом связности всех устройств надо будет подумать. Мне было интересно посмотреть как это всё запустить на обычных рабочих компах. Посмотрим, что будет дальше 😊

#разное@itmxav

🔗 На сайте
Ошибка при удалении репозитория в GitLab

Недавно в GitLab столкнулся с ошибкой при удалении репозитория:
This project was scheduled for deletion, but failed with the following message: Failed to open TCP connection to 127.0.0.1:5000 (execution expired)
The project visibility may have been made more restrictive if the parent group's visibility changed while the deletion was scheduled.

Поиски по инету привели к следующему решению. Включить недостающий модуль в файле /etc/gitlab/gitlab.rb изменив конфиг
gitlab_rails['registry_api_url'] = "http://127.0.0.1:5000"
gitlab_rails['registry_key_path'] = "/var/opt/gitlab/gitlab-rails/certificate.key"
gitlab_rails['registry_issuer'] = "omnibus-gitlab-issuer"
### Settings used by Registry application
registry['enable'] = true
registry['username'] = "registry"
registry['group'] = "registry"
registry['uid'] = nil
registry['gid'] = nil
registry['dir'] = "/var/opt/gitlab/registry"
registry['registry_http_addr'] = "localhost:5000"
registry['debug_addr'] = "localhost:5001"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env_directory'] = "/opt/gitlab/etc/registry/env"
registry['env'] = {
'SSL_CERT_DIR' => "/opt/gitlab/embedded/ssl/certs/"
}
registry['log_level'] = "info"
registry['log_formatter'] = "text"
#registry['rootcertbundle'] = "/var/opt/gitlab/registry/certificate.crt"
registry['rootcertbundle'] = "/var/opt/gitlab/registry/gitlab-registry.crt"
registry['health_storagedriver_enabled'] = true
registry['storage_delete_enabled'] = true
registry_external_url 'https://registry.gitlab.example.com'
registry_nginx['enable'] = true
registry_nginx['listen_port'] = 4567

После внесения изменений переконфигурируем gitlab и перезапускаем
gitlab-ctl reconfigure
gitlab-ctl restart

Также надо добавить правило в IPTables (если его нет и весь лишний трафик блокируется) или туда, где задаются правила
iptables -I INPUT -s 127.0.0.1/32 -j ACCEPT

Или разрешить конкретный порт можно по такому принципу, если нужно более строгое правило. Главное чтобы localhost мог работать c запросами внутри сервера.

#iptables@itmxav
#linux@itmxav

🔗 На сайте
Второй монитор для ноутбука c картой Nvidea и Debian 12

Если есть ноутбук с видеокартой Nvidia и при подключении второго монитора экран этого монитора белый, то скорее всего не хватает драйверов как написано в wiki. Вот здесь можно посмотреть поддержку карт Nvidea.
1. Подключаем репозиторий в /etc/apt/sources.list
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware

2. И устанавливаем необходимое ПО
apt update
apt install nvidia-driver firmware-misc-nonfree

3. Перезагружаем ноутбук.

#linux@itmxav

🔗 На сайте
Как в Cisco по ip адресу узнать mac устройства

Иногда в Cisco бывает нужно быстро найти mac по IP. Сделать это достаточно просто. Смотрим arp таблицу и фильтруем по известному ip через include
sh ip arp | i 10.111.222.111

#cisco@itmxav
#сети@itmxav

🔗 На сайте
👍2
GitLab не обновляет сертификат Let's Encrypt после своего upgrade

Спустя несколько месяцев после upgrade, GitLab начал выдавать ошибку, что не смог обновить сертификат от Let's Encrypt. При обновлении вручную через
gitlab-ctl renew-le-certs

сертификат тоже не хотел обновляться.
Помогла реконфигурация, в процессе которой GitLab запросил новый сертификат и нормально всё обновил.
gitlab-ctl reconfigure


#linux@itmxav

🔗 На сайте
Как заблокировать трафик от определенного MAC на Cisco

Иногда надо заблокировать трафик от определенного MAC на Сisco, особенно если там DHCP крутится.
Можно сделать это следующим образом:
1. Переходим в нужный режим на Cisco и создаем ACL с указанием MAC
conf t
mac access-list extended MACL
deny any host FFFF.FFFF.FFFF
permit any
exit

2. Вешаем ACL на нужный порт
interface fastEthernet 0/1
mac access-group MACL in


#сети@itmxav
#cisco@itmxav

🔗 На сайте
Ошибка 500 при применении параметра Repository by URL в GitLab

Столкнулся недавно с ситуацией, что при применении Repository by URL в GitLab в разделе
Admin area -> setting ->  Import and export settings -> Repository by URL

Запрос подвисает и в логах пишет
/var/log/gitlab/puma/puma_stderr.log:source=rack-timeout id=.... timeout=60000ms service=60000ms state=timed_out at=error
/var/log/gitlab/gitlab-rails/production_json.log:{"method":"PATCH","path":"/admin/application_settings/general","format":"html","controller":"Admin::ApplicationSettingsController","action":"general","status":500.....{"key":"authenticity_token","value":"[FILTERED]....


Оказалось, что при применении этого параметра идет запрос в DNS. Решилась проблема просто добавлением нужных правил:
iptables -I INPUT -s IP_DNS/32 -p udp -m udp --sport 53 -j ACCEPT
iptables -I INPUT -s IP_DNS_2/32 -p udp -m udp --sport 53 -j ACCEPT


#linux@itmxav

🔗 На сайте
Как вывести виртуальную машину Proxmox из error state?

Из-за различный ситуаций виртуальная машина, которая находится в общей HA-группе или нет, может улететь в ошибку. Чтобы изменить её состояние можно на узле сделать:
ha-manager set vm:<VMID> --state disabled


#proxmox@itmxav

🔗 На сайте
Как перейти в chroot и запустить инициализацию Linux?

Когда ломается система на Linux и она зависает при загрузке, то иногда полезно попробовать запуститься через chroot и посмотреть на каком шаге всё ломается при загрузке.
1. Запускаемся с Live-CD сервер.
2. Монтируем нужный раздел, посмотрев всё предварительно через blkid, fdisk -l. Например, sda2
mount /dev/sda2 /путь/к/точке/монтирования

2. Создаем временную папку, которая будет новым корнем и заходим в нее
# mkdir /путь/к/новому/корню; cd /путь/к/новому/корню

3. Мониторуем каталоги для chroot
# mount -t proc proc proc/
# mount -t sysfs /sys sys/
# mount --rbind /dev dev/

Дополнительная информация:
Если нужен раздел run, то можно примонтировать вот так
mount --rbind /run run/

Если у есть UEFI, то надо примонтировать ещё
mount --rbind /sys/firmware/efi/efivars sys/firmware/efi/efivars/

Для работы по сети копируем resolv.conf
cp /etc/resolv.conf etc/resolv.conf

4. Пробуем зайти в оболочку
chroot /путь/к/новому/корню /bin/bash

5. Запускаем инициализацию/
make-initrd

или
make-initrd --kernel=`uname -r`

или можно полный путь указать к ядру вместо uname -r.

Чтобы всё размонтировать
umount --recursive /путь/к/новому/корню


#linux@itmxav

🔗 На сайте
Как включить fast boot при загрузке в Linux?

Иногда бывают ситуации, когда при загрузке нужно быстрее передать управление ОС. Например, проигнорировать тестирование разных устройств перед загрузкой. Это можно сделать добавив в GRUB параметр fastboot.
1. В процессе загрузки GRUB нажимает e
2. Ищем строчку наподобие
linux  /boot/vmlinuz root=UUID=..... panic=30 splash

3. В конце через пробел добавляем fastboot
linux  /boot/vmlinuz root=UUID=..... panic=30 splash fastboot 

4. Загружаемся

#linux@itmxav

🔗 На сайте
Не открываются настройки на Ubuntu или can't load libspa-support

После одного из обновления на Ubuntu поймал ошибку, когда при нажитии на "настройки" эти настройки системы не открывались.

При вызове gnome-control-center вылетела ошибка
can't load /usr/lib/x86_64-linux-gnu/spa/support/libspa-support.so: /usr/lib/x86_64-linux-gnu/spa/support/libspa-support.so: cannot open shared object file: No such file or directory
Segmentation fault (core dumped)


Нечто похожее нашел bugs.launchpad.net
Помогла установка pipewire, в которой и был нужный файл.
apt install pipewire 


#linux@itmxav

🔗 На сайте
Из списка мэйнтейнеров ядра Linux удалено 11 участников, которые предположительно из РФ [Новости]

Наверно, многим известно уже про эту новость. В какой-то момент при обсуждении ситуации появился Линус. И вот что отметил в одном из писем
I'm Finnish. Did you think I'd be *supporting* Russian aggression? Apparently it's not just lack of real news, it's lack of history knowledge too.

На это прекрасное знание истории ему ответил Ivan Epifanov
As an avid history lover, you've seem to forgot, that Finland fought on Nazi side.
So yeah, we're well aware you don't like Russians, unless they're in concentration camps.
Which is exactly what you do now: segragate, based on nationality. Strip of credits and names.

Наверно, понятно, что аполитичности сообщества ядра нет. Политика там идет в полный рост. Можно, конечно, поразмышлять или пофантазировать кто на кого влияет и что будет в дальнейшем, но что-то мне подсказывает, что в ближайшем будущем будет много интересного в мире ИТ.

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

#разное@itmxav

🔗 На сайте
Как посмотреть загрузку процессора (CPU) на Cisco?

Иногда бывает нужно посмотреть какие процессы грузят Cisco. Сделать это можно следующим образом:

# sh processes cpu | exclude 0.00


Выводим весь список процессов и убираем тех, кто потребляет 0.

#cisco@itmxav

🔗 На сайте
1
Как настроить chroot для sftp (OpenSSH)?

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

Для того чтобы настроить chroot надо сделать следующее :
1. Открываем /etc/ssh/sshd_conf
nano /etc/ssh/sshd_conf 

2. Найти строчку относительно sftp. Закомментировать её и добавить ниже новую, чтобы использовался встроенный sftp-сервер
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -f AUTH -l VERBOSE

3. Переходим в конец файла и добавляем
Match user usertest
ChrootDirectory /home
ForceCommand internal-sftp -d /usertest
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

В случаем подключения пользователя usertest попадаем в домашнюю папку /home/usertest.
На всякий случай можно отключить переадресацию агентов (AllowAgentForwarding), портов SSH (AllowTcpForwarding), возможность графических интерфейсов X11 программ (X11Forwarding) и возможности туннелирования (PermitTunnel), если глобально что-то включено. ForceCommand internal-sftp говорит о том, что можно использовать только встроенный sftp.
В ChrootDirectory можно указывать не только конкретный каталог, но переменную %h (home directory).
Если же необходимо на группу пользователей сделать, то
Match group ugroupsftp
ChrootDirectory /home
ForceCommand internal-sftp -d %u
AllowTcpForwarding no
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Вместо пользователя указываем нужную группу и папку для ChrootDirectory, в данном случае home. %u - параметр для папки пользователя, если она совпадает с именем.
Т. е. сначала идет подключение в ChrootDirectory, а потом автоматический переход в папку пользователя /home/usertest

4. Важный момент! Чтобы всё работало необходимо установить правильные права на папки:

/home и ветка выше, если не home, должна принадлежать пользователю root и группе root.
/home/usertest должна принадлежать пользователю usertest и группе usertest, а также установлены права "drwxr-x---" или более низкие. Это для того, чтобы другие пользователи не заходили в домашнюю папку, если их нет в группе конкретного пользователя.

5. Далее проверяем конфигурацию
sshd -t 

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

6. Перечитываем конфигурацию sshd
systemctl reload sshd


#linux@itmxav

🔗 На сайте