Решение ошибки dhcpd self-test failed. Please fix the config file

Заметил однажды в логах syslog ошибку:

dhcpd self-test failed. Please fix the config file

На сервере был установлен isc-dhcp-server.

Проверить правильность конфигурационного файла можно командой:

dhcpd -t
dhcpd -t -cf /dir/dhcpd.conf
/usr/sbin/dhcpd -t

Команда должна сообщить на какой строке ошибка, но заметил что если она не критическая, то может и не сообщить.
Ключ «t» выполняет тест конфигурации, а «cf» позволяет указать путь к файлу конфигурации, если он не стандартный.

В моем случае, в конфигурационном файле /etc/dhcp/dhcpd.conf кто-то совершил опечатку, в строке ниже (была лишняя буква):

authorivtative;

Из-за этого и возникала ошибка, но несмотря на ошибку dhcp работал.
Хотя когда-то встречались и критические ошибки, например неправильно написанный mac адрес, из-за такой ошибки DHCP не запускался.

Настройка ircd-hybrid

Допустим мы установили ircd-hybrid как я описывал в этой статье — Установка IRC сервера — ircd-hybrid
Теперь приступим к настройке.

Отредактируем текст приветственного сообщения:

sudo nano /etc/ircd-hybrid/ircd.motd

Сделаем копию конфигурационного файла на всякий случай:

sudo cp /etc/ircd-hybrid/ircd.conf /etc/ircd-hybrid/ircd_original.conf

Откроем в текстовом редакторе основной файл конфигурации, настроим параметры и закомментируем ненужные:

sudo nano /etc/ircd-hybrid/ircd.conf

В конфигурационном файле сначала идут стандартные параметры serverinfo, по желанию изменим их:

serverinfo {
        name = "hybrid8.debian.local";
        description = "test";
        network_name = "debian";
        network_desc = "This is My Network";
        hub = no;
        default_max_clients = 512;
        max_nick_length = 15;
        max_topic_length = 300;
};

Далее контакты администратора сервера, по желанию изменим их:

admin {
        name = "SYSADMIN";
        description = "Main Server Administrator";
        email = "<admin@example.com>";
};

Сетевые параметры (на каких портах будет работать ircd-hybrid, например можно изменить на один 6667):

listen {
        port = 6665 .. 6669;
};

Первый блок auth который разрешает подключаться всем с локального адреса 127.0.0.1:

auth {
        user = "*@127.0.0.1";
        spoof = "i.love.debian.org";
        class = "opers";
        flags = need_password, spoof_notice, exceed_limit, kline_exempt,
                xline_exempt, resv_exempt, no_tilde, can_flood;
};

Еще один блок auth разрешающий подключаться всем (его закомментируем или изменим под свои нужды):

auth {
        user = "*@*";
        class = "users";
        flags = need_ident;
};

Например, создадим пароль пользователю, скопируем результат команды в зашифрованном виде:

mkpasswd PASSWORD

Добавим возможность авторизации любым пользователям только с паролем и с указанной сети:

auth {
        user = "*@192.168.3.0/24";
        class = "users";
        flags = need_password;
encrypted = yes;
password = "PASSWORD_FROM_mkpasswd";
};

В блоке auth пароль будет хранится в шифрованном виде, в IRC клиенте указывается как есть.
Чтобы указать в блоке auth пароль в нешифрованном виде, нужно убрать encrypted.

В секции general отключим need_ident:

general {
...
disable_auth = yes;
...
};

Перезапустим ircd-hybrid чтобы применить изменения:

sudo /etc/init.d/ircd-hybrid restart
sudo service ircd-hybrid restart

Также можем добавить оператора:

auth {
name = "admin";
user = "admin@192.168.3.254/32";
class = "opers";
flags = need_password, spoof_notice, exceed_limit, kline_exempt;
encrypted = yes;
password = "PASSWORD_FROM_mkpasswd";
};

Блокировать IP адреса в случае необходимости можно следующим образом:

deny {
       ip = "192.168.4.4/32";
       reason = "Spam";
};

После изменений в конфигурационном файле нужно перезапустить ircd-hybrid.
В качестве клиента можно использовать например бесплатный AdiIRC.

Установка IRC сервера — ircd-hybrid

Приведу пример установки IRC сервера — ircd-hybrid.

Для установки ircd-hybrid в Ubuntu выполним команду:

sudo apt-get install ircd-hybrid

После установки ircd-hybrid будет использовать TCP порты 6665-6669.

По желанию, чтобы подключиться к IRC из терминала, можно установить например IRC клиент epic4:

sudo apt-get install epic4

И подключиться:

irc 127.0.0.1

Подключиться к каналу можно командой:

/join CHANNEL

Выйти:

/quit

Проверить запущен ли ircd-hybrid можно например так:

netstat -a | grep irc
netstat -an | grep 6667

Перезапустить ircd-hybrid можно так:

sudo /etc/init.d/ircd-hybrid restart

Если используется iptables, до нужно прописать правило:

sudo iptables -A INPUT -p tcp -m tcp -s 192.168.1.0/24 --dport 6667 -j ACCEPT

На этом установка завершена и можно переходить к настройке.
Смотрите мою статью о настройке — Настройка ircd-hybrid

Также приведу пример установки ircd-hybrid из исходников.
Скачаем ircd-hybrid с официальный сайта:

wget http://prdownloads.sourceforge.net/ircd-hybrid/ircd-hybrid-8.2.22.tgz
tar -xvf ircd-hybrid-8.2.22.tgz
cd ircd-hybrid-8.2.22

Установим необходимые компоненты:

sudo apt-get install build-essential unzip cmake

Сконфигурируем и установим ircd-hybrid:

./configure --prefix="/home/USER/ircd"
make
make install

Можно также установить Anope (для расширения функциональности):

cd /tmp/
wget https://github.com/anope/anope/archive/2.0.zip
unzip 2.0.zip
cd anope-2.0
./Config
cd build
make
make install

Установим правильного владельца:

sudo chown -R USER: ~/services ~/ircd

Решение ошибки /usr/sbin/ejabberdctl: line 428: 14615 Segmentation fault

Заметил однажды после установки EJabberd в Ubuntu Server 16.04 и добавлении пользователя от root командой:

ejabberdctl register USER localhost PASSWORD

Следующую ошибку:

/usr/sbin/ejabberdctl: line 428: 14615 Segmentation fault $EXEC_CMD «$CMD»

В лог файле /var/log/syslog сообщалось:

Sep 11 11:17:00 mail kernel: [4647543.535271] audit: type=1400 audit(1505117820.598:43): apparmor=»DENIED» operation=»file_mmap» profile=»/usr/sbin/ejabberdctl//su» name=»/bin/su» pid=14439 comm=»su» requested_mask=»m» denied_mask=»m» fsuid=0 ouid=0

Для решения ошибки открыл файл конфигурации apparmor:

nano /etc/apparmor.d/usr.sbin.ejabberdctl

Нашел строку:

/bin/su                                 r,

И изменил её, добавив m:

/bin/su                                 rm,

Перезапустил apparmor:

sudo service apparmor restart

Все, ошибка больше не появлялась.

Резервное копирование Redmine

Создадим скрипт (в текстовом редакторе nano Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/cron.daily/redmine

Пример содержимого скрипта:

#!/bin/sh
/usr/bin/mysqldump -u root -p<password> redmine_default | gzip > /path/to/backups/redmine_db_`date +%y_%m_%d`.gz
rsync -a /var/lib/redmine/default/files /path/to/backups/files

Сделаем скрипт исполняемым:

chmod +x /etc/cron.daily/redmine

В скрипте можно также добавить команду удаления старых файлов или директории, чтобы не возникло переполнения диска, подробнее смотрите мою статью — Скрипт удаления старых файлов

Смотрите также прочие мои статьи о резервном копировании — Резервное копирование

Подключение к SSH с использованием ключей

Чтобы подключаться к SSH без ввода пароля, можно сгенерировать на локальном севере публичный и приватный ключи, публичный потом скопировать на удаленную машину, после чего пароль при подключении к ней не будет спрашиваться.

На локальной машине генерируем ключи:

sudo ssh-keygen -t rsa

Копируем публичный ключ на удаленный сервер:

sudo ssh-copy-id -i ~/.ssh/id_rsa.pub -p PORT USER@HOST

Если возникает ошибка при копировании ключа, то можно вручную скопировать строку из id_rsa.pub на удаленный сервер в файл authorized_keys.

Указанные команды нужно выполнять от того пользователя, от которого будет выполнятся подключение.
Например если от root, то нужно перед двумя командами выше выполнить команду:

sudo -i

Убрать хост можно командой:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R [HOST]:22

Смотрите также:
Установка и настройка SSH

Как удалить iRedMail

Приведу пример удаления iRedMail.
На тесте удалю установленный iRedMail 0.9.7 с Ubuntu Server 16.04 используя скрипт удаления — clear_iredmail.

Перейдем в директорию tools установщика iRedMail, сохраним в нее скрипт, в моем случае это:

cd /root/iRedMail-0.9.7/tools/
wget https://ixnfo.com/wp-content/uploads/2017/08/clear_iredmail.zip
unzip clear_iredmail.zip

Сделаем его исполняемым:

chmod +x clear_iredmail.sh

И запустим:

bash clear_iredmail.sh

Скрипт удалит mysql, ssl, amavisd, clamav, spamassassin, dovecot, postfix, iredapd, пользователей и т.д., нужно быть осторожным если на сервере установлено еще что-то кроме iRedMail.
В коде скрипта можно увидеть поэтапно расписанный процесс удаления iRedMail.

Решение ошибки host NAME greeted me with my own hostname NAME

Заметил однажды на одном сервере, что Postfix не всегда отправляет письма, в логах была следующая ошибка:

warning: host NAME[192.168.5.5]:25 greeted me with my own hostname NAME

Посмотрев имя хоста:

hostname -f

Обнаружил что оно не правильное и совпадает с тем на которое шлется почта!

Изменил имя хоста на правильное в следующих файлах (в редакторе nano Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/hostname
sudo nano /etc/postfix/main.cf
sudo nano /etc/hosts

Все, после этого ошибка не появлялась и почта успешно доставлялась.