Показаны сообщения с ярлыком FreeBSD. Показать все сообщения
Показаны сообщения с ярлыком FreeBSD. Показать все сообщения

четверг, 18 июля 2019 г.

Ntpdate работает, а ntpd - нет.

Бывает, что ntpdate синхронизирует, а ntpd - нет.

# ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
================================================
 10.1.1.4        .INIT.          16 u    -   64    0    0.000    0.000   0.000

Проверяем интерфейсы, на которых запущен ntp.

udp        0      0 127.0.0.1:123           0.0.0.0:*                           27026/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           27026/ntpd

Этого мало! Должна быть привязка к интерфейсу.
Проверяем конфиг (если привязка настраивается там), опции и скрипты запуска.
Например, /etc/conf.d/ntpd:

# Options to pass to the ntpd process
# Most people should leave this line alone ...
# however, if you know what you're doing, feel free to tweak
NTPD_OPTS="-g -u ntp:ntp -I enp4s0.10"

Интерфейс должен быть указан правильный или не указан вовсе.
Перезапускаем ntpd и проверяем:

     remote           refid      st t when poll reach   delay   offset  jitter
===================================================
+10.1.1.4        195.210.189.106  2 u   44   64  377    7.842    0.999   0.123

Норма!

понедельник, 26 марта 2018 г.

Bash. Сравнения.

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

-d my_file Checks if its a folder.

-e my_file Checks if the file is available.

-f my_file Checks if its a file.

-r my_file Checks if it’s readable.

my_file –nt my_file2 Checks if my_file is newer than my_file2.

my_file –ot my_file2 Checks if my_file is older than my_file2.

-O my_file Checks if the owner of the file and the logged user match.

-G my_file Checks if the file and the logged user have the idetical group.

воскресенье, 25 февраля 2018 г.

Разный софт для FreeBSD.

Проверка скорости канала: iperf.
Проверка загрузки канала: iftop, slurm.
Загрузка файловой системы: "top -m io -o total", gstat
Сетевой grep: ngrep -q -d em0 -p -W byline '' 'port 5060'
SMTP-клиент для PHP: msmtp
SMTP-клиент с аттачами: mutt, biabam
POP3-клиент: fetchmail
Тестирование SIP: sipp
# sipp -rtp_echo -sn uac 192.168.2.211 -d 60s -s 222 -rp 1s -r 10 -l 300


Еще команды тут.

четверг, 3 августа 2017 г.

Настройка отправки почты через gmail с помощью php и msmtp.

В настройках аккаунта Google разрешаем доступ для "менее безопасных" приложений!
Ставим msmtp. Создаем файл конфига /usr/local/etc/msmtprc:
account default
host smtp.gmail.com
port 587
from user@gmail.com
user user@gmail.com
password my_password
auth on
tls on
tls_certcheck off
keepbcc on

Пишем в php.ini:
sendmail_path = "/usr/local/bin/msmtp -t"

Пример кода на PHP:
<?php
$BODY = "Body is here";

$to = 'user@mail.ru';
$subject = '=?utf-8?b?' . base64_encode("Subject is here") . '?=';
$message = "$BODY";.
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8'."\r\n";
$headers .= 'From: '.'=?utf-8?b?' . base64_encode("My Name") . '?='.' <user@gmail.com>'."\r\n";

if(!mail($to, $subject, $message, $headers)){
    die('error');
}
?>

вторник, 1 августа 2017 г.

Установка sipcapture сервер (HOMER) на FreeBSD.

Если не распознается логин/пароль при входе в UI, то проверяем две вещи:
1) доступность API, выполнив вызов http://ip_adress/homer/api/v1/test/. Если вызов не прошел, проверяем настройку mod_rewrite в Апаче.
2) наличие модуля php pdo_mysql. Без него не идут запросы в базу.

EEP поддерживает sngrep (надо собирать из портов с поддержкой EEP). Пример команды:
# sngrep port 5060 -H udp:192.168.2.216:9060 -d em1 -N -q

пятница, 19 мая 2017 г.

Установка chan_dongle на FreeBSD 10, Asterisk 13

Подключаем драйвера umodem и u3g.
Не забываем добавить загрузку в loader.conf.

Скачиваем chan_dongle для asterisk 13. Распаковываем.
Ставим autotools.
# pkg install autotools-20130627
Далее сносим внешний libiconv, если ставился (для mc, например). Для chan_dongle нужен родной.
# pkg delete -f libiconv-1.14_9
Переходим в папку распакованного chan_dongle.
Выполняем:
# aclocal
# autoconf
# automake -a
# ./configure --with-astversion=13.13.1 (например)
Открываем Makefile и комментируем последние 3 строки:
ifneq ($(wildcard .*.d),)
   include .*.d
endif

Далее:
# make install
# cp etc/dongle.conf /usr/local/etc/asterisk
Ставим обратно libiconv
# pkg install libiconv-1.14_10

Модем можно взбодрить командой AT^SYSCFG=2,2,3FFFFFFF,1,2.

По мотивам.
Использование.

Update:
Собираем компилятором gcc46
# make install gcc46-4.6.4_8,1
Далее в Makefile правим:
CC = gcc46
LD = gcc46

После подключения модема убеждаемся в наличие устройств cuaUx.x.
Включаем asterisk в группу dialer:
# pw groupmod dialer -m asterisk

Update2:
Для CentOS и Asterisk 15 берем отсюда https://github.com/wdoekes/asterisk-chan-dongle
# ./bootstrap
# DESTDIR="/usr/lib64/asterisk/modules" ./configure --with-astversion=15

вторник, 4 апреля 2017 г.

Генерация сертификата "Let`s Encrypt".

Для JIRA используем acme.sh.
Лежит в /root/.acme.sh.
CSR генерируем и заливаем по этой статье.
Создаем папку с именем домена в ~root/.acme.sh.
Сначала пересоздаем контейнер(старый предварительно удаляем).
#keytool -genkey -keysize 2048 -keyalg RSA -alias tomcat -keystore /home/jira/keystore
Генерируем CSR
#keytool -certreq -alias tomcat -keyalg RSA -file certreq.csr -keystore /home/jira/keystore
Кладем certreq.csr в созданную папку.
Подписываем сертификат из CSR.
#acme.sh  --signcsr  --csr /root/.acme.sh/домен/certreq.csr -w /root/.acme.sh/домен
Импортируем в контейнер сертификат CA
#keytool -import -tructcacert -alias rootca -file /root/.acme.sh/домен/ca.cer -keystore /home/jira/keystore
Импортируем личный сертификат (полную цепочку!)
#keytool -importcert -alias tomcat -file /root/.acme.sh/домен/fullchain.cer -keystore /home/jira/keystore
Алиас должен быть такой же, как при создании контейнера!
Проверяем сертификаты командой
#keytool -list -keystore /home/jira/keystore

Для report используем acme.sh в DNS режиме с другого сервера (radius).
CSR генерируем там же, RHEL4 не умеет в SHA-2.
#openssl req -nodes -newkey rsa:2048 -keyout rep.key -out rep.csr
#./acme.sh --dns --signcsr --csr rep.csr --log
#./acme.sh --renew -d rep.directcall.ru
Перенести CA и личный сертификаты, а так же ключ в /etc/httpd/conf/cert на report.

Update: Для clients используем apache mode:
# ./acme.sh --issue --apache -d mydomen.ru

Update2:
Для тикетинга тоже используем DNS-режим.
#rm /home/jira/keystore
#keytool -genkey -keysize 2048 -keyalg RSA -alias tomcat -keystore /home/jira/keystore
#keytool -certreq -alias tomcat -keyalg RSA -file certreq.csr -keystore /home/jira/keystore
#scp certreq.csr на радиус
Удаляем слово NEW из хидера и футера certreq.csr!
#./acme.sh --dns --signcsr --csr certreq.csr --log
#scp ca.cer fullchain.cer на JIRA
#keytool -import -alias rootca -file ca.cer -keystore /home/jira/keystore
#keytool -importcert -alias tomcat -file fullchain.cer -keystore /home/jira/keystore

Update3:
Ручной режим с аутентификацией через выкладывание файла на хостинг доступен в CertBot.
Тикетинг можно прямо с сервера, acme.sh в standalone режиме.

четверг, 4 февраля 2016 г.

Остановка тяжелого запроса к MySQL

Заходим в базу с консоли
#mysql -u USER -p
Выполняем
> show processlist;
Смотрим на id нашего запроса в первой колонке
> kill query proc_id;
Где proc_id - наш идентификатор.

пятница, 8 мая 2015 г.

Бэкап Avaya CMS на NFS шару.

Делаем шару на FreeBSD.
Пишем в rc.confr
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"

Создаем /etc/exports и пишем в него
/usr/home/mike/cms_backup -mapall=root avaya_cms_hostname
Где
/usr/home/mike/cms_backup - папка шары
-mapall=root - всем удаленным пользователям предоставить права рута
192.168.88.230 - хост CMS

Запускаем
# rpcbind
# nfsd -u -t -n 4
# mountd -r

На CMS
# mkdir /nfs
# chmod -R o+w /nfs
# mount -o vers=2 nfs_host_name:/usr/home/mike/cms_backup/ /nfs

Далее по мотивам https://downloads.avaya.com/css/P8/documents/100068754
# /cms/install/bin/backup /nfs
# /cms/install/bin/db_backup /nfs
Ну или через CMS Supervisor.

среда, 8 октября 2014 г.

Настройка ClamAV для фильтрации zip-архивов с исполняемыми файлами в почтовых вложениях.

Cоздаём файл в /var/db/clamav/archive.zmd c содержимым:
Block.EXE-zip:0:\.exe$:*:*:*:*:*:*
Block.COM-zip:0:\.com$:*:*:*:*:*:*
Block.JS-zip:0:\.JS$:*:*:*:*:*:*

Перегружаем clamd.

Описание формата строки:
The (now obsolete) archive metadata signatures can be only applied to ZIP and RAR files and have the following format: 
virname:encrypted:filename:normal size:csize:crc32:cmethod:fileno:max depth
where the corresponding fields are:
• Virus name
• Encryption flag (1 – encrypted, 0 – not encrypted)
• File name (this is a regular expression - * to ignore)
• Normal (uncompressed) size (* to ignore)
• Compressed size (* to ignore)
• CRC32 (* to ignore)
• Compression method (* to ignore)
• File position in archive (* to ignore)
• Maximum number of nested archives (* to ignore)
The database file should have the extension of .zmd or .rmd for zip or rar metadata
respectively.

вторник, 30 сентября 2014 г.

Копирование по scp без запроса пароля

Убедиться что ssh сервер принимает авторизацию по ключу:
В /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile путь к ключам

Убедиться что ssh клиент знает где находится private key:
В /etc/ssh/ssh_config должно быть:
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa

На клиенте создать пару — приватный, публичный ключ:
#ssh-keygen -t dsa
Будет создано два ключа в /root/.ssh/
id_dsa и id_dsa.pub

Установить публичный ключ на ssh сервер:
Копируем на сервер id_dsa.pub,  затем
#cat id_dsa.pub >> authorized_keys
(как правило authorized_keys находится /root/.ssh).

Проверяем
#ssh user@server
#scp file user@server:folder


Отсюда: http://my-hlam.livejournal.com/22067.html

среда, 26 марта 2014 г.

Сборка ядра

# cd /usr/src/sys/i386/conf (или amd64/conf)
# cp GENERIC MYKERNEL

Правим GENERIC

ident MYKERNEL


#IPFW

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPDIVERT
options         IPFIREWALL_FORWARD
options         DUMMYNET

#Если нужен ipfw nat
options         IPFIREWALL_NAT
options         LIBALIAS

#IPSEC
options         IPSEC
options         IPSEC_DEBUG
device          crypto

#CPU temp
device coretemp

Сохраняем.

# config MYKERNEL
# cd ../compile/MYKERNEL
# make cleandepend && make depend
# make all
# make install
# reboot

вторник, 25 марта 2014 г.

Отключение журналирования UFS-SUJ после установки FreeBSD > 9.x

Журналирование включено по-умолчанию после установки ОС.
В этом можно убедиться выполнив
#tunefs -p /var
или
#tunefs -p /dev/ad4s1b

Для отключения переходим в однопользовательский режим и выполняем
#tunefs -j disable /var
Перегружаемся.

пятница, 26 апреля 2013 г.

Скрипт для изъятия прикрепленных файлов и выкладывания на сетевую шару (как часть сервиса факс-сервера на циске).

Этот скрипт заточен под конкретный формат сообщений, получаемых от моей Циски. В теме письма есть поле ANI=xxxxxxxx, содержащее АОН передающего факса. Файл с изображением называется scan_ddmmyyyy.tiff.

#!/usr/local/bin/bash

#Переходим в нужный почтовый ящик.
cd /var/spool/mail/domen/user/new

# Для каждого файла с расширением .ru делаем следующее.
for MailFile in $( ls *.ru ); do
    echo >> /var/log/fax.log
    date >> /var/log/fax.log
    echo MailFile=$MailFile >> /var/log/fax.log
#Берем время создания файла из вывода "ls"
    MailCreationTime=$(ls -l ls $MailFile | awk '{print $8}' | sed 's/://')
    echo MailCreationTime=$MailCreationTime >> /var/log/fax.log
#Берем ANI из поля Subject письма (оно там на фиксированной позиции)
    ANI=$(cat $MailFile | grep Subject | cut -c 47- | sed -e 's/\]//')
    echo ANI=$ANI >> /var/log/fax.log
#Берем ID письма из первого поля Received, ID нужен для уникального именования файлов. Да  и чтоб хвосты потом найти.
    ID=$(cat $MailFile | grep PCC -m 1 | awk '{print $9}')
    echo ID=$ID >> /var/log/fax.log
#Берем текущую дату. Скрипт запускается часто, нет нужды брать дату файла.
    CurrDate=`date "+%d%m%Y"`
    echo CurrDate=$CurrDate >> /var/log/fax.log
#Формируем имя будущего файла.
    FileName="$ID"_"$ANI"_"$CurrDate"_"$MailCreationTime.tiff"
    echo FileName=$FileName >> /var/log/fax.log
#Вынимаем аттачмент из письма. Одновременно пишем в ScanName имя вынутого файла.
    ScanName=`munpack $MailFile | awk '{print $1}'`
    echo ScanName=$ScanName >> /var/log/fax.log
#Проверяем по имени аттачмента скан ли это.
    if [[ $ScanName == scan_* ]]
#Если да, то переносим на windows шару. Чтобы не маунтить шару, можно использовать sambaclient.
        then mv $ScanName /mnt/$FileName
#Если нет, то начинаем следующую итерацию цикла.
        else continue
    fi
#Переносим обработанный файл в current.
    mv $MailFile /var/spool/mail/directcall.ru/abankin/cur
done
#Подметаем.
rm *
exit 0

понедельник, 22 апреля 2013 г.

Бэкап FreeBSD

Сначала маунтим внешнюю шару.

#mount_smbfs //user@server/temp /mnt

Потом дампим по-очереди все разделы.
#dump -0u -a -L -f /mnt/usr.img /usr
или
#dump -0u -a -L -f - /usr | gzip -2 > usr.gz

Не забыть скопировать fstab!