NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
498 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
Ограничение процессов по CPU

Иногда необходимо жестко контролировать, какие ядра процесс может занимать, например, чтобы тяжелые задачи не забивали сервер или чтобы критичные сервисы не конкурировали за ресурсы. В linux это решается утилитой taskset, которая позволяет как изменять affinity уже работающих процессов, так и запускать новые с заданными ограничениями.

1️⃣ Привязка уже запущенного процесса к выбранным ядрам. Для начала найдем PID процесса. Выберите любой удобный способ:


ps aux | grep myapp
pidof myapp
pgrep -f myapp


Посмотрим CPU в системе:


lscpu | grep -E 'CPU\(s\)|NUMA'


Пример вывода:


CPU(s): 8
NUMA node0 CPU(s): 0-7


Допустим, нам нужно посадить процесс на ядра 0–2. Для этого:


taskset -pc 0-2 1574


Пример результата:


pid 1574's current affinity list: 0-7
pid 1574's new affinity list: 0,1,2


Теперь процесс гарантированно не займет остальные ядра.

2️⃣ Запуск программы с ограничением по CPU. Это более практичный вариант: мы сразу запускаем процесс с нужными ограничениями. Но тут есть нюанс: taskset требует mask (битовой маски), а не списка ядер.

Как работает маска?

Каждое ядро - это один бит:

Ядро Маска
0 1
1 2
2 4
3 8
… …

Например:
ядра 1 и 2 = 2 + 4 = 6 → маска 0x06


Пример запуска с ограничением на одно ядро. Запустить программу только на ядре 0:


taskset 1 gzip hugefile


(маска 1 = ядро 0)

Пример: запуск на ядрах 2 и 3

Маска: 4 + 8 = 12 = c


taskset c gzip hugefile


3️⃣ Как быстро узнать маску для нужных ядер. Если не хочется считать вручную, то есть хитрый трюк. Назначаем список ядер любому процессу:


taskset -pc 4-5 $(pidof systemd-journald)


А теперь смотрим его маску:


taskset -p $(pidof systemd-journald)


Пример:


pid 412's current affinity mask: 30


Вот и маска.

4️⃣ Наглядный тест с помощью xz. Архиватор xz умеет использовать несколько потоков, и его хорошо видно в htop. Создаем тестовый файл:


dd if=/dev/urandom of=/tmp/testfile bs=1M count=200


Запускаем xz только на ядрах 0 и 1 (маска 3):


taskset 3 xz -T2 /tmp/testfile


Смотрим в htop и процесс будет занимать строго эти два ядра.

#linux #taskset

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
🖥 Nmap - полезные сценарии

Nmap - это не только сканер портов, но и инструмент для быстрой диагностики сети. Небольшая подборка команд, которые часто выручали меня в работе.

▪️ Быстрый обзор хоста


nmap -Pn -sS -T4 10.20.1.5


SYN-скан, не пингуем сначала, быстрый тайминг.

▪️ Топ-портов и сервисы


nmap -sV --top-ports 100 10.20.1.0/24


Узнаем версии сервисов по 100 самым распространенным портам в подсети.

▪️ Полный TCP-портскан


nmap -p- -T4 10.20.1.5


Сканируем все 65535 TCP-портов.

▪️ UDP-быстрый скан


sudo nmap -sU --top-ports 50 10.20.1.5


UDP требует прав root и больше времени - выбирайте топ-порты.

▪️ OS и глубокая детекция


sudo nmap -A 10.20.1.5


Включает обнаружение ОС, версий, скрипты и traceroute.

▪️ NSE-скрипты для быстрого аудита


nmap --noscript ssl-enum-ciphers,http-noscript -p 443,80 10.20.1.5


Проверяем SSL-шифры и заголовок сайта.

▪️ Массовый вывод в файлы


nmap -sV -oA scans/site_scan 10.20.1.0/24


Создаст site_scan.nmap, .gnmap и .xml - будет удобно для отчетов.

▪️ Сканирование живых хостов


nmap -sn 10.20.1.0/24


Быстрый ping-scan, покажет кто в сети сейчас.

#nmap #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193😁1
☁️ Как проверить обращения на TCP-порт 22 от клиента с нужного IP

Иногда нужно выяснить, было ли соединение на SSH-порт сервера (обычно 22) с конкретного адреса. Казалось бы, задача простая, но есть несколько подходов - как для активных соединений, так и для анализа постфактум.

▪️ Активные подключения. Если соединение активно прямо сейчас, смотрим его в списке сетевых сокетов.
Современный инструмент - ss:


ss -ntu | grep ':22'


Аналог - netstat:


netstat -ntu | grep ':22'


Еще один полезный вариант - lsof:


lsof -ni TCP:22


▪️ Логирование попыток подключения. Если интересуют прошлые соединения, а не только активные, то тут уже нужны логи.
SSH по умолчанию пишет в системный журнал (/var/log/auth.log или /var/log/secure), но для других сервисов можно включить логирование через firewall.

Пример для iptables:


iptables -N ssh_in
iptables -A INPUT -p tcp --dport 22 -j ssh_in
iptables -A ssh_in -j LOG --log-level info --log-prefix "--IN--SSH-- "
iptables -A ssh_in -j ACCEPT


Теперь все подключения на порт 22 будут попадать в syslog.
Хотите отдельный лог - добавьте правило в rsyslog.

На практике часто используют отдельные цепочки (INPUT, OUTPUT, FORWARD), куда добавляют правила для логирования нужных адресов и портов.

▪️ Альтернативный способ. Можно посмотреть информацию о соединениях напрямую в conntrack:


cat /proc/net/nf_conntrack | grep 'dport=22'


По сути, ss и netstat читают данные именно отсюда.

#network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🗓 Где искать все запланированные задания

Три основных механизма, которые могут использоваться в linux:

1️⃣ Cron - классика планировщика. Cron существует с начала времен UNIX, и до сих пор активно используется.

Где искать системные задания:


/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/


Где искать пользовательские задания:


/var/spool/cron/crontabs


или просто:


crontab -u user01 -l


Каждый пользователь имеет свой отдельный список задач.

2️⃣ systemd timers - современная замена cron. Почти все современные дистрибутивы перешли на systemd timers.
Они более гибкие: умеют запускать сервисы с зависимостями, работать после событий, логировать в journal и даже поддерживают случайные задержки.

Посмотреть список таймеров:


systemctl list-timers


Все таймеры, включая неактивные:


systemctl list-timers --all


Подробнее о конкретном таймере:


systemctl status logrotate.timer


Примеры стандартных таймеров, установленных по умолчанию:


apt-daily.timer
fstrim.timer
logrotate.timer
anacron.timer


3️⃣ at - разовые задачи. Старый, но всё ещё полезный инструмент для единичных отложенных команд.
Идеален для задач вроде: выполни через 5 минут и забудь.

В Debian 11+ утилита не устанавливается по умолчанию, но в CentOS/RHEL она ещё есть:


apt install at


Проверить очередь задач:


atq


Добавить разовую задачу:


echo "shutdown -h now" | at -m 10:20


Задачи хранятся в:


/var/spool/cron/atjobs/
или /var/spool/at/


#cron

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
Тикет: ЭЦП не работает

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32🙈102
🖥 Замер реальной пропускной способности сети в linux и windows

iperf3 - показывает реальную пропускную способность между двумя хостами, минуя влияние дисков, приложений и прочего. Ранее уже был пост - ссылка. Здесь продолжение, с реальным примером замера и полезными флагами.

▪️ Принцип работы

iperf3 работает по схеме клиент–сервер.
Один узел запускается в режиме сервера, второй - в режиме клиента.
Сервер принимает входящий трафик, а клиент его генерирует.

▪️ Пример замера

1️⃣ На сервере:


iperf3 -s


не забываем, что по умолчанию слушает порт 5201, он должен быть открыт.

2️⃣ На клиенте:


iperf3 -c 192.168.1.10


Результат:


[ 5] 0.00-10.00 sec 1.09 GBytes 935 Mbits/sec sender
[ 5] 0.00-10.00 sec 1.09 GBytes 935 Mbits/sec receiver


То есть реальная пропускная способность между хостами - ~935 Мбит/с.

▪️ Полезные опции

📍-R - измерение скорости в обратном направлении (reverse).


iperf3 -c 192.168.1.10 -R


📍-u - UDP-тест (по умолчанию TCP). Можно задать целевую скорость:


iperf3 -c 192.168.1.10 -u -b 500M


📍-f - единицы измерения (m для Mbits, M для MBytes):


iperf3 -c 192.168.1.10 -f m


📍 Быстрый тест "все в одном". Если у вас SSH-доступ к обеим сторонам:


iperf3 -s & ssh user@192.168.1.10 'iperf3 -c $(hostname -I | awk "{print \$1}") -P 4'


Скрипт запускает сервер локально и клиент удаленно, автоматически подключая IP.

#network #iperf3

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
🕘 Оптимизация загрузки системы

Один из частых вопросов: почему система грузится так долго? Для раскрытия этой тайны можно использовать встроенный инструмент systemd-analyze, который покажет подробную статистику загрузки и поможет найти узкие места.

▪️ Базовый анализ времени загрузки. Простейшая команда:


systemd-analyze


Пример вывода:


Startup finished in 2.351s (kernel) + 8.512s (userspace) = 10.863s


kernel - время работы ядра до запуска systemd
userspace - запуск сервисов и инициализация systemd
итоговое время загрузки

▪️ Кто тормоз? Чтобы узнать, какие юниты грузились дольше всего:


systemd-analyze blame


Вывод отсортирован по времени запуска. На первых строках будут виновники торжества.

▪️ Граф зависимостей. Для наглядности можно построить диаграмму загрузки:


systemd-analyze critical-chain


Она покажет цепочку сервисов, которые напрямую влияют на общее время старта.

Для детального графа в SVG:


systemd-analyze plot > boot.noscript


Файл можно открыть в браузере - это визуализация всех юнитов и их зависимостей.

▪️ Оптимизация

1️⃣ Отключить ненужные сервисы


systemctl disable bluetooth.service
systemctl disable cups.service


2️⃣ Использовать systemd-analyze blame для точечной оптимизации
Например, если дольше всего грузится NetworkManager-wait-online.service, можно сократить или отключить ожидание сети.

3️⃣ Параллелизация загрузки. systemd умеет запускать независимые сервисы параллельно, поэтому полезно проверять зависимости в systemd-analyze critical-chain.

4️⃣ Использовать mask для блокировки ненужных юнитов


systemctl mask service_name


#systemd #boot

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
⁉️ IPv6 в локальной сети: нужен ли он вообще

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

А вот проблем добавить он может:

требует отдельной настройки безопасности,
нужно следить за совместимостью сервисов,
а если забыть про firewall для IPv6, то появится открытая дыра, о которой даже не узнаете.

Если протокол вам не нужен, то его стоит отключить.

▪️ Как отключить IPv6 в linux

Сделать это можно тремя способами, в зависимости от ситуации.

1️⃣ Через sysctl. Добавьте строки в /etc/sysctl.conf:


net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1


Примените изменения:


sysctl -p


2️⃣ Через параметры GRUB (глобально). Если система только настраивается - проще всего отключить IPv6 через загрузчик.
Откройте /etc/default/grub и добавьте в строку:


GRUB_CMDLINE_LINUX="... ipv6.disable=1"


(оставшиеся параметры не удаляйте, просто добавьте через пробел)

Обновите конфигурацию загрузчика:


update-grub # Debian/Ubuntu
dpkg-reconfigure grub-pc
grub-mkconfig -o /boot/grub/grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/CentOS


После этого - перезагрузка и проверка:


ip a
ss -tulnp


Если IPv6 отключен - адресов вида ::1 или fe80:: вы больше не увидите.

3️⃣ Отключение для конкретного интерфейса. Иногда нужно отключить IPv6 не глобально, а только на одном интерфейсе.
Добавьте в /etc/sysctl.conf:


net.ipv6.conf.eth0.disable_ipv6 = 1


или примените временно:


sysctl -w net.ipv6.conf.eth0.disable_ipv6=1



▪️ Примечание для Windows

На windows лучше IPv6 не отключать. По словам microsoft, это может вызвать проблемы с внутренними сервисами и сетевыми компонентами системы.

#IPv6 #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133
Никто не обещал, что в жизни все будет легко

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27🔥31🗿1
😢 Скрыть содержимое bash-скрипта с помощью shc

Если нужно показать работу скрипта, но не отдавать исходники - можно скомпилировать его в бинарник через shc. Инструмент преобразует .sh в C-код и собирает исполняемый файл, на выходе пользователь получит работающий бинарник, но не читаемый скрипт.

▪️ Установка (Debian/Ubuntu):

apt install shc gcc


▪️ Пример. Есть noscript.sh:

#!/bin/bash
v=$1
echo "Simple BASH noscript. Entered VARIABLE: $v"


Компилируем:

shc -f -r noscript.sh


Появятся noscript.sh.x (бинарник) и noscript.sh.x.c (сгенерированный C). Запуск:

./noscript.sh.x 123
# Simple BASH noscript. Entered VARIABLE: 123


▪️ Полезные опции:

-e DD/MM/YYYY - срок годности; после даты бинарник не запустится.
-m "msg" - сообщение при истечении срока.

Пример с истечением:

shc -e 31/12/2025 -m "Срок истек" -f -r noscript.sh
./noscript.sh.x # Выдаст сообщение о просрочке


📌 Важное замечание по безопасности

shc - это обфускация, а не криптография. В конечном бинарнике содержимое может быть восстановлено (есть утилиты вроде UnSHc). Также секреты, записанные в скрипт, при выполнении будут лежать в памяти и их можно попытаться снять дампом. Это защита от случайного копирования, но не от целенаправленного анализа.


#noscript #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍84🤡1
🏠 Создание минималистичного образа Windows 11

Если вы хотите получить максимально легкий и чистый образ windows 11 - без мусора, предустановленных приложений и ненужных сервисов, то обратите внимание на nano11.

Это PowerShell-скрипт, который автоматизирует процесс сборки сильно урезанной версии Windows 11. Он использует встроенные средства DISM и oscdimg.exe, не требуя никаких внешних утилит. В результате получается компактный ISO-образ, идеально подходящий для тестирования, отладки или развертывания на виртуальных машинах.


▪️ Возможности nano11:

Создает минимальный ISO-образ Windows 11
Удаляет все предустановленные приложения и лишние компоненты
Не поддерживает обновления и добавление языков (только базовая сборка)
Подходит для VM и изолированных окружений
Полностью открытый исходный код, можно модифицировать под свои задачи

Репозиторий проекта 😺

#windows #powershell

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Чтобы наверняка не потерять

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🫡3💩1
🤠 Быстрый аудит безопасности

Бывает такое, что сервер уже настроен и работает, но не покидает ощущение - вдруг что-то упустил, оставил какую-то уязвимость - незащищенные параметры SSH, лишние службы, слабые настройки sysctl. Чтобы быстро проверить систему, удобно использовать Lynis, инструмент для аудита безопасности и оценки соответствия стандартам.

Lynis - это утилита с открытым исходным кодом, которая выполняет анализ конфигурации linux и unix подобных систем и выдает рекомендации по усилению безопасности. Она проверяет десятки аспектов системы:

настройки ядра и PAM,
файрвол и службы,
права на файлы,
SSH, cron, логирование,
пакеты и обновления.


▪️ Установка


apt install lynis #debian или ubuntu

yum install lynis #CentOS


▪️Проверка системы. Запустить аудит можно буквально одной командой:


lynis audit system


После выполнения вы получите подробный отчет с результатами и рекомендациями.
Файл отчета по умолчанию сохраняется в: /var/log/lynis.log
а краткий отчет в: /var/log/lynis-report.dat

▪️ Расшифровка результатов

В конце проверки Lynis показывает оценку безопасности - чем она выше, тем лучше.
Также будут даны рекомендации, например:


[WARNING] SSH root login is enabled
[SUGGESTION] Install a firewall management tool (ufw/firewalld)


Просто проходите по списку и исправляйте. После доработок можно снова запустить аудит и посмотреть, насколько улучшился индекс.

Официальный сайт 📌

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍161
⚡️ Быстрый HTTPS-сервер без сложных настроек

Иногда нужно быстро поделиться файлами между машинами - без nginx, apache и прочих решений. Для этого можно использовать встроенный веб-сервер python:


python3 -m http.server 8000


Он идеально подходит, когда нужно просто раздать файлы по HTTP: перешел в нужную директорию, запустил сервер, скачал - готово.

Но недавно понадобился HTTPS-сервер, так как приложение отказывалось работать по обычному HTTP. Настраивать nginx для этого не хотелось, и, как оказалось, все можно сделать тем же питоном, буквально в несколько строк.

▪️ Генерация самоподписанного сертификата. Создаем файл с ключом и сертификатом:


openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes


▪️ Минимальный HTTPS-сервер на python. Создаём файл webserver.py:


import http.server, ssl

server_address = ('172.20.0.210', 8000)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(
httpd.socket,
server_side=True,
certfile='localhost.pem',
ssl_version=ssl.PROTOCOL_TLSv1_2
)
httpd.serve_forever()


Запуск:


python3 webserver.py


После этого открываем в браузере:


https://172.20.0.210:8000


и видим содержимое директории (или сайт, если там есть index.html).

#python #https

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥31
🏃‍♂️ Сброс пароля root в linux через GRUB

Решил посмотреть, как на практике сбрасывается пароль root, и заодно поделиться с вами. Это классическая задача, которую часто дают на собеседованиях.

Цель - получить доступ к системе с правами root, даже если пароль неизвестен. Сделать это можно, изменив параметры загрузки ядра в GRUB.


▪️ Как это делается

1. Включаем сервер и ждем появления меню загрузки GRUB.
2. Выбираем нужный пункт и нажимаем e (латинскую).
3. В открывшемся редакторе ищем строку, начинающуюся с linux или linux16.
4. В самый конец этой строки добавляем:


rw init=/bin/bash


Это позволит запустить оболочку bash вместо стандартного systemd.

5. Нажимаем Ctrl+X или F10 для загрузки. После старта вы сразу окажетесь в консоли под пользователем root без пароля. Теперь можно просто задать новый пароль:


passwd


и перезагрузить систему:


exec /sbin/init


или


reboot -f


▪️ Как это работает

Параметр init= сообщает ядру, какой процесс нужно запустить первым.
Обычно это /sbin/init (или systemd), который отвечает за загрузку системы.
Когда мы подменяем его на /bin/bash, система вместо полноценной инициализации попадает прямо в консоль.
Фактически, вы оказываетесь в самой ранней стадии загрузки с полными правами root.

▪️ Для RHEL и производных

В системах вроде RHEL, CentOS, AlmaLinux, RockyLinux используется немного другой вариант:


rw rd.break enforcing=0


После загрузки окажетесь в emergency shell, где также сможете сбросить пароль через passwd.

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
🔐 GnuPG: шифрование и управление ключами

GnuPG (GNU Privacy Guard) - это открытая реализация стандарта OpenPGP (RFC 4880). Она позволяет:

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

Работает на всех системах - linux, macOS, windows, и не требует никаких внешних сервисов.


▪️ Основные команды для работы

1️⃣ Создание пары ключей:


gpg --full-generate-key


Тут нужно указать тип ключа (обычно RSA), длину (2048–4096), срок действия и e-mail для идентификации. После этого ключ сохраняется в ~/.gnupg/.

2️⃣ Просмотр ключей:


gpg --list-keys


3️⃣ Экспорт публичного ключа:


gpg --export -a user@networkadmin.ru > public.key


4️⃣ Экспорт приватного ключа:


gpg --export-secret-keys -a user@networkadmin.ru > private.key


5️⃣ Импорт ключа:


gpg --import public.key


▪️ Шифрование и подпись

Шифрование файла:


gpg -e -r user@networkadmin.ru secret.txt


Создается файл secret.txt.gpg, который можно расшифровать только соответствующим приватным ключом.

Расшифровка:


gpg -d secret.txt.gpg > secret.txt


Подпись файла:


gpg -s file.txt


Проверка подписи:


gpg --verify file.txt.sig file.txt


▪️ Несколько полезных команд

Проверить, какой ключ используется по умолчанию:


gpg --list-secret-keys --keyid-format LONG


Удалить ключ:


gpg --delete-key user@networkadmin.ru


Создать зашифрованный архив с tar:


tar cz folder | gpg -c > archive.tar.gz.gpg


#gpg #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🖥 Динамическая маршрутизация (OSPF/BGP)

Современные серверы и маршрутизаторы давно умеют не только работать с iptables и NAT, они вполне способны участвовать в динамической маршрутизации на уровне провайдерского оборудования. Два наиболее популярных решения для этого: BIRD и FRRouting (FRR).

Если вы используете статические маршруты (ip route add ...), то при изменении топологии сети приходится вручную обновлять таблицы маршрутов.
Динамические протоколы решают это автоматически: маршрутизаторы обмениваются маршрутами между собой, выбирают оптимальные пути и обновляют таблицы без участия администратора.

Основные протоколы:

OSPF (Open Shortest Path First) - для внутренних сетей (IGP)
BGP (Border Gateway Protocol) - для внешних соединений (межсетевые маршруты между организациями)


▪️ BIRD - легкий и быстрый демон маршрутизации

BIRD - это компактное и производительное решение, часто используемое в инфраструктуре провайдеров. Поддерживает IPv4, IPv6, OSPF, BGP, RIP и static.

Установка:


apt install bird # debian или ubuntu


Пример конфигурации OSPF:


protocol ospf {
area 0 {
interface "eth0" {
cost 10;
};
};
}


Пример простого BGP сессии:


protocol bgp mypeer {
local as 65001;
neighbor 192.168.1.2 as 65002;
import all;
export all;
}


Файлы конфигурации находятся в /etc/bird/.
После изменения конфигурации не обязательно перезапускать демон, можно использовать:


birdc configure


▪️ FRRouting (FRR) - наследник Quagga. FRR - это более тяжелое решение, ориентированное на продакшн-маршрутизаторы и крупные сети. Поддерживает OSPF, BGP, IS-IS, RIP, PIM и даже LDP.

Установка:


apt install frr frr-pythontools # debian или ubuntu


Конфигурация BGP (пример):


router bgp 65001
bgp router-id 192.168.1.1
neighbor 192.168.1.2 remote-as 65002
network 10.0.0.0/24


Запуск FRR:


systemctl enable frr
systemctl start frr


Конфигурация хранится в /etc/frr/frr.conf. Для управления используется утилита vtysh, она похожа на CLI сетевых устройств cisco или mikrotik.

#linux #networking

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Подготовка к выходу стажера

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18🔥2🤔1
🧑‍💻 Отладка контейнеров без инструментов

Иногда нужно что-то быстро продебажить внутри контейнера: посмотреть процессы, сделать ping, проверить DNS или снять tcpdump. Но чаще всего внутри контейнера нет вообще ничего, кроме самого приложения.

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

▪️ Пример использования. Создадим контейнер с Nginx, где нет даже ps:


docker run --name nginx -d -p 8080:80 nginx
docker exec -it nginx bash
ps axf

bash: ps: command not found


Теперь подключаем Network-Multitool к тому же namespace, где работает контейнер Nginx:


docker run --rm -it \
--network=container:nginx \
--pid container:nginx \
wbitt/network-multitool:alpine-extra bash


Проверим процессы:


ps axf
PID TTY STAT TIME COMMAND
47 pts/0 Ss 0:00 bash
60 pts/0 R+ 0:00 \_ ps axf
1 ? Ss 0:00 nginx: master process nginx -g daemon off;
29 ? S 0:00 nginx: worker process
30 ? S 0:00 nginx: worker process



Теперь у вас есть все необходимое: ping, dig, curl, tcpdump, netcat, iftop, mysql, git, tshark и многое другое.

▪️ Варианты сборок

alpine-extra - расширенная версия (максимум инструментов, включая tshark, ab, postgresql-client, git и др.).
alpine-minimal - легкая сборка, только базовые сетевые утилиты.

#docker #debug

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5
📱 Генератор конфигураций Nginx

Хочу напомнить о полезном сервисе для генерации конфигов nginx - https://nginxconfig.io/

▪️ Как работает

Вы просто заполняете форму: указываете домен, корневую директорию, нужные параметры HTTPS, настройки для WordPress, PHP-FPM, Node.js или Python. На выходе получаете полный набор конфигов, аккуратно разделённых на смысловые части:

основной конфиг Nginx;
настройки SSL и безопасности;
параметры для CMS (WordPress, Drupal и др.);
шаблон для Let’s Encrypt;
инструкции по установке и активации.

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

генерацию dhparam.pem для ssl_dhparam;
создание каталога /.well-known/acme-challenge для валидации сертификатов;
команду для настройки certbot.

▪️ Что полезного я подсмотрел

1️⃣ error_page 404 /custom_404.html;
Раньше я не всегда добавлял собственную страницу ошибок, а сервис по умолчанию предлагает аккуратную структуру с отдельным location для обработки 404 и 50x ошибок. Решил внедрить у себя - теперь логи чище, а пользователю отображается внятная страница.

2️⃣ add_header X-Frame-Options "SAMEORIGIN";
Мелочь, но важная - защита от clickjacking. Я добавил этот заголовок в общий конфиг, чтобы не прописывать вручную в каждом сайте.

3️⃣ ssl_protocols TLSv1.2 TLSv1.3;
Сервис сразу предлагает только современные протоколы.

4️⃣ location ~ /.(?!well-known)
Глобальная блокировка скрытых директорий, кроме .well-known для Let’s Encrypt - отличная идея.
Раньше я прописывал исключения вручную для каждого виртуального хоста, теперь вынес в общий файл security.conf.

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

#nginx #webserver

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1