🔧 Отключаем IPv6 правильно через sysctl — без костылей и багов
В некоторых окружениях (legacy-сети, специфичные firewall policy, старые софты) требуется полностью отключить IPv6. Многие делают это через GRUB (
📌 Надёжный способ — через sysctl:
🔥 Не забудь:
- Если у тебя кастомные интерфейсы (
- Также удали
📍 Когда применять:
– нет поддержки IPv6 на маршрутизаторах/файрволах;
– жёсткие требования к аудиту/безопасности;
– снижение attack surface.
⚠️ Важно:
Некоторые демоны (например, Postfix, systemd-resolved) могут логировать ошибки при отсутствии IPv6 — проверь логи!
Сохрани, пригодится. А ты полностью отключаешь IPv6?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
В некоторых окружениях (legacy-сети, специфичные firewall policy, старые софты) требуется полностью отключить IPv6. Многие делают это через GRUB (
ipv6.disable=1
), но это не всегда корректно: интерфейсы всё равно могут получать link-local адреса (fe80::/10
), что приводит к неожиданностям.📌 Надёжный способ — через sysctl:
cat << 'EOF' > /etc/sysctl.d/99-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
sysctl --system
🔥 Не забудь:
- Если у тебя кастомные интерфейсы (
eth0
, ens33
, и т.д.) — проверь их через sysctl net.ipv6.conf.<iface>.disable_ipv6
. - Также удали
::1
из /etc/hosts
, если не нужен loopback IPv6.📍 Когда применять:
– нет поддержки IPv6 на маршрутизаторах/файрволах;
– жёсткие требования к аудиту/безопасности;
– снижение attack surface.
⚠️ Важно:
Некоторые демоны (например, Postfix, systemd-resolved) могут логировать ошибки при отсутствии IPv6 — проверь логи!
Сохрани, пригодится. А ты полностью отключаешь IPv6?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
💥 Как настроить systemd-networkd для статического IP и маршрутов
Если ты не используешь NetworkManager (например, на серверах), systemd-networkd — отличный выбор. Ниже — минимальная, но рабочая настройка для интерфейса с ручным IP и маршрутами.
📁 Шаг 1: настрой сеть
Создай файл:
💡 Можно добавить несколько [Route] секций, если нужно.
🔧 Шаг 2: включи systemd-networkd и отключи другие менеджеры
⚠️ Проверь, что
🔎 Шаг 3: проверь статус и интерфейс
🧠 Когда применять:
— на headless-серверах
— в минималистичных образах
— если хочешь контроль и простоту без NM
🔥 Трюк: systemd-networkd автоматически применяет маршруты из
Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Если ты не используешь NetworkManager (например, на серверах), systemd-networkd — отличный выбор. Ниже — минимальная, но рабочая настройка для интерфейса с ручным IP и маршрутами.
📁 Шаг 1: настрой сеть
Создай файл:
/etc/systemd/network/10-static.network
[Match]
Name=ens33
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
[Route]
Destination=10.10.0.0/16
Gateway=192.168.1.254
💡 Можно добавить несколько [Route] секций, если нужно.
🔧 Шаг 2: включи systemd-networkd и отключи другие менеджеры
systemctl disable --now NetworkManager
systemctl enable --now systemd-networkd
systemctl enable --now systemd-resolved
⚠️ Проверь, что
/etc/resolv.conf
ссылается на ../run/systemd/resolve/stub-resolv.conf
🔎 Шаг 3: проверь статус и интерфейс
networkctl status ens33
ip a s ens33
ip r
🧠 Когда применять:
— на headless-серверах
— в минималистичных образах
— если хочешь контроль и простоту без NM
🔥 Трюк: systemd-networkd автоматически применяет маршруты из
[Route]
при поднятии интерфейса — без лишнего скриптинга.Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🧵 Диагностика странных зависаний сетевых соединений: "всё пингуется, но не работает"
💥 Бывает, что
🔍 Проверка: запусти ping с флагами "do not fragment" и максимальным размером пакета:
Если видишь
🧠 Пример:
* 1472 + 28 (заголовки IP+ICMP) = 1500 — стандартный MTU
* если пакет не проходит, а проходит только при
🔧 Решение — задай правильный MTU на интерфейсе (или wg):
Для WireGuard:
Или временно:
💡 Когда применять:
– нестабильный VPN
– apt/ssh/rsync "зависает"
– TCP-соединения обрываются при загрузке больших данных
– странное поведение в Docker/K8s с overlay-сетями
Проверка MTU — обязательный шаг в нетипичной сетевой отладке.
Сохрани, пригодится.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
💥 Бывает, что
ping
идёт, но ssh
, curl
или apt
зависают. Проблема может быть в MTU / фрагментации пакетов.🔍 Проверка: запусти ping с флагами "do not fragment" и максимальным размером пакета:
ping -M do -s 1472 <IP>
Если видишь
Frag needed and DF set
, MTU слишком большой. Уменьшай -s
, пока не дойдёт.🧠 Пример:
* 1472 + 28 (заголовки IP+ICMP) = 1500 — стандартный MTU
* если пакет не проходит, а проходит только при
-s 1392
, значит MTU на пути — 1420 (возможно, GRE/IPsec/WireGuard)🔧 Решение — задай правильный MTU на интерфейсе (или wg):
sudo ip link set dev eth0 mtu 1420
Для WireGuard:
[Interface]
MTU = 1420
Или временно:
sudo wg set wg0 mtu 1420
💡 Когда применять:
– нестабильный VPN
– apt/ssh/rsync "зависает"
– TCP-соединения обрываются при загрузке больших данных
– странное поведение в Docker/K8s с overlay-сетями
Проверка MTU — обязательный шаг в нетипичной сетевой отладке.
Сохрани, пригодится.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Падает SSH при нестабильной сети?
Вот способ держать сессию живой с помощью
💡 Решение: настроим клиентский
📌 Что это даёт:
*
*
Это помогает удерживать SSH-сессию при кратковременных потерях связи (Wi-Fi, моб. сеть, нестабильный канал), особенно полезно при работе в tmux/screen.
⚠️ Важно: это клиентская настройка. Для серверной стороны смотри
🛠 Применяется как глобально, так и в
Сохрани, пригодится, если работаешь с нестабильными каналами 👨💻
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Вот способ держать сессию живой с помощью
ServerAliveInterval
.💡 Решение: настроим клиентский
ssh_config
echo "Host *
ServerAliveInterval 30
ServerAliveCountMax 4" | sudo tee -a /etc/ssh/ssh_config
📌 Что это даёт:
*
ServerAliveInterval 30
— каждые 30 сек отправляется keep-alive пакет.*
ServerAliveCountMax 4
— если 4 ответа подряд не получено, соединение рвётся.Это помогает удерживать SSH-сессию при кратковременных потерях связи (Wi-Fi, моб. сеть, нестабильный канал), особенно полезно при работе в tmux/screen.
⚠️ Важно: это клиентская настройка. Для серверной стороны смотри
ClientAliveInterval
.🛠 Применяется как глобально, так и в
~/.ssh/config
— удобно для отдельных хостов:
Host bastion
HostName 1.2.3.4
ServerAliveInterval 15
Сохрани, пригодится, если работаешь с нестабильными каналами 👨💻
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🚨 iptables: как быстро сбросить соединения от IP-нарушителя
Когда в логи сыпется подозрительная активность от одного IP (DOS, скан, brute-force) — не всегда нужно ждать, пока сработает fail2ban. Можно сразу убить соединения и запретить новые.
🔧 Быстрые действия вручную:
📦 Убедитесь, что установлен пакет
🧠 Зачем и когда:
* моментально разрывает все TCP/UDP-сессии;
* эффективно при атаках с одного IP;
* можно автоматизировать в реакции на события (через fail2ban action, auditd или кастомный watchdog-скрипт).
⚠️ Не забудь внести в постоянные правила, если блок должен сохраниться после ребута (
Сохрани, чтобы не паниковать в следующий инцидент.
А ты conntrack применяешь?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Когда в логи сыпется подозрительная активность от одного IP (DOS, скан, brute-force) — не всегда нужно ждать, пока сработает fail2ban. Можно сразу убить соединения и запретить новые.
🔧 Быстрые действия вручную:
# 1. Сбросить активные соединения от IP
conntrack -D -s 1.2.3.4
# 2. Заблокировать весь трафик от него (до перезапуска iptables)
iptables -I INPUT -s 1.2.3.4 -j DROP
📦 Убедитесь, что установлен пакет
conntrack
(обычно conntrack-tools
).🧠 Зачем и когда:
* моментально разрывает все TCP/UDP-сессии;
* эффективно при атаках с одного IP;
* можно автоматизировать в реакции на события (через fail2ban action, auditd или кастомный watchdog-скрипт).
⚠️ Не забудь внести в постоянные правила, если блок должен сохраниться после ребута (
iptables-save
/ nftables
/ firewalld
).Сохрани, чтобы не паниковать в следующий инцидент.
А ты conntrack применяешь?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Проблема с медленным DNS в systemd-resolved?
Если
🔧 Решение: обходим кэш и выставляем реальные DNS напрямую
1. Посмотрим, что сейчас в конфиге:
Если там только
2. Пропишем внешние DNS напрямую (например, Cloudflare + Google):
3. Принудительно отвяжем
4. Перезапускаем resolved (или отключаем совсем):
🧠 Зачем это нужно?
⚠️ Важно: если используешь
💡Для временной проверки без изменений в системе:
🔚 Сохрани — пригодится, если резолвинг вдруг начал тормозить.
А ты используешь
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Если
dig/ping
тормозят, а /etc/resolv.conf
ссылается на 127.0.0.53
— виноват systemd-resolved
. Разберёмся, как ускорить.🔧 Решение: обходим кэш и выставляем реальные DNS напрямую
1. Посмотрим, что сейчас в конфиге:
resolvectl status
Если там только
127.0.0.53
, идём дальше.2. Пропишем внешние DNS напрямую (например, Cloudflare + Google):
sudo mkdir -p /etc/systemd/resolved.conf.d
echo -e "[Resolve]\nDNS=1.1.1.1 8.8.8.8\nFallbackDNS=9.9.9.9" | sudo tee /etc/systemd/resolved.conf.d/dns_servers.conf
3. Принудительно отвяжем
/etc/resolv.conf
от systemd-resolved:
sudo rm /etc/resolv.conf
echo -e "nameserver 1.1.1.1\nnameserver 8.8.8.8" | sudo tee /etc/resolv.conf
4. Перезапускаем resolved (или отключаем совсем):
sudo systemctl restart systemd-resolved
# или полностью отключить:
# sudo systemctl disable --now systemd-resolved
🧠 Зачем это нужно?
systemd-resolved
иногда добавляет задержки из-за кэша, DNS-over-TCP и fallback-механик. Ручная настройка ускоряет резолвинг, особенно в minimal-системах и контейнерах.⚠️ Важно: если используешь
NetworkManager
, может перезаписывать /etc/resolv.conf
. В этом случае — настрой .nmconnection
или отключи автоматическое управление DNS.💡Для временной проверки без изменений в системе:
dig @1.1.1.1 example.com
🔚 Сохрани — пригодится, если резолвинг вдруг начал тормозить.
А ты используешь
systemd-resolved
или выпилил его?#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🚀 Открой для себя идеальный путь к лидерству с карьерным тестом от ОЭЗ «Алабуга»! 🌟
Мечтаете о карьере в крупной компании, где ваш потенциал раскроется на полную? Наш тест поможет вам определить вашу уникальную лидерскую роль. Может быть, именно вы станете тем лидером, который выведет команду на новый уровень?
После прохождения теста вы можете заполнить заявку и получить приглашение на эксклюзивную лидерскую программу. Участие в программе открывает реальные перспективы трудоустройства в ОЭЗ «Алабуга», предоставляя шанс начать путь к профессиональному признанию.
Сделайте первый шаг к своему будущему сегодня! Пройдите тест, подайте заявку и начните строить свою карьеру вместе с нами. 🎯
Мечтаете о карьере в крупной компании, где ваш потенциал раскроется на полную? Наш тест поможет вам определить вашу уникальную лидерскую роль. Может быть, именно вы станете тем лидером, который выведет команду на новый уровень?
После прохождения теста вы можете заполнить заявку и получить приглашение на эксклюзивную лидерскую программу. Участие в программе открывает реальные перспективы трудоустройства в ОЭЗ «Алабуга», предоставляя шанс начать путь к профессиональному признанию.
Сделайте первый шаг к своему будущему сегодня! Пройдите тест, подайте заявку и начните строить свою карьеру вместе с нами. 🎯
🔥 Быстрое сканирование открытых портов без nmap
Иногда
🔍 Этот скрипт:
* Проверяет порты с 1 по 1024
* Использует встроенный механизм bash
* Показывает только открытые порты
* Работает без установки дополнительных утилит
⚠️ Не забудь про
Полезно для быстрого аудита или при ограничениях на установку ПО.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Иногда
nmap
может быть недоступен на сервере, но хочется быстро узнать, какие порты открыты. Вот простой способ сделать это с помощью bash
и timeout
:
#!/bin/bash
HOST="127.0.0.1"
for PORT in {1..1024}; do
timeout 1 bash -c "echo >/dev/tcp/$HOST/$PORT" 2>/dev/null &&
echo "🔓 Порт $PORT открыт"
done
🔍 Этот скрипт:
* Проверяет порты с 1 по 1024
* Использует встроенный механизм bash
/dev/tcp
* Показывает только открытые порты
* Работает без установки дополнительных утилит
⚠️ Не забудь про
timeout
, чтобы не зависнуть на закрытом порту!Полезно для быстрого аудита или при ограничениях на установку ПО.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Bash: мониторинг дискового пространства с уведомлением на email
Хочешь узнать, когда место на диске заканчивается, до того как всё рухнет?
Вот простой скрипт, который проверяет использование диска и шлёт письмо, если занято больше 90%.
📌 Настрой в
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Хочешь узнать, когда место на диске заканчивается, до того как всё рухнет?
Вот простой скрипт, который проверяет использование диска и шлёт письмо, если занято больше 90%.
#!/bin/bash
# Порог в процентах
THRESHOLD=90
# Email для уведомлений
EMAIL="admin@example.com"
# Получаем список файловых систем и используемый процент
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do
usep=$(echo "$output" | awk '{ print $1}' | sed 's/%//g')
partition=$(echo "$output" | awk '{ print $2 }')
if [ "$usep" -ge "$THRESHOLD" ]; then
echo "ВНИМАНИЕ: На разделе $partition занято ${usep}%." | mail -s "Disk Alert: $partition почти заполнен" "$EMAIL"
fi
done
📌 Настрой в
EMAIL
свой адрес и добавь в cron, чтобы запускать, например, каждый час.
0 * * * * /path/to/script.sh
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Падает VPN через WireGuard после смены IP? Лови решение!
Сценарий: на VPS с WireGuard провайдер даёт динамический IP. После смены — туннель не работает, клиенты отваливаются.
WireGuard не дружит с изменением IP у интерфейса, если не сообщить об этом.
🛠 Решение — автоматическая переинициализация WG при смене IP:
1. Создай
2. Сделай исполняемым:
3. Добавь systemd unit:
4. И таймер:
5. Активируй:
📌 Зачем: WireGuard кэширует IP клиента/сервера. Если IP сменился — трафик идёт в пустоту. Это особенно критично при NAT/CGNAT.
⚠️ Важно: не забудь проброс портов на новом IP, если фаерволл или хостер требуют это вручную.
Сохрани — выручит, когда WG внезапно "падает" после ребута VPS.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Сценарий: на VPS с WireGuard провайдер даёт динамический IP. После смены — туннель не работает, клиенты отваливаются.
WireGuard не дружит с изменением IP у интерфейса, если не сообщить об этом.
🛠 Решение — автоматическая переинициализация WG при смене IP:
1. Создай
wg-rebind.sh
:
#!/bin/bash
IFACE="wg0"
IP=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
wg set "$IFACE" listen-port 51820
2. Сделай исполняемым:
chmod +x /usr/local/bin/wg-rebind.sh
3. Добавь systemd unit:
/etc/systemd/system/wg-rebind.service
[Unit]
Description=Rebind WireGuard after IP change
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/wg-rebind.sh
4. И таймер:
/etc/systemd/system/wg-rebind.timer
[Unit]
Description=Periodic WireGuard rebind
[Timer]
OnBootSec=1min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target
5. Активируй:
systemctl daemon-reexec
systemctl enable --now wg-rebind.timer
📌 Зачем: WireGuard кэширует IP клиента/сервера. Если IP сменился — трафик идёт в пустоту. Это особенно критично при NAT/CGNAT.
⚠️ Важно: не забудь проброс портов на новом IP, если фаерволл или хостер требуют это вручную.
Сохрани — выручит, когда WG внезапно "падает" после ребута VPS.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🚧 systemd-networkd: быстрый дебаг сетевых настроек
Настроил
🔧 Пошагово:
1. Проверить статус интерфейса:
Покажет текущую привязку .network-файла, состояние DHCP, IP и ошибки.
2. Посмотреть логи конкретного интерфейса:
Фильтрация по интерфейсу сразу отсечёт мусор.
3. Проверить парсинг конфигов:
Покажет, где опечатка или конфликт в
4. Активировать трассировку событий (для упёртых багов):
(только временно, вручную, в debug-сессии)
⚠️ Важно:
💡 Фича:
Сохрани, пригодится при следующей миграции на systemd-networkd 🛠
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Настроил
systemd-networkd
, но интерфейс не поднимается как надо? Не спеши лезть в journalctl
. Есть встроенные инструменты, которые быстрее выявят проблему.🔧 Пошагово:
1. Проверить статус интерфейса:
networkctl status eth0
Покажет текущую привязку .network-файла, состояние DHCP, IP и ошибки.
2. Посмотреть логи конкретного интерфейса:
journalctl -u systemd-networkd -g eth0
Фильтрация по интерфейсу сразу отсечёт мусор.
3. Проверить парсинг конфигов:
networkd-analyze verify
Покажет, где опечатка или конфликт в
.network
, .netdev
, .link
.4. Активировать трассировку событий (для упёртых багов):
SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd
(только временно, вручную, в debug-сессии)
⚠️ Важно:
systemd-networkd
не обрабатывает интерфейсы, управляемые NetworkManager
или ifupdown
. Проверь networkctl list
— если интерфейс в статусе unmanaged, он не под контролем systemd.💡 Фича:
networkd-dispatcher
— хук-система на события сетевых интерфейсов, аналог if-up.d
. Удобно для автоматических действий при получении IP.Сохрани, пригодится при следующей миграции на systemd-networkd 🛠
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Fail2ban: баним по геолокации (GeoIP)
Надоели постоянные попытки входа по SSH или веб-интерфейсу из определённых стран? Решаем задачу при помощи Fail2ban и GeoIP.
🛠 Настройка за 4 шага:
1️⃣ Установи нужные пакеты (Debian/Ubuntu):
2️⃣ Включи GeoIP в Fail2ban, создав файл
3️⃣ Создай jail (
4️⃣ Добавь GeoIP-правило в action (
Для более гибкой блокировки конкретных стран можно использовать готовые скрипты с
💡 Полезно знать: GeoIP снижает нагрузку на сервер, предотвращая заведомо нежелательный трафик. Но будь осторожен — не забань нужный трафик!
⚠️ Предварительно проверь IP с помощью
🔖 Сохрани, пригодится! Ты уже настраивал GeoIP в Fail2ban?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Надоели постоянные попытки входа по SSH или веб-интерфейсу из определённых стран? Решаем задачу при помощи Fail2ban и GeoIP.
🛠 Настройка за 4 шага:
1️⃣ Установи нужные пакеты (Debian/Ubuntu):
apt install fail2ban geoip-bin geoip-database libgeoip1
2️⃣ Включи GeoIP в Fail2ban, создав файл
/etc/fail2ban/filter.d/geoip.conf
:
[Definition]
failregex = <HOST>
ignoreregex =
3️⃣ Создай jail (
/etc/fail2ban/jail.d/geoip.conf
):
[geoip]
enabled = true
filter = geoip
action = iptables-allports[name=GeoIP]
logpath = /var/log/auth.log
maxretry = 1
bantime = 86400
findtime = 3600
4️⃣ Добавь GeoIP-правило в action (
/etc/fail2ban/action.d/iptables-allports.conf
):
actionban = iptables -I INPUT -s <ip> -j DROP
Для более гибкой блокировки конкретных стран можно использовать готовые скрипты с
xtables-addons
.💡 Полезно знать: GeoIP снижает нагрузку на сервер, предотвращая заведомо нежелательный трафик. Но будь осторожен — не забань нужный трафик!
⚠️ Предварительно проверь IP с помощью
geoiplookup <IP>
, чтобы убедиться в корректности блокировки.🔖 Сохрани, пригодится! Ты уже настраивал GeoIP в Fail2ban?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Защита от «нежелательных» IP: ipset + nftables 🔥
Часто сталкиваетесь с ботами, сканерами или DDoS-атакой? Вместо громоздких правил вiptables — сочетание ipset и nftables позволит быстро фильтровать тысячи адресов.
Шаг 1. Установить необходимые пакеты
Шаг 2. Создать ipset-список
*
*
Шаг 3. Добавить адреса или подсети
Шаг 4. Настроить nftables
*
*
Зачем и когда применять?
* Хранит сотни тысяч IP без потери производительности.
* Идеально при обнаружении сканеров, брут-форс-атак или DDoS.
💡 Полезный трюк
Чтобы сохранить список между перезагрузками:
Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Часто сталкиваетесь с ботами, сканерами или DDoS-атакой? Вместо громоздких правил вiptables — сочетание ipset и nftables позволит быстро фильтровать тысячи адресов.
Шаг 1. Установить необходимые пакеты
sudo apt update
sudo apt install -y ipset nftables
Шаг 2. Создать ipset-список
sudo ipset create blacklist hash:net family inet timeout 86400
*
hash:net
— хэш-таблица сетей*
timeout 86400
— автоматическая очистка через 24 чШаг 3. Добавить адреса или подсети
sudo ipset add blacklist 203.0.113.0/24
sudo ipset add blacklist 198.51.100.23
Шаг 4. Настроить nftables
sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0 \; }'
sudo nft 'add rule inet filter input ip saddr @blacklist drop'
*
@blacklist
— ссылка на ваш ipset*
drop
— молча отбросить пакетыЗачем и когда применять?
* Хранит сотни тысяч IP без потери производительности.
* Идеально при обнаружении сканеров, брут-форс-атак или DDoS.
💡 Полезный трюк
Чтобы сохранить список между перезагрузками:
sudo ipset save blacklist > /etc/ipset-blacklist.conf
# В /etc/rc.local (до exit 0) добавьте:
ipset restore < /etc/ipset-blacklist.conf
Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Диагностика сетевых соединений через ss: быстро, подробно, удобно
Когда нужно быстро выяснить, что слушает порт, найти подвисший сокет или получить расширенную статистику соединений — забудь про устаревший
Полезные команды:
* Список всех прослушиваемых портов (TCP/UDP):
-t (tcp), -u (udp), -l (listening), -n (не резолвить имена)
* Показать процессы, открывшие сокеты:
-p — выводит PID/имя процесса (root!)
* Активные подключения к определённому порту (например, 443):
* Показать только установленные TCP-соединения:
-o — дополнительные опции (таймеры, retransmits)
* Краткая статистика по всем соединениям:
⚡️ Трюк:
Используй фильтры для быстрой отладки:
Частая ошибка: забывают запускать с sudo/root для просмотра всех процессов.
Пользуешься ли ты ss, или всё ещё netstat? Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Когда нужно быстро выяснить, что слушает порт, найти подвисший сокет или получить расширенную статистику соединений — забудь про устаревший
netstat
. Используй ss
:Полезные команды:
* Список всех прослушиваемых портов (TCP/UDP):
ss -tuln
-t (tcp), -u (udp), -l (listening), -n (не резолвить имена)
* Показать процессы, открывшие сокеты:
ss -tulpn
-p — выводит PID/имя процесса (root!)
* Активные подключения к определённому порту (например, 443):
ss -tn sport = :443
* Показать только установленные TCP-соединения:
ss -o state established '( dport = :22 or sport = :22 )'
-o — дополнительные опции (таймеры, retransmits)
* Краткая статистика по всем соединениям:
ss -s
⚡️ Трюк:
ss
намного быстрее и информативнее netstat
, особенно на серверах с тысячами соединений.Используй фильтры для быстрой отладки:
ss -tan 'dst 10.0.0.1'
Частая ошибка: забывают запускать с sudo/root для просмотра всех процессов.
Пользуешься ли ты ss, или всё ещё netstat? Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔥 Чеклист: почему не работает iptables NAT на Debian/Ubuntu
Столкнулся с тем, что DNAT/SNAT в iptables не пашет, хотя правила прописаны? Вот быстрый разбор:
1. Включи IP Forwarding:
(или пропиши в
2. Проверь таблицу NAT:
3. Не забывай о правилах FORWARD:
— Должны быть разрешающие правила для трафика между нужными интерфейсами.
4. Проверяй, не конфликтует ли firewalld или nftables:
На новых системах могут быть активны другие firewall-менеджеры.
5. Обнови iptables-persistent после изменений:
⚠️ После всех правок — всегда тестируй NAT с помощью tcpdump на обоих интерфейсах, чтобы видеть, проходит ли трафик!
Сохрани, чтобы не искать в следующий раз!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Столкнулся с тем, что DNAT/SNAT в iptables не пашет, хотя правила прописаны? Вот быстрый разбор:
1. Включи IP Forwarding:
sysctl net.ipv4.ip_forward
sudo sysctl -w net.ipv4.ip_forward=1
(или пропиши в
/etc/sysctl.conf
:net.ipv4.ip_forward=1
)2. Проверь таблицу NAT:
sudo iptables -t nat -L -n -v
3. Не забывай о правилах FORWARD:
sudo iptables -L FORWARD -n -v
— Должны быть разрешающие правила для трафика между нужными интерфейсами.
4. Проверяй, не конфликтует ли firewalld или nftables:
На новых системах могут быть активны другие firewall-менеджеры.
sudo systemctl status firewalld
sudo systemctl status nftables
5. Обнови iptables-persistent после изменений:
sudo netfilter-persistent save
⚠️ После всех правок — всегда тестируй NAT с помощью tcpdump на обоих интерфейсах, чтобы видеть, проходит ли трафик!
Сохрани, чтобы не искать в следующий раз!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
NetworkManager иногда игнорирует ручные изменения в /etc/resolv.conf
На современных дистрибутивах (Ubuntu, CentOS, Fedora) за DNS часто отвечает NetworkManager, который может перезаписывать /etc/resolv.conf при каждом подключении. Ручные правки слетают, DNS-серверы меняются сами собой — раздражает?
✅ Решение:
Закрепи нужный DNS через NetworkManager, чтобы изменения были постоянными.
Пошагово:
1. Найди имя интерфейса:
2. Пропиши DNS для интерфейса:
3. Перезапусти соединение:
4. Проверь результат:
💡 Трюк:
Чтобы глобально задать DNS для всех новых соединений:
⚠️ Избегай ручного редактирования /etc/resolv.conf при использовании NetworkManager — иначе гарантированы "сюрпризы" после ребута или reconnection.
Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
На современных дистрибутивах (Ubuntu, CentOS, Fedora) за DNS часто отвечает NetworkManager, который может перезаписывать /etc/resolv.conf при каждом подключении. Ручные правки слетают, DNS-серверы меняются сами собой — раздражает?
✅ Решение:
Закрепи нужный DNS через NetworkManager, чтобы изменения были постоянными.
Пошагово:
1. Найди имя интерфейса:
nmcli device status
2. Пропиши DNS для интерфейса:
nmcli con mod <имя_подключения> ipv4.dns "8.8.8.8 1.1.1.1"
nmcli con mod <имя_подключения> ipv4.ignore-auto-dns yes
3. Перезапусти соединение:
nmcli con down <имя_подключения> && nmcli con up <имя_подключения>
4. Проверь результат:
resolvectl status
💡 Трюк:
Чтобы глобально задать DNS для всех новых соединений:
nmcli networking off
nmcli general hostname myhost
nmcli con mod "System eth0" ipv4.dns "8.8.8.8"
nmcli con mod "System eth0" ipv4.ignore-auto-dns yes
nmcli networking on
⚠️ Избегай ручного редактирования /etc/resolv.conf при использовании NetworkManager — иначе гарантированы "сюрпризы" после ребута или reconnection.
Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🔐 Быстрый способ защитить SSH от брутфорса с помощью
SSH-серверы в публичной сети постоянно испытывают волну брутфорс-атак. Вместо дополнительного уровня с fail2ban можно использовать встроенные возможности nftables для динамической блокировки злонамеренных IP.
1. Создаём таблицу и базовый цепочки
* table inet filter: единая таблица для IPv4/IPv6.
* chain input: обрабатывает входящий трафик до локального стека.
* set blacklist: обрабатывает динамические списки IP (добавляем IP при превышении лимита).
2. Добавляем правило учёта попыток подключения
* ct state new + limit: разрешаем первые 10 новых соединений в минуту.
* add
3. Блокируем пакеты из чёрного списка
* insert: ставим правило выше остальных, чтобы сразу сбрасывать пакеты.
*
4. Сохраняем конфигурацию
* list ruleset сохраняет текущее состояние, после перезагрузки правила восстанавливаются.
Зачем и когда использовать:
* Почему: минимизируем зависимость от внешних скриптов, снимаем нагрузку при атаке (нет лишних fork/grep/iptables).
* Когда: если сервер доступен из интернета, и надо быстро выставить «самоблок» без дополнительных демонов.
🌟 Вместо фиксированного времени (
- так не потребуется динамический set, а «автоблок» сработает мгновенно.
Сохрани, пригодится!
А ты так защищаешь SSH?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
nftables
SSH-серверы в публичной сети постоянно испытывают волну брутфорс-атак. Вместо дополнительного уровня с fail2ban можно использовать встроенные возможности nftables для динамической блокировки злонамеренных IP.
1. Создаём таблицу и базовый цепочки
sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0 \; }'
sudo nft 'add set inet filter blacklist { type ipv4_addr\; flags dynamic\; }'
* table inet filter: единая таблица для IPv4/IPv6.
* chain input: обрабатывает входящий трафик до локального стека.
* set blacklist: обрабатывает динамические списки IP (добавляем IP при превышении лимита).
2. Добавляем правило учёта попыток подключения
sudo nft add rule inet filter input tcp dport 22 ct state new limit rate 10/minute accept comment "Разрешаем до 10 новых зачключений SSH в минуту"
sudo nft add rule inet filter input tcp dport 22 ct state new add @blacklist { ip saddr } expire 1h comment "Если превысили скорость — вносим в чёрный список на 1 час"
* ct state new + limit: разрешаем первые 10 новых соединений в минуту.
* add
@blacklist
{ ip saddr }: при каждом новом подключении вне лимита IP добавляется в blacklist.3. Блокируем пакеты из чёрного списка
sudo nft insert rule inet filter input ip saddr @blacklist drop comment "Блокируем SSH для чёрного списка"
* insert: ставим правило выше остальных, чтобы сразу сбрасывать пакеты.
*
@blacklist
: любой IP из сета моментально сбрасывается.4. Сохраняем конфигурацию
sudo nft list ruleset > /etc/nftables.conf
sudo systemctl enable nftables --now
* list ruleset сохраняет текущее состояние, после перезагрузки правила восстанавливаются.
Зачем и когда использовать:
* Почему: минимизируем зависимость от внешних скриптов, снимаем нагрузку при атаке (нет лишних fork/grep/iptables).
* Когда: если сервер доступен из интернета, и надо быстро выставить «самоблок» без дополнительных демонов.
🌟 Вместо фиксированного времени (
expire 1h
) можно использовать «скоростной» подход с limit rate
напрямую:
nft add rule inet filter input tcp dport 22 ct state new counter limit rate over 15/minute drop comment "Быстрая блокировка при 15 попытках в минуту"
- так не потребуется динамический set, а «автоблок» сработает мгновенно.
Сохрани, пригодится!
А ты так защищаешь SSH?
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
⚡ Как оптимизировать сетевой стек Linux для высоких нагрузок
В условиях высоких сетевых нагрузок стандартных настроек ядра и драйверов NIC часто недостаточно: возникают «пропуска» пакетов, увеличивается задержка и теряется пропускная способность. Ниже — практическое руководство по тонкой настройке с помощью
1. Аудит текущих параметров
Проверяем значения кольцевых буферов (RX/TX):
Показывает текущие размеры ring-буферов:
Смотрим текущие sysctl-параметры сетевого стека:
2. Увеличиваем буферы NIC
1. Подбираем оптимальные значения.
Обычно в нагрузочных дата-центрах достаточно:
*
*
> Когда применять: На серверах с большой пропускной способностью (>1 Gbps) и высокой маллатентностью сети.
2. Проверяем после изменения:
Убедитесь, что значения приняты драйвером.
3. Настройка параметров ядра (sysctl)
Добавьте в
*
*
*
* BBR снижает задержки и повышает пропускную способность в условиях загруженных сетей.
Применяем:
4. Проверка и валидация
Мониторим показатели через
Смотрим на количество ошибок, состояние TCP-сокетов, очереди.
* Измеряем пропускную способность:
Сравниваем до и после настроек.
5. Зачем и когда применять
* Виртуальные машины/контейнеры с «тонкой» сетью: при «подёргиваниях» в трафике (bursty traffic).
* Серверы игр/стриминга/СХД: где важна низкая задержка и высокая стабильность.
* Сервисы с пиковыми нагрузками (backup, CDN-ноды): помогут снизить потерю пакетов при пиках.
6. Полезный трюк и предостережение
* Трюк:
Чтобы изменения NIC-буферов применялись автоматически при перезагрузке, создайте udev-правило
* Предупреждение:
На VDS с ограниченной памятью чрезмерное увеличение буферов может привести к OOM-ситуациям. Всегда мониторьте нагрузку на RAM и swap.
Вывод
С помощью правильной комбинации
👉 Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
В условиях высоких сетевых нагрузок стандартных настроек ядра и драйверов NIC часто недостаточно: возникают «пропуска» пакетов, увеличивается задержка и теряется пропускная способность. Ниже — практическое руководство по тонкой настройке с помощью
ethtool
и sysctl
на Debian/Ubuntu (или производных).1. Аудит текущих параметров
Проверяем значения кольцевых буферов (RX/TX):
sudo ethtool -g eth0
Показывает текущие размеры ring-буферов:
rx
, tx
, rx-mini
, rx-jumbo
и т.д.Смотрим текущие sysctl-параметры сетевого стека:
sysctl net.core.rmem_max net.core.wmem_max \
net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_congestion_control
2. Увеличиваем буферы NIC
1. Подбираем оптимальные значения.
Обычно в нагрузочных дата-центрах достаточно:
sudo ethtool -G eth0 rx 4096 tx 4096
*
rx 4096
— кольцевой буфер для приёма пакетов.*
tx 4096
— кольцевой буфер для передачи.> Когда применять: На серверах с большой пропускной способностью (>1 Gbps) и высокой маллатентностью сети.
2. Проверяем после изменения:
ethtool -g eth0
Убедитесь, что значения приняты драйвером.
3. Настройка параметров ядра (sysctl)
Добавьте в
/etc/sysctl.d/99-network-tuning.conf
:
# Увеличиваем максимальные размеры буферов ядра
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Стандартизованные границы TCP-буферов (min/default/max)
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Увеличиваем очередь для входящих соединений
net.core.netdev_max_backlog = 5000
# Активация TCP-Congestion Control: BBR (если ядро поддерживает)
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_mtu_probing = 1
*
rmem_max/wmem_max
задают максимальный объём памяти, выделяемой ядром под сетевые буферы.*
tcp_rmem/tcp_wmem
определяют минимум/дефолт/максимум для динамического буфера TCP-соединения.*
netdev_max_backlog
увеличивает очередь пакетов, ожидающих обработки kernel-space до userspace.* BBR снижает задержки и повышает пропускную способность в условиях загруженных сетей.
Применяем:
sudo sysctl --system
4. Проверка и валидация
Мониторим показатели через
ss
или netstat
:
ss -s
Смотрим на количество ошибок, состояние TCP-сокетов, очереди.
* Измеряем пропускную способность:
iperf3 -c <сервер> -P 4 -t 60
Сравниваем до и после настроек.
5. Зачем и когда применять
* Виртуальные машины/контейнеры с «тонкой» сетью: при «подёргиваниях» в трафике (bursty traffic).
* Серверы игр/стриминга/СХД: где важна низкая задержка и высокая стабильность.
* Сервисы с пиковыми нагрузками (backup, CDN-ноды): помогут снизить потерю пакетов при пиках.
6. Полезный трюк и предостережение
* Трюк:
Чтобы изменения NIC-буферов применялись автоматически при перезагрузке, создайте udev-правило
/etc/udev/rules.d/70-ethtool.rules
:
ACTION=="add", SUBSYSTEM=="net", NAME=="eth0", RUN+="/usr/sbin/ethtool -G eth0 rx 4096 tx 4096"
* Предупреждение:
На VDS с ограниченной памятью чрезмерное увеличение буферов может привести к OOM-ситуациям. Всегда мониторьте нагрузку на RAM и swap.
Вывод
С помощью правильной комбинации
ethtool
+ sysctl
можно значительно улучшить сетевые метрики: снизить пинг, уменьшить потерю пакетов и увеличить throughput.👉 Сохрани, пригодится!
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
🚀 Bash скрипт мониторинга заполнения диска с оповещением на email 📩
Отслеживаем заполнение дисковых разделов и получаем предупреждения, когда они переполняются.
1. THRESHOLD – задаёт порог в процентах, при котором срабатывает оповещение.
2. df -H – получает информацию о дисках в «читаемом» формате (GB).
3. Цикл
4. Если заполнение раздела ≥
✨Запланируйте выполнение скрипта через cron:
Вместо email можно отправлять уведомления в Slack или Telegram через их API.
Для логирования добавьте запись в syslog через
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Отслеживаем заполнение дисковых разделов и получаем предупреждения, когда они переполняются.
#!/usr/bin/env bash
# ⚙️ Настройки
THRESHOLD=80 # порог заполнения в %
EMAIL="admin@example.com"
SUBJECT="⚠️ Disk Usage Alert on $(hostname)"
TMPFILE=$(mktemp)
# 📊 Сбор данных о дисках
df -H | grep -vE '^Filesystem|tmpfs|cdrom' > "$TMPFILE"
# 📣 Проверка и оповещение
while read -r filesystem size used available percent mount; do
used_value=${percent%\%}
if [ "$used_value" -ge "$THRESHOLD" ]; then
echo -e "Раздел: $filesystem\nТочка монтирования: $mount\nЗаполнено: $percent" | \
mail -s "$SUBJECT" "$EMAIL"
fi
done < "$TMPFILE"
# 🧹 Убираем временный файл
rm "$TMPFILE"
1. THRESHOLD – задаёт порог в процентах, при котором срабатывает оповещение.
2. df -H – получает информацию о дисках в «читаемом» формате (GB).
3. Цикл
while
перебирает строки, игнорируя заголовки и tmpfs.4. Если заполнение раздела ≥
$THRESHOLD
%, отправляем письмо через mail -s
.✨Запланируйте выполнение скрипта через cron:
# Каждые 30 минут
*/30 * * * * /path/to/disk_alert.sh
Вместо email можно отправлять уведомления в Slack или Telegram через их API.
Для логирования добавьте запись в syslog через
logger
.#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin