GRE туннель. FreeBSD

FreeBSD из «коробки» полность поддерживает GRE и автоматически добавит его в ядро, но если хочется перестраховаться можно всегда добавить ниже указанную строку в /boot/loader.conf

if_gre_load="YES"
# или
echo 'if_gre_load="YES"' >> /boot/loader.conf

Из консоли туннель подымается следующими командами:

ifconfig gre0 create 
ifconfig gre0 10.1.10.1 10.1.10.2 netmask 255.255.255.252 
ifconfig gre0 tunnel 100.0.2.1 100.0.1.1
# где 10.1.10.0/30 IP внутри туннеля
# 100.0.0.0 адреса серверов для пиринга

Для автозапуска туннеля нужно добавить в /etc/rc.conf следующие строчки:

cloned_interfaces="gre0" 
ifconfig_gre0="inet 10.1.10.1 10.1.10.2 netmask 255.255.255.252 tunnel 100.0.2.1 100.0.1.1"

Как обычно туннель при отсутствии активности падает, потому для поддержания туннеля в поднятом состоянии добавляем в крон:

*/1  *  *  *  *  root  ping -c 10 10.1.10.2

FreeBSD в отличии от Ubuntu равнодушно относится к отсутствию пустых строк в конце cron файла, поэтому оставлять пустую строку или нет — ваше личное дело

GRE туннель. Ubuntu netplan

Примеры конфигурации netplan внятно описаны на страничке проекта https://netplan.io/examples/

Конфигурация лежит в /etc/netplan/*.yaml
Применяется — netplan try и если ничего не отпало — Enter
Или для уверенных в себе — netplan apply

network:
    ethernets:
        ens18:
            addresses:
            - 10.10.10.10/25
            gateway4: 10.10.10.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 1.1.1.1
    tunnels:
        gre-ap120-tr:
            mode: gre
            local: 10.10.10.10
            remote: 192.168.0.10
            mtu: 1400
            addresses:
                - 10.2.2.2/30
            routes:
                - to: 192.168.88.0/24
                  via: 10.2.2.1
                - to: 10.90.91.0/24
                  via: 10.2.2.1
    version: 2

Так как линуксы не любят то что не прописано в стандартах и не поддерживают keepalive, из-за чего при отсутствии сетевой активности тоннель падает, в cron добавляем:

*/1 * * * * ping 10.2.2.1 -c 10

# помним о том что cron всегда должен заканчиваться  
# пустой строкой

Weathermap-History — отображение GIF-файлов на основе выбранной даты

Weathermap-History — это HTML-страница которая позволяет просмотреть анимированные GIF-файлы на основе выбранной даты. Данная страница является дополнением к переработанному Weathermap плагину для LibreNMS, но может использоваться и для обычного везермап.

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

Читать далее

FastNetMon — добавляем ExaBGP в контейнер и настраиваем автобан.

В прошлой статье мы подготовили docker-контейнер для FastNetMon’a и настроили мониторинг в Grafana. Тестирование показало что трафик мониторится коректно, нагруженные и служебные подсети были перенесы в отдельные группы. Пришло время расширить функционал контейнера и добавить ExaBGP.

ExaBGP это инструмент для внедрения произвольных маршрутов в сеть, включая IPv6 и FlowSpec. Вместе с FastNetMon позволяет автоматически детектить и блокировать DDoS-атаки. Варианты использования инструмента описаны на страничке проекта. В моем случае оборудованиие не поддерживает FlowSpec, поэтому все настраивается под анонсы в blackhole-community.

Читать далее

FastNetMon — мониторинг DDoS атак. Docker-контейнер на базе Alpine

FastNetMon — один из сервисов который позволяет найти и предотвратить атаку на сеть. На сайте проекта описаны различные варианты установки и настройки мониторинга, также есть хорошая документация на русском. Мне нужен вариант с анализатором sflow-пакетов, и так как источников с которого летят сии пакеты более одного, решил остановиться на docker-контейнере.

Единственное что не устраивало в официальной реализации контейнера, то что собран он на базе ubuntu. Потому поискал любительские сборки на базе Alpine  и наткнулся на докерфайл Сборка делалась достаточно давно и код FastNetMon’a уже изрядно поменялся, плюс компиляция крашилась из-за неявно указаных модулей в коде. Поэтому пришлось подправить напильником. В результате контейнер собрался и работает. Правда в последствии я в него добавил еще curl для отправки нотификаций в telegram. Файлик доступен по ссылке

Читать далее

UFW для ленивых. Упрощаем и стандартизируем настройку файрвола.

Как правило сервер должен светить в мир или локальную сеть ограниченным списком портов и доступ к серверу необходим ограниченному списку сетей. Также включать и настраивать файрвол как правило лень и это часто откладывается на потом. Решил упростить себе жизнь и сделал простой скрипт который открывает доступ к определенным портам для определенных сетей. Для других сетей сервер будет не доступен. Можно изменить скрипт чтобы некоторые порты были доступны для всех, но на текущий момент мне такое не требуется.

Cкрипт сбрасывает в дефолт текущие настройки файрвола и создает правила для списка IP и портов, которые указаны в переменных ALLOW_IP и ALLOW_PORT. Сам скрипт ниже:

#!/usr/bin/env bash

    n=$(tput sgr0);
    bold=$(tput bold);
    red='\033[0;31m'

if [ "$1" != "yes" ]
then
echo -e ${red}${bold}"This script reconfigure your firewall. Please, before running check variables ALLOW_IP and ALLOW_PORT"
echo "Also script must be run from root user"
echo "For running script enter in terminal ./en-ufw-firewall.sh yes"${n}
exit
fi
ALLOW_IP='10.111.60.0/24 10.111.63.252 192.168.200.165 10.27.0.0/24 10.1.0.0/16'

ALLOW_PORT='22 443 8080 10050'

ufw reset

#load default settings
sudo ufw default deny incoming
sudo ufw default allow outgoing

#
# create rules for IPs
#

for IP in $ALLOW_IP; do

#
# add allowed ports to allowed IPs
#

for PORT in $ALLOW_PORT; do

ufw allow from $IP to any port $PORT

done

done

ufw enable
ufw status numbered

Запуск старых java-апплетов в Ubuntu

При работе со старыми IPMI-консолями серверов, периодически возникает проблема с невозможностью запуска старых версий джава-апплетов на последней версии openjdk. Самый простой путь решения проблемы — установить дополнительно старую версию java.

1. Установим Java

# основное ставим из официальных репозиториев 
apt install -y icedtea-8-plugin icedtea-netx icedtea-plugin openjdk-8-jdk 
# старенькую джаву скачиваем по ссылке: 
# http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 
# (требуется регистрация) 
# И распаковываем архив 
tar xvzf jdk-7u80-linux-x64.tar.gz 
# переносим к остальным джава-машинам 
mv jdk1.7.0_80 /usr/lib/jvm/ 
# и добавляем старую версию java в альтернативы 
update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.7.0_80/bin/javaws 1 
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 1
Читать далее

Samplicator — клонируем и форвардим UDP (sflow) потоки

Время от времени возникает ситуация когда необходимо распараллелить приём sflow потоков на несколько анализаторов, для последующей обработки оных. Дабы реализовать возникшую потребность воспользуемся утилитой Samplicator.

Эта маленькая программа слушает заданный порт и форвардит приходящий поток на требуемые адреса назначения. Более полное описание возможностей можно прочесть на странице проекта.

Устанавливаем программу:

cd /opt
git clone https://github.com/sleinen/samplicator.git
cd samplicator
./autogen.sh
# PS Для запуска скрипта требуются automake и autoconf, если 
# скрипт завершиться с ошибкой установите их и перезапустите оный
./configure
make
make install
Читать далее

Увеличение скорости rebuild’a software RAID в Linux

Перестроение большого software RAID в Linux может занимать длительное время. Скорость синхронизации mdraid зависит от заданных параметров в proc-переменных /proc/sys/dev/raid/speed_limit_max и /proc/sys/dev/raid/speed_limit_min, задающих максимальную и минимальную пропускную способность синхронизации данных.

По умолчанию значения этих переменных выставлены в 200000 и 1000 (Кб). Манипулируя данными параметрами можно существенно увеличить скорость перестроения RAID-массива. Подобрать оптимальные значения можно в зависимости от производительности текущей дисковой системы, чем выше скорость синхронизации, чем меньше ресурсов остается для обработки текущих дисковых операций.

Установим минимальную скорость в 20 Мб/сек, а максимальную в 300 Мб/cек:

echo 20000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

Посмотреть текущую скорость ресинхронизации можно в выводе команды:

cat /proc/mdstat

Проверим на системе:

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
          resync=DELAYED
      bitmap: 1/1 pages [4KB], 65536KB chunk
md1 : active raid1 sdb3[1] sda3[0]
      967191552 blocks super 1.2 [2/2] [UU]
      [=======>.............]  resync = 37.5% (363386240/967191552) finish=923.4min speed=10896K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk
unused devices: <none>
 
[root@localhost ~]# cat /proc/sys/dev/raid/speed_limit_min
1000
 
[root@localhost ~]# echo "20000" > /proc/sys/dev/raid/speed_limit_min 
 
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb2[1] sda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
          resync=DELAYED
      bitmap: 1/1 pages [4KB], 65536KB chunk
md1 : active raid1 sdb3[1] sda3[0]
      967191552 blocks super 1.2 [2/2] [UU]
      [=======>.............]  resync = 37.7% (365001088/967191552) finish=472.3min speed=21248K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk
unused devices: <none>

Оптические делители

Если длина волны1310 нм:
— погонное затухание — 0,36 дБ/км;
— соединение волокна сваркой — 0,05 дБ;
— механическое соединение (коннектор — адаптер — коннектор) — 0,4 дБ.

Затухание в реальных оптических делителях

Соотношение деления, % Максимальные вносимые потери, Дб
Однооконный Двухоконный
50 / 50 3,4 / 3,4 3,6 / 3,6
45 / 55 3,8 / 2,9 4,1 / 3,1
40 / 60 4,4 / 2,5 4,7 / 2,7
35 / 65 5,0 / 2,2 5,3 / 2,4
30 / 70 5,6 / 1,8 6,0 / 1,9
25 / 75 6,3 / 1,5 6,9 / 1,6
20 / 80 7,4 / 1,2 7,9 / 1,3
15 / 85 8,8 / 0,9 10,0 / 0,9
10 / 90 10,8 / 0,6 11,3 / 0,6
5 / 95 13,8 / 0,4 15,2 / 0,45

Читать далее