ipcad – подсчет трафика

Установка:

# cd /tmp
# wget http://rnd.rajven.net/centos/7/os/x86_64/ipcad-3.7.3-5cnt7.x86_64.rpm
# yum install ipcad-3.7.3-5cnt7.x86_64.rpm -y

Правим конфиг:

# vi /etc/ipcad.conf

capture-ports enable;
interface "enp3s1" promisc;
#Если нужен маркированный трафик
#interface ulog group 1;
interface tun0 promisc;
aggregate 192.168.113.0/24 strip 32;
aggregate 10.8.0.0/24 strip 32;
aggregate 0.0.0.0/0 strip 32;
rsh enable at 127.0.0.1;
rsh root@127.0.0.1 admin;
rsh user@127.0.0.1 deny;
rsh 127.0.0.1 view-only;
netflow export version 5;
netflow export destination 127.0.0.1 9998;
pidfile = /var/run/ipcad.pid;
dumpfile = /var/log/ipcad/ipcad.dump;

Создаем директорию, файл и назначаем права доступа:

# mkdir -p /var/log/ipcad && touch /var/log/ipcad/ipcad.dump && chmod 600 /var/log/ipcad/ipcad.dump

Если маркируем пакеты то дописываем правила iptables для маркировки (после NAT):

# IPCAD
iptables -A FORWARD -j ULOG --ulog-nlgroup 1
iptables -A OUTPUT -j ULOG --ulog-nlgroup 1

Запуск:

# ipcad -rds

Значение ключей таково:

  • r – при запуске импортируем данные из dumpfile;
  • d – запускаем процесс в виде демона (при первом запуске его можно не использовать);
  • s – по завершению работы сохранять статистику в dumpfile.

Просмотр статистики:

# rsh localhost show ip accounting

Полезно периодически сохранять текущую статистику в файл:

# rsh localhost dump > /var/log/ipcad/ipcad.`date`

Общий синтаксис команд для ipcad выглядит следующим образом:

rsh host comand

где host – это хост, на котором ведётся статистика, а comand – это сама команда. В рассматриваемом случае значением host является localhost.

По команде:

rsh localhost help

доступен полный список команд. А именно:

n  show ip accounting – показать статистику.
n  clear ip accounting – сбросить статистику до контрольной точки. Если контрольная точка не задана, то статистика сбрасывается в ноль.
n  show ip accounting checkpoint – показать статистику, сохранённую в контрольных точках.
n  clear ip accounting checkpoint – сбросить все контрольные точки.
n  show ip cache flow – показать кэш NetFlow.
n  show interface <iface> – показать счётчик интерфейса <iface>.
n  dump [<path>] – сохранить текущую статистику в файл <path>. Если <path> не указывать, то статистика сбросится в dumpfile, указанный в конфигурационном файле ipcad.conf.
n  restore [<path>] – восстановить статистику.
n  import [<path>] – импортировать (добавить) статистику.
n  stat – показать текущее состояние работы ipcad.
n  show version – показать версию и uptime ipcad.
n  shutdown – завершить работу ipcad.

При запуске скрипта возможен вывод варнинга:

# /home/$user/bin/ipcad.ch
connect to address ::1: Connection refused
Typing 127.0.0.1...
connect to address ::1: Connection refused
Typing 127.0.0.1...
IP accounting cleared
connect to address ::1: Connection refused
Typing 127.0.0.1...

localhost у вас резолвится в

host localhost  
localhost has address 127.0.0.1
localhost has IPv6 address ::1

сначала идет попытка коннектится к ::1:514, там никто не слушает, после rsh делает коннект к 127.0.0.1:514 а там у вас ipcad, трактуйте это не как ошибку а как warning, на работу вашего скрипта это не оказывает никакого влияния.

Если вас это ругань сильно напрягает, то можете заменить в скрипте

rsh localhost на rsh 127.0.0.1

http://www.adodo.ru/blog/linux/95.html

http://www.gentoo.ru/node/11796

http://muff.kiev.ua/content/ipcad-netflow-sobiraem-i-slivaem-statistiku-traffika

https://local.com.ua/forum/topic/81132-ipcad-%D0%BD%D0%B5-%D0%BE%D1%82%D0%B4%D0%B0%D0%B5%D1%82-%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D1%83-%D0%BF%D0%BE-%D1%81%D0%B5%D1%82%D0%B8/

https://www.nixp.ru/articles/11.html

https://forum.netgate.com/topic/72733/%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82-ipcad-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F

IPCAD installation on CentOS 7

image_pdfimage_print

iptables – блокировка по разным признакам

Запрет на скачивание больших файлов

модуль: connbytes

iptables -A FORWARD -m connbytes --connbytes 100000 -j REJECT

примечание: теперь все TCP сессии более 100 Кбайт будут «обрезаны», необходимо добавить исключения для протоколов типа ssh, обычные «долгоживущие» чаты и т.п.

Запрет по содержимому заголовка пакета

модуль: string

iptables -A FORWARD -m string --string "X-Kazaa-" -j REJECT

Запрет по MAC-адресу

модуль: mac

iptables -A FORWARD -m mac --mac-source "00:11:22:33:44:55" -j REJECT

Запрет по времени

модуль: time

iptables -A FORWARD -m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59 -j REJECT
image_pdfimage_print

nginx редирект, когда больше 1 домена

Очень часто это является проблемой при построении редиректов, когда у вас больше 1 домена. Следующая конструкция выглядит работоспособной:

return 301 https://$server_name$request_uri;

Всё работает, когда у вас всего 1 домен в server_name. А когда 2 и больше, то для них redirect работает не правильно (он редиректит на самый первый домен в server_name). А всё потому, что нужно вместо $server_name использовать хост. В документации написано следующее:

  • $server_name: имя сервера, принявшего запрос
  • $host: в порядке приоритета: имя хоста из строки запроса, или имя хоста из поля “Host” заголовка запроса, или имя сервера, соответствующего запросу

То есть, в server_name будет подставляться имя сервера, то есть самый первый домен, прописанный в server_name.

Итого, правильный вариант:

return 301 https://$host$request_uri;

Проверить это можно, создав такой конфиг:

server {
        listen *:80;
        server_name test1.com test2.com;
        return 301 https://$host$request_uri;
}

и сделав запросы:

# curl -Is http://test1.com | grep Location
Location: https://test1.com
# curl -Is http://test2.com | grep Location
Location: https://test2.com

Теперь, если подставить вместо $host -> $server_name, получим следующее:

# curl -Is http://test1.com | grep Location
Location: https://test1.com
# curl -Is http://test2.com | grep Location
Location: https://test1.com

[nginx] rewrite: $host or $server_name

image_pdfimage_print

Обновление Nagios 3.x до Nagios 4.4.3

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

[root@tecmint ]# service nagios stop
[root@tecmint ]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.3.tar.gz
[root@tecmint ]# tar -zxvf nagios-4.4.3.tar.gz
[root@tecmint ]# cd nagios-4.4.3
[root@tecmint ]# ./configure
[root@tecmint ]# make all
[root@tecmint ]# make install
[root@tecmint ]# service nagios start
image_pdfimage_print

Обновление php56 на php72

Во время обновления пакетов, обновился и owncloud 10.1.1 на 10.2.0 и перестал работать, требуя версию php не ниже 7.0.8, yum downgrade owncloud не помог, поэтому обновляем php.

Сначала сделаем список всех пакетов которые относятся к php

# rpm -qa | grep php
php-tcpdf-6.2.26-1.el7.noarch
php-tcpdf-dejavu-sans-fonts-6.2.26-1.el7.noarch
php56w-process-5.6.40-1.w7.x86_64
php-pear-1.9.4-21.el7.noarch
php-pear-Net-IDNA2-0.1.1-10.el7.noarch
php-php-gettext-1.0.12-1.el7.noarch
php56w-cli-5.6.40-1.w7.x86_64
php56w-pspell-5.6.40-1.w7.x86_64
php56w-ldap-5.6.40-1.w7.x86_64
php56w-pecl-memcached-2.2.0-1.w7.x86_64
php-fedora-autoloader-1.0.0-1.el7.noarch
php-kolab-net-ldap3-1.0.7-2.el7.noarch
php56w-common-5.6.40-1.w7.x86_64
php56w-5.6.40-1.w7.x86_64
php56w-gd-5.6.40-1.w7.x86_64
php-pear-Auth-SASL-1.0.6-5.el7.noarch
php56w-pecl-igbinary-2.0.5-1.w7.x86_64
php56w-mysql-5.6.40-1.w7.x86_64
php56w-mbstring-5.6.40-1.w7.x86_64
php56w-xml-5.6.40-1.w7.x86_64
php56w-tidy-5.6.40-1.w7.x86_64
php-pear-Net-Socket-1.0.14-1.el7.noarch
php-pear-Mail-Mime-1.10.2-1.el7.noarch
php56w-pecl-memcache-3.0.8-2.w7.x86_64
php56w-pdo-5.6.40-1.w7.x86_64
php56w-imap-5.6.40-1.w7.x86_64
php-pear-Net-LDAP2-2.1.0-1.el7.noarch
php56w-pecl-apcu-4.0.11-2.w7.x86_64
phpMyAdmin-4.4.15.10-3.el7.noarch
php56w-intl-5.6.40-1.w7.x86_64
php-pear-Net-Sieve-1.3.4-4.el7.noarch
php56w-pecl-redis-3.1.6-1.w7.x86_64
php56w-bcmath-5.6.40-1.w7.x86_64
php56w-fpm-5.6.40-1.w7.x86_64
php-pear-Net-SMTP-1.7.3-1.el7.noarch

# rpm -qa | grep php > php-all-list.txt

С репозитория webtatic

# rpm -qa php56w*
php56w-process-5.6.40-1.w7.x86_64
php56w-cli-5.6.40-1.w7.x86_64
php56w-pspell-5.6.40-1.w7.x86_64
php56w-ldap-5.6.40-1.w7.x86_64
php56w-pecl-memcached-2.2.0-1.w7.x86_64
php56w-common-5.6.40-1.w7.x86_64
php56w-5.6.40-1.w7.x86_64
php56w-gd-5.6.40-1.w7.x86_64
php56w-pecl-igbinary-2.0.5-1.w7.x86_64
php56w-mysql-5.6.40-1.w7.x86_64
php56w-mbstring-5.6.40-1.w7.x86_64
php56w-xml-5.6.40-1.w7.x86_64
php56w-tidy-5.6.40-1.w7.x86_64
php56w-pecl-memcache-3.0.8-2.w7.x86_64
php56w-pdo-5.6.40-1.w7.x86_64
php56w-imap-5.6.40-1.w7.x86_64
php56w-pecl-apcu-4.0.11-2.w7.x86_64
php56w-intl-5.6.40-1.w7.x86_64
php56w-pecl-redis-3.1.6-1.w7.x86_64
php56w-bcmath-5.6.40-1.w7.x86_64
php56w-fpm-5.6.40-1.w7.x86_64

# rpm -qa php56w* > php56w-list.txt

Удаляем их одной командой:

# yum remove php56w-cli php56w-pspell php56w-ldap php56w-pecl-memcached php56w-common php56w php56w-gd php56w-pecl-igbinary php56w-mysql php56w-mbstring php56w-xml php56w-tidy php56w-pecl-memcache php56w-pdo php56w-imap php56w-pecl-apcu php56w-intl php56w-pecl-redis php56w-bcmath php56w-fpm

Зависимости определены

=============================================================================================================================================================
Package Архитектура Версия Репозиторий Размер
=============================================================================================================================================================
Удаление:
php56w x86_64 5.6.40-1.w7 @webtatic 9.3 M
php56w-bcmath x86_64 5.6.40-1.w7 @webtatic 94 k
php56w-cli x86_64 5.6.40-1.w7 @webtatic 9.2 M
php56w-common x86_64 5.6.40-1.w7 @webtatic 8.6 M
php56w-fpm x86_64 5.6.40-1.w7 @webtatic 4.7 M
php56w-gd x86_64 5.6.40-1.w7 @webtatic 789 k
php56w-imap x86_64 5.6.40-1.w7 @webtatic 207 k
php56w-intl x86_64 5.6.40-1.w7 @webtatic 797 k
php56w-ldap x86_64 5.6.40-1.w7 @webtatic 133 k
php56w-mbstring x86_64 5.6.40-1.w7 @webtatic 2.7 M
php56w-mysql x86_64 5.6.40-1.w7 @webtatic 476 k
php56w-pdo x86_64 5.6.40-1.w7 @webtatic 397 k
php56w-pecl-apcu x86_64 4.0.11-2.w7 @webtatic 293 k
php56w-pecl-igbinary x86_64 2.0.5-1.w7 @webtatic 144 k
php56w-pecl-memcache x86_64 3.0.8-2.w7 @webtatic 287 k
php56w-pecl-memcached x86_64 2.2.0-1.w7 @webtatic 359 k
php56w-pecl-redis x86_64 3.1.6-1.w7 @webtatic 1.1 M
php56w-pspell x86_64 5.6.40-1.w7 @webtatic 47 k
php56w-tidy x86_64 5.6.40-1.w7 @webtatic 110 k
php56w-xml x86_64 5.6.40-1.w7 @webtatic 671 k
Удаление зависимостей:
php-fedora-autoloader noarch 1.0.0-1.el7 @epel 15 k
php-kolab-net-ldap3 noarch 1.0.7-2.el7 @epel 149 k
php-pear noarch 1:1.9.4-21.el7 @base 2.2 M
php-pear-Auth-SASL noarch 1.0.6-5.el7 @epel 51 k
php-pear-Mail-Mime noarch 1.10.2-1.el7 @epel 176 k
php-pear-Net-IDNA2 noarch 0.1.1-10.el7 @epel 112 k
php-pear-Net-LDAP2 noarch 2.1.0-1.el7 @epel 443 k
php-pear-Net-SMTP noarch 1.7.3-1.el7 @epel 59 k
php-pear-Net-Sieve noarch 1.3.4-4.el7 @epel 265 k
php-pear-Net-Socket noarch 1.0.14-1.el7 @epel 22 k
php-php-gettext noarch 1.0.12-1.el7 @epel 57 k
php-tcpdf noarch 6.2.26-1.el7 @epel 11 M
php-tcpdf-dejavu-sans-fonts noarch 6.2.26-1.el7 @epel 1.5 M
php56w-process x86_64 5.6.40-1.w7 @webtatic 157 k
phpMyAdmin noarch 4.4.15.10-3.el7 @epel 24 M
zabbix-web noarch 3.4.15-1.el7 @zabbix 15 M
zabbix-web-mysql noarch 3.4.15-1.el7 @zabbix 0.0

Итого за операцию
=============================================================================================================================================================
Удалить 20 пакетов (+17 зависимых)

Объем изменений: 95 M
Продолжить? [y/N]:

Внимательно смотрим предупреждения:

предупреждение: /etc/phpMyAdmin/config.inc.php сохранен как /etc/phpMyAdmin/config.inc.php.rpmsave
предупреждение: /etc/php-fpm.d/www.conf сохранен как /etc/php-fpm.d/www.conf.rpmsave
предупреждение: /etc/php.ini сохранен как /etc/php.ini.rpmsave

Устанавливаем аналогичные списку, но новой версии:

# yum install php72w-cli php72w-pspell php72w-ldap php72w-pecl-memcached php72w-common php72w php72w-gd php72w-pecl-igbinary php72w-mysql php72w-mbstring php72w-xml php72w-tidy php72w-pecl-memcache php72w-pdo php72w-imap php72w-pecl-apcu php72w-intl php72w-pecl-redis php72w-bcmath php72w-fpm

Ругнулся на этот пакет:

Пакета с названием php72w-pecl-memcache не найдено

Измененные *.conf файлы переименовал обратно, сохранив при этом новые.

При запуске

# systemctl start php-fpm

Ругался на эти файлы, как оказалось, нужно было изменить знак коментария “#” на “;” и все заработало.

2. WordPress нормально запустился, но пришлось переустановить phpMyAdmin

# yum install phpmyadmin

3. Owncloud не запустился, nginx отдавал 502 ошибку. Поэтому переустановил и его предварительно сделав бэкап.

# yum remove -y owncloud-files 
# yum install -y owncloud-files

Дальше стандартная установка через WEB. В конце потребовал запустить upgrade. Для этого переходим в пользователя под который запускает owncloud (у меня это nginx), предварительно добавив ему шел:

# vipw

#nginx:x:996:993:Nginx web server:/var/lib/nginx:/sbin/nologin
nginx:x:996:993:Nginx web server:/var/lib/nginx:/bin/bash

Логинимся:

# su nginx

Переходим в его директорию:

$ cd /var/www/html/owncloud

Запускаем обновление и получаем ругань:

bash-4.2$ ./occ upgrade
ownCloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
2019-05-23T07:35:56+00:00 Set log level to debug
2019-05-23T07:35:56+00:00 Turned on maintenance mode
2019-05-23T07:35:56+00:00 Repair step: Upgrade app code from the marketplace
2019-05-23T07:35:56+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
2019-05-23T07:35:56+00:00 Repair warning: Please install or update the following apps manually or disable them with:
occ app:disable audioplayer
occ app:disable drawio
occ app:disable files_external_ftp
occ app:disable files_pdfviewer
occ app:disable files_texteditor
occ app:disable gallery
occ app:disable onlyoffice
2019-05-23T07:35:56+00:00 Repair warning: For manually updating, see https://doc.owncloud.org/server/10.2/go.php?to=admin-marketplace-apps
2019-05-23T07:35:56+00:00 OC\RepairException: Upgrade is not possible
2019-05-23T07:35:56+00:00 Update failed
2019-05-23T07:35:56+00:00 Maintenance mode is kept active
2019-05-23T07:35:56+00:00 Reset log level

Выполняем то что он хочет:

bash-4.2$ ./occ app:disable drawio

и повторяем:

bash-4.2$ ./occ upgrade

Все прошло удачно. Пробуем залогиниться.

image_pdfimage_print

Список команд для работы с LVM

Изменить атрибуты логического тома

lvchange

Создать логический том

lvcreate

Показать информацию о логическом томе

lvdisplay

Добавить места в логический том

lvextend

(команда устарела, её лучше не использовать)

lvmchange

Показать список устройств, которые могут быть использованы как физический том

lvmdiskscan

Собрать данные об активности использования LVM

lvmsadc

Создать отчёт об активности использования LVM

lvmsar

Уменьшить размер логического тома

lvreduce

Удалить логический том из системы

lvremove

Переименовать логический том

lvrename

Изменить размер логического тома

lvresize

Показать информацию о логическом томе

lvs

Показать список логических томов во всех группах томов

lvscan

Изменить атрибуты физического тома

pvchange

Инициализировать физический том для использования в LVM

pvcreate

Показать информацию (из метаданных на диске) о физическом томе

pvdata

Показать информацию о физическом томе

pvdisplay

Переместить эстенты с одного физического тома на другой

pvmove

Удалить метку LVM с физического тома

pvremove

Изменить размер физического тома, использующегося в группе томов

pvresize

Показать информацию о физическом томе

pvs

Показать список всех физических томов

pvscan

Сделать резервную копию конфигурации группы томов

vgcfgbackup

Восстановить из резервной копии конфигурацию группы томов

vgcfgrestore

Изменить атрибуты группы томов

vgchange

Проверить целостность группы томов

vgck

Изменить формат метаданных группы томов

vgconvert

Создать группу томов

vgcreate

Показать информацию о группе томов

vgdisplay

Разрегистрировать группу томов в системе

vgexport

Добавить физический том в группу томов

vgextend

Зарегистрировать эскпортированную группу томов в системе

vgimport

Объединить группы томов

vgmerge

Создать файлы устройств для групп томов в каталоге /dev/

vgmknodes

Удалить физический том из группы томов

vgreduce

Удалить группу томов

vgremove

Переименовать группу томов

vgrename

Показать информацию о группах томов

vgs

Выполнить поиск групп томов

vgscan

Переместить физический том в новую группу томов

vgsplit
image_pdfimage_print