MYCSS

Показ дописів із міткою FreeBSD. Показати всі дописи
Показ дописів із міткою FreeBSD. Показати всі дописи

2024-10-12

Restore a VM from a backup file on a ZFS snapshot over NFS in Proxmox VE by use GUI.

Умови:

Proxmox VE server  періодично робить резервні копії до NFS спільної теки котра розміщена на NAS сервері.

NAS це TrueNAS сервер що зберігає дані у ZFS файловій системі. TrueNAS автоматично налаштований робити періодичні знімки (snapshots) ZFS dataset де розміщенні дані для NFS теки.

У VM сервера знайдено підозрілі файли за назвою "." розміром 1024 bytes з бінарним вмістом. Необхідно провести аналіз в "offline copy" сервера.

Задача:

Відновити віртуальну машину з попередньої резервної копії. 

Рішення:

Під'єднати попередні періодичні знімки (snapshots) ZFS dataset, що створені на стороні NAS сервера, для відновлення віртуальної машини з її резервної копії.

Підключення до консолі Proxmox Node.

  • Proxmox node: ns21
  • NFS share: nfs-ns58-10g
  • Target data: 2024-10-11
  • Target VM ID: 150

Proxmox console.
ZFS snapshots зберігаються за замовчуванням у прихованій теці ".zfs".

Знайдено цільовий шлях де зберігаються потрібні резервні копії: /mnt/pve/nfs-ns58-10g/.zfs/snapshot/auto-2024-10-11_00-00

2024-10-05

Note. FreeBSD. pkg create. Backup of erlang-21. Сталася класична ситуація з оновленнями. Postmortem Report.

Умови:

Є віртуальна машина з FreeBSD під керуванням Proxmox VE.

Є застосунок 'pleroma' котрий працює на базі erlang

Причини:

Для підтримання інфраструктури операційна система оновлюється і пакунки підтримуються в актуальному стані.
Застосунок працює, в пам'яті, все нормально. Користувачі заносять нові дані...

2024-09-21

Note. Restore the old physical server by moving it to a virtual machine on the Proxmox VE. Creating an iSCSI disk and mounting it at boot. FreeBSD 9.0.

Примітка. Відновлення старого фізичного сервера, перемістивши його на віртуальну машину на Proxmox VE. Створення iSCSI диску та його монтування при завантажені операційної системи. FreeBSD 9.0.

Історія

Основне правило адміністратора, працює не чіпай. Призводить то того що рано чи пізно це вилазить боком. На кшталт не можеш нічого оновити та встановити.

Тому мені історично діставався цей сервер котрий треба перемістити до віртуального середовища поки "/raid1" масив ще працює після нового його збою, але варто зауважити міцний горішок.

Є декілька способів як перемістити систему з фізичного до віртуального. Але я не хотів переносити усі накопиченні проблеми, і вирішив перенести все окрім ядра та базової системи використовуючи    rsync.

2024-09-09

FreeBSD 14. Mail server POSTFIX and mariadb-client instead of mysql-client

Маю операційну систему FreeBSD 14.1-RELEASE у віртуальному середовищі Proxmox VE. 

Щойно оновив поштовий сервер з FreeBSD 13.1-RELEASE, і з'ясувалося що я не можу тепер встановити POSTFIX та mariadb-client одночасно, як це було раніше. Тому це нотатка мені як я  розв'язав цю проблему, щоб не наступати на ті самі граблі двічі.

Коли встановлено у Вас mariadb-server та mariadb-client на одному сервері, то при встановленні поштового сервера postfix як пакунок через pkg install postfix-mysql, або з портів з опцією MySQL.

postfix freebsd port, mysql option

 Вам буде пропоновано видалити mariadb-server та mariadb-client і встановити mysql-client.

2024-08-08

Note. Resize UFS Disk

OS: FreeBSD.
Disk: GPT, UFS. 

Proxmox increase live disk of VM.

gpart commit vtbd1
gpart show vtbd1
gpart resize -i 1 vtbd1
gpart show vtbd1
df -h
growfs /dev/gpt/cloud-data
df -h

2023-12-03

Нотатка: патч порту сервера NGINX для додавання модуля JWT AUTH. Платформа FreeBSD.

Постала задача як зробити просту автентифікацію за JWT токеном безпосередньо через NGINX сервер.

За підпискою NGINX PLUS jwt-auth є у базовому комплекті. У Community verision jwt-auth не має.

Знайшов модуль від автора nginx-auth-jwt  і вирішив додати до FreeBSD порту пакетів, щоб надалі було зручно собі оновлювати.

Результат оформив собі до репозиторію : https://github.com/lexxai/port_nginx_add_jwt_auth.

nginx hwt-auth FreeBSD port 3rd party module

Приклад використання nginx.conf:

load_module /usr/local/libexec/nginx/ngx_http_auth_jwt_module.so;

...
	location /token_protected {
		auth_jwt "closed site";
		auth_jwt_key_file .jwt_keyfile.json keyval;
		auth_jwt_validate_exp on;
		auth_jwt_validate_iat on;
		auth_jwt_validate_sig on;
		auth_jwt_validate_sub on;
		....



2023-08-02

FreeBSD qemu-guest-agent 8.0.2 freeze before shapshot. Proxmox snaphsot of pgsql database instance VM.

Задача - коректно зберігати базу даних при створені знімку віртуальної машини в Proxmox.

Що є:

Proxmox VE, VM з сервером FreeBSD 13, база даних postgresql.

Виконання:

Встановлюю qemu-guest-agent.

pkg version -x qemu-guest-agent
qemu-guest-agent-8.0.2 

Налаштовую qemu-guest-agent:

/etc/rc.d

qemu_guest_agent_enable="YES"
qemu_guest_agent_flags="-d -v --fsfreeze-hook" 

Скрипт для оброки freeze-hook

scripts/qemu-guest-agent/fsfreeze-hook

#!/bin/sh

# This script is executed when a guest agent receives fsfreeze-freeze and
# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F)
# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook).
# When the agent receives fsfreeze-freeze request, this script is issued with
# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw
# request, it is issued with "thaw" argument after filesystem is thawed.

LOGFILE=/var/log/qga-fsfreeze-hook.log
FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d

# Check whether file $1 is a backup or rpm-generated file and should be ignored
is_ignored_file() {
    case "$1" in
        *~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave | *.sample | *.dpkg-old | *.dpkg-new | *.dpkg-tmp | *.dpkg-dist | *.dpkg-bak | *.dpkg-backup | *.dpkg-remove)
            return 0 ;;
    esac
    return 1
}

# Iterate executables in directory "fsfreeze-hook.d" with the specified args
[ ! -d "$FSFREEZE_D" ] && exit 0
for file in "$FSFREEZE_D"/* ; do
    is_ignored_file "$file" && continue
    [ -x "$file" ] || continue
    printf "$(date): execute $file $@\n" >>$LOGFILE
    "$file" "$@" >>$LOGFILE 2>&1
    STATUS=$?
    printf "$(date): $file finished with status=$STATUS\n" >>$LOGFILE
done

exit 0

/usr/local/etc/qemu/fsfreeze-hook.d/pg-flush.sh

#!/bin/sh

# Flush PGSQL tables to the disk before the filesystem is frozen.
# At the same time, this keeps a read lock in order to avoid write accesses
# from the other clients until the filesystem is thawed.

case "$1" in
    freeze)
        logger -t pg-flush "freeze pg before stop service"
        service postgresql stop
        sync
        logger -t pg-flush "freeze pg after sync"
        ;;

    thaw)
        logger -t pg-flush "thaw pg starting service"
        service postgresql start
        logger -t pg-flush "thaw pg service `service postgresql status`"
;; *) exit 1 ;; esac 
Proxmox snapshot VM
tail -f /var/log/messages
Aug  1 17:39:24 pleroma pg-flush[40320]: freeze pg before stop service
Aug  1 17:39:24 pleroma postgres[29734]: [10-1] 2023-08-01 17:39:24.116 [29734] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29739]: [10-1] 2023-08-01 17:39:24.116 [29739] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29736]: [10-1] 2023-08-01 17:39:24.116 [29736] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29733]: [10-1] 2023-08-01 17:39:24.116 [29733] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29738]: [10-1] 2023-08-01 17:39:24.116 [29738] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29730]: [10-1] 2023-08-01 17:39:24.116 [29730] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29735]: [10-1] 2023-08-01 17:39:24.116 [29735] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29737]: [10-1] 2023-08-01 17:39:24.116 [29737] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29731]: [10-1] 2023-08-01 17:39:24.116 [29731] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[16588]: [10-1] 2023-08-01 17:39:24.116 [16588] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[37548]: [10-1] 2023-08-01 17:39:24.116 [37548] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[47096]: [10-1] 2023-08-01 17:39:24.116 [47096] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[29742]: [10-1] 2023-08-01 17:39:24.116 [29742] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[47073]: [10-1] 2023-08-01 17:39:24.116 [47073] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma postgres[47076]: [10-1] 2023-08-01 17:39:24.116 [47076] FATAL:  terminating connection due to administrator command
Aug  1 17:39:24 pleroma pg-flush[40334]: freeze pg after sync
Aug  1 17:39:24 pleroma pg-flush[40343]: thaw pg starting service
Aug  1 17:39:24 pleroma pg-flush[40365]: thaw pg service pg_ctl: server is running (PID: 41234) /usr/local/bin/postgres "-D" "/var/db/postgres/data12"

2023-05-13

Нотатка. Монтування дисків NFS, ZFS поверх iSCSI. FreeBSD rc.d.

Є підключення диска через iSCSI, надалі диск форматується у ZFS. При завантаженні системи потрібно зачекати мережевого з'єднання iSCSI Initiatior з iSCSI target. Потім, змотувати ZFS pool. Потім запустити hook скрипт, після успішного монтування.  

source imgage : https://www.data-storage.uk
iSCSI Storage

iSCSI

/etc/rc.conf:

#iSCSI
iscsid_enable="YES"
iscsictl_enable="YES"
iscsictl_flags="-Aa"
/etc/iscsi.conf:
t0 {
    TargetAddress   = nas1
    TargetName      = iqn.2023-05.net.server.nas1:server1-storage
    AuthMethod      = CHAP
    chapIName       = server1
    chapSecret      = "kdwkjdqhdww3qq@@6td3_3eiw9e7w43"
}

ZFS: 

/etc/rc.conf:

#iSCSI_ZFS
iscsi_zfs_enable="YES"
iscsi_zfs_wait_iqn="server1-storage"
iscsi_zfs_wait_pool="storage"
iscsi_zfs_post_hook="/root/script/post-mount.sh"
iscsi_zfs_pre_hook="/root/script/pre-umount.sh"

2023-03-30

nginx як проксі для серверів pop3, imap. Додаткова авторизація через ssl client, та блокування у fail2ban.

Задача

Є задача підключити nginx як ssl proxy для служб електронної пошти, з перевіркою авторизації у nginx. Використання nginx дозволить використати сучасні ssl сертифікати, у випадку коли поштові сервіси не можуть це зробити за певних умов. Наприклад коли необхідна додаткова перевірка авторизації через сертифікати ssl клієнта

Додаткова авторизація через SSL client certificate.

Для підтримки авторизації через SSL client certificate сторона сервера посилає додатковий запит клієнту на те що очікує від нього особистого сертифікату. Запит описує чи має бути відновіть від клієнта з особистим сертифікатом клієнту обов'язковим чи за бажанням. Надалі клієнт надсилає, а сервер перевіряє отриманий особистий сертифікат клієнту чи був він виданий певним центром сертифікації (CA) та чи він не був відкликаний, або не слив термін придатності. На цьому перевірка закінчена, будь який дійсний сертифікат виданий центром сертифікації (CA) буде прийнятним для сервера.

2022-02-03

Нотатка. Оновлення запису DNS для DHCP CLIENT FreeBSD з використанням nsupdate

Є сервер FreeBSD, з використанням dhclient для мережевого інтерфейсу.

Задача, оновити  запис в власному сервері DNS з отриманим IP від DHCP сервером.

Встановлюю додатковий компонент pkg install samba-nsupdate.

nsupdate


dhclient

Створюю скрипт dhclient-exit-hooks для dhclient.

/etc/dhclient-exit-hooks
#!/bin/sh

/usr/bin/logger -t dhclient-exit-hooks REASON ${reason} IP: ${new_ip_address}
case "${reason}" in BOUND|RENEW|REBIND|REBOOT)
        echo ${new_ip_address} ${reason}
        /usr/local/etc/ddns/ddns.sh ${new_ip_address} ${reason}
;;
esac

 Створюю теку /usr/local/etc/ddns, там завантажую файл ключа ddns.key для оновлення DNS з RFC 2136 і також цей скрипт: 

 nsupdate

/usr/local/etc/ddns/ddns.sh

#!/usr/bin/env /bin/sh

IP=$1
KEY=/usr/local/etc/ddns/ddns.key
NSUPDATE=/usr/local/bin/samba-nsupdate
DNSSERVER=your_dns_server
DNSHOST=host.example.net

if [ ! -z ${IP} ];then
 echo updating:  ${IP} [ $2 ]  - ${USER}
 /usr/bin/logger -t dyndns updating:  ${IP} [ $2 ]  - ${USER}
 if [ -f ${KEY} ];then
  ${NSUPDATE} -4  -k ${KEY}  <<EOF
server ${DNSSERVER}  53
update delete ${DNSHOST}
update add ${DNSHOST} 300 A ${IP}
send
EOF
  else
   logger -t dyndns no key file ${KEY}
  fi
else
 echo IP missed
 logger -t dyndns IP missed
fi

BIND 

ddns-confgen -a hmac-sha512 -z host.example.net

# To activate this key, place the following in named.conf, and
# in a separate keyfile on the system or systems from which nsupdate
# will be run:
key "ddns-key.host.example.net" {
        algorithm hmac-sha512;
        secret "SdimvwKG5SDqeS7hD+C6ap89sRN4I2EuYrJKHFXtJ83CuUF6kbELxrv5OgVeVctzyqbafcQTGJgQh/svkv+/Yg==";
};

# Then, in the "zone" definition statement for "host.example.net",
# place an "update-policy" statement like this one, adjusted as
# needed for your preferred permissions:
update-policy {
          grant ddns-key.host.example.net zonesub ANY;
};

# After the keyfile has been placed, the following command will
# execute nsupdate using this key:
nsupdate -k 

2021-11-27

Нотатки: ZFS for postgresql database, Restore pleroma database, ZFS Snapshot for postgresql db

FreeBSD, Postgress SQL Database v14.
Відновлення бази даних Pleroma на сервері з резервної копії.

pkg install postgresql14-server
pkg install postgresql14-contrib
zfs create -o mountpoint=none zroot/var/db
zfs create -o mountpoint=/var/db/postgres
zroot/var/db/postgres
zfs list
zfs zfs set atime=off zroot/var/db/postgres
zfs set atime=off zroot/var/db/postgres
zfs set relatime=on zroot/var/db/postgres
zfs set recordsize=8k zroot/var/db/postgres
chown -R postgres:postrgres /var/db/postgres
chmod 750 /var/db/postgres
service postgresql initdb
pkg install sudo

restore_db.sh

#!/usr/bin/env sh
DBSAVE=. #DBFILE=pleroma_2021-11-09-0000.sql.gz sudo -u postgres psql < pleroma_init.sql cd ${DBSAVE} DBFILE=$( ls -1 *.sql.gz | tail -1 ) echo ${DBFILE} zcat ${DBSAVE}/${DBFILE} | sudo -u postgres psql -d pleroma

pleroma_init.sql:

REVOKE CONNECT ON DATABASE  pleroma FROM public;
SELECT pg_terminate_backend(pg_stat_activity.pid)
 FROM pg_stat_activity
 WHERE pg_stat_activity.datname = 'pleroma';
CREATE USER pleroma WITH ENCRYPTED PASSWORD '.......................................';
DROP DATABASE pleroma;
CREATE DATABASE pleroma OWNER pleroma;
\c pleroma;
--Extensions made by ecto.migrate that need superuser access
CREATE EXTENSION IF NOT EXISTS citext;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
GRANT CONNECT ON DATABASE pleroma TO public;
zfs-snapshot-pgsql.sh
#!/usr/bin/env sh
DATASQL=data14
DATABASE=/var/db/postgres/${DATASQL}
DBDATASET=zroot/var/db/postgres
DBDATASET_CLONE=zroot/var/db/postgres-clonedb
DATABASE_CLONE=/var/db/postgres-clonedb
SHAREDSQL=/usr/local/share/postgresql
zfs list -t snapshot
zfs destroy ${DBDATASET}@snap1
touch ${DATABASE}/backup_in_progress
#START BACKUP SQL by SQL SNAPSHOT
sql="SELECT pg_start_backup('snapshot', true);"
sudo -u postgres psql -c "$sql"
#Fix state of DATABSE DIRECTORY to ZFS snapshot
zfs snapshot ${DBDATASET}@snap1
sql="SELECT pg_stop_backup();"
sudo -u postgres psql -c "$sql"
rm ${DATABASE}/backup_in_progress
#STOP BACKUP SQL by SQL SNAPSHOT
zfs list -t snapshot 
#CLONE ZFS SNAPSHOT to new SQL DATABSE DIRECTORY
zfs clone -o mountpoint=${DATABASE_CLONE} ${DBDATASET}@snap1 ${DBDATASET_CLONE}
#Backup by file archive
tar -cf ~/backup.tar ${DATABASE_CLONE}
#Backup by pg_dump to SQL by start tmp instance of pgsql on port 5433
rm ${DATABASE_CLONE}/${DATASQL}/postmaster.*
cp ${SHAREDSQL}/postgresql.conf.sample ${DATABASE_CLONE}/${DATASQL}/postgresql.conf
sudo -u postgres pg_ctl -D ${DATABASE_CLONE}/${DATASQL} -o "-p 5433" start
umask 077
sudo -u postgres pg_dump pleroma -p 5433 --clean --create | gzip >  pleroma_`date +%F-%H%M`.sql.gz
sudo -u postgres pg_ctl -D ${DATABASE_CLONE}/${DATASQL} stop -m immediate
umount  ${DATABASE_CLONE}
zfs destroy ${DBDATASET_CLONE}


 

 Ref.: 

2021-06-10

Нотатка для себе. SR-IOV та Intel 82576/82575 в віртуальному середовищі Proxmox для FreeBSD, Ubuntu.

В Proxmox було встановлено мережеву карту 1Gb Intel 82576 з метою використання функціоналу SR-IOV для ефективного використання для віртуальних мереж.

SR-IOV

SR-IOV

Proxmox була налаштована для PCI(e) Passthrough , IOMMU  до VM.

2021-05-24

Нотатка для себе. CARP monitoring script pfsense.

Маю два сервери pfsense (2.5.1-RELEASE ) у різних віртуальних машинах з налаштованими Proxy сервер - Squid, та Virtual IP type CARP.

Virtual IP type CARP.

Задача мати на напоготові резервний Proxy сервер у випадку коли ведуться роботи на одному з гіпервізорів. 

Для цього існує пункт налаштування "Squid General Settings/


pfSense Proxy Server - CARP Status VIP

2021-05-16

Нотатка для себе. Hosting, Multple ISP, pf routing

Нотатка є віртуальна машина з FreeBSD v13, та двома інтерфейсами для vtnet0 (ISP1) так vtnet1 (ISP2).

Роль сервера - хостинг. Але ISP2 має швидкість 10Gbit/s, тому треба певні сайти віддавати через ISP1, інші через ISP2 з метою оптимізації.

rc.conf

#ISP1

ifconfig_vtnet0="inet 10.110.6.6  netmask 255.255.255.0"
defaultrouter="10.110.6.1"

ifconfig_vtnet0_ipv6="inet6 2105:1c00:7:1::6 prefixlen 64"
ipv6_defaultrouter="2105:1c00:7:1::1" #ISP2 ifconfig_vtnet1="inet 10.220.6.97 netmask 255.255.255.0"
ifconfig_vtnet1_ipv6="inet6 2001:10:10:10::97 prefixlen 64"

За замовчуванням трафік іде через vtnet0 (ISP1).
Для організації відповіді для запиту з інтерфейсу vtnet1 не через шлюз vtnet0, а через шлюз vtnet1 створено  правило для firewall pf.

pf.conf

ext_if1 = vtnet0
ext_gw1 = 10.110.6.1

ext_if2 = "vtnet1"
ext_gw2 = "10.220.6.1"
ext_gw2v6 = "2001:10:10:10::1"

#ipv4 reply-to
pass in on $ext_if2 reply-to ($ext_if2 $ext_gw2) inet from any to $ext_if2

#ipv6 reply-to pass in reply-to ($ext_if2 $ext_gw2v6) inet6 from !$ext_if2:network to $ext_if2. pass out route-to ($ext_if2 $ext_gw2v6) inet6 from $ext_if2 to !$ext_if2:network

2020-12-23

TrueNAS VM and PPPoE or pass all non-IP Ethernet frames on FreeBSD bridge

Базово, якщо створити віртуальну машину у TrueNAS/FreeNAS то дещо обмежено у користуванні: мережа підключається через bridge а він не пропускає не IP пакети. 

Це тому-що  bridge в TrueNAS/FreeNAS має  ввімкнуте налаштування:  net.link.bridge.pfill_onlyip=1, що обмежує проходження пакетів тільки протоколу IP, (set to 0 to unconditionally pass all non-IP Ethernet frames).

Тому встановимо net.link.bridge.pfill_onlyip=0 в системних налаштуваннях TrueNAS/FreeNAS:

 Sysctl: net.link.bridge.pfill_onlyip

Після перезавантаження віртуальна машина зможе отримати всі non-IP Ethernet пакети котрі недохідні для PPPoE, DHCP або іншого  сервера наприклад в pfSense.

За матеріалами:

2020-03-29

Нотатка: zfs replication to external usb drive


Нотатка для себе, так я роблю реплікацію з зовнішнім USB накопичувачем у FreeNAS.
Зовнішній USB накопичувач монтується безпосередньо перед реплікацією, і розмонтовується після реплікації.
Зовнішній диск монтується за GPT ідентифікацією диску - GPTID (zpool list -v extusb-01), та ідентифікацією zfs pool за POOL_GUID (zpool list -o guid extusb-01).
Зовнішній диск був створений майстром створення zfs pool у FreeNAS.
Скрипт /root/script/backup-2-extusb-01-next.sh  запускається за розкладом через cron.

2019-11-08

pfsense синхронізація pf таблиці snort2c на інший firewall

Є фаєрвол pfsense (192.168.0.2) з встановленим пакунком snort.
Snort аналізує проток даних що приходить від мережевого інтерфейсу котрий під'єднаний до mirror port мережевого комутатора HP 2920.
Програма Snort аналізує мережевий потік що йде від ISP. На основі правил, отриманих за підписками, snort блокує IP адреси заносячи їх до відповідної таблиці фаєрволу pf - 'snort2c'.
Так як для аналізу мережевого потоку використовується не основний фаєрвол, а інший сервер, то за таблицею 'snort2c' нічого реально не блокується.
Фаєрвол pfsense запущено у віртуальній машині сервера PROXMOX у приватній підмережі 192.168.0.0/24.
Діаграма підключень

Для реального блокування IP адрес (ipv4, ipv6), необхідно передати інформацію про заблоковані IP адреси на інший сервер з FreeBSD (192.168.0.1) додаючи адреси до локальної таблиці 'snort2c' фаєрволу pf, і також зупиняючи усі з'єднання що існували з цими IP адресами.

2019-11-01

Нотатка. Як обмежити швидкість реплікації ZFS

За звичай швидкість треба максимальна, але інколи треба не навантажити "живу" систем у і скопіювати данні. Як це зробити ?
Шейпінгом на рівні мережевих протоколів, щось не то... хоча і можливо.
За звичай реплікація zfs виконується через потоки, zfs send | zfs recv, або віддалений варіант zfs send | ssh -e ... zfs recv.
Тому додамо щось між двома потоками. 
На вихід прийде  cstream - direct data streams, with bandwidth limiting, FIFO, audio, duplication and extended reporting support.
Підгледів у proxmos:
pvesm export zpool:vm-111-disk-2 zfs - -with-snapshots 1 -snapshot __replicate_111-1_1572565050__ -base __replicate_111-1_1572548430__ | /usr/bin/cstream -t 5000000 | /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=s1' root@10.1.0.1 -- pvesm import zpool:vm-111-disk-2 zfs - -with-snapshots 1 -base __replicate_111-1_1572548430__ 
| /usr/bin/cstream -t 5000000 | 
Таким чином zfs send | cstream -t 5000000 | zfs recv , обмежить швидкість реплікації до 5МB/s.
Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready