IPTables правила для TFTP

Чтобы открыть порт TFTP в IPTables выполним правило:

sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT

Чтобы открыть порт TFTP только для конкретной сети, выполним правило:

sudo iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 69 -j ACCEPT

Чтобы удалить првило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p udp -s 192.168.1.0/24 --dport 69 -j ACCEPT

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

sudo iptables -nvL

Смотри также мои статьи:
Настройка IPTables
Установка и настройка TFTP сервера в Ubuntu

Сброс конфигурации BDCOM P3310

Для теста выполню сброс настроек на BDCOM P3310C-2AC, аналогично можно сбросить и на других ревизиях BDCOM P3310.

Подключимся консольным кабелем к выключенному устройству, откроем терминал, включаем питание, сразу же зажимаем клавиши Ctrl+P, держим их и ждем появлении надписи ниже, если клавиши поздно нажать, то устройство может начать загружаться в обычном режиме, в этом случае начнем сначала.

У меня появилась надпись:

Welcome to BDCOM P3310C EPON OLT

Потом нажал клавишу «Enter» и отобразилось:

monitor#

Набираем команду:

delete startup-config

Соглашаемся с тем что хотим стереть этот файл нажав клавишу «y«.

Готово, файл с конфигурацией стерт, осталось перезагрузить устройство набрав:

reboot

И снова соглашаемся нажав «y»

Смотрите также мою статью:
Настройка BDCOM P3310B-2AC EPON

Смотрите видео как я это делал:

IPTables правила для Asterisk

Чтобы разрешить подключение SIP в IPTables, добавим правила (первое для соединений, второе для голосового трафика):

sudo iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

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

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.50 --dport 10000:20000 -j ACCEPT

Аналогично укажем для каждого IP либо сразу для подсети, например:

sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

Чтобы удалить првило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 5060 -j ACCEPT
sudo iptables -D INPUT -p udp -m udp -s 192.168.1.0/24 --dport 10000:20000 -j ACCEPT

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

sudo iptables -nvL

Смотри также мою статью:
Настройка IPTables

Решение ошибки «insserv: warning: script ‘script’ missing LSB tags and overrides»

Заметил однажды следующую ошибку:

insserv: warning: script ‘MyScript.sh’ missing LSB tags and overrides

Она появляется из-за того, что кто-то при написании скрипта /etc/init.d/MyScript.sh забыл написать вначале LSB тэги.

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

sudo nano /etc/init.d/MyScript.sh

И добавил в начале:

### BEGIN INIT INFO
# Provides:          MyScript
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: ...
# Description: ...
### END INIT INFO

Ускорение работы iOS 11

После обновления iPhone 5s и iPhone 6s до iOS11 заметил что интерфейс стал работать медленнее.

Ускорить работу помогло отключение анимации и визуальных эффектов.

Чтобы их отключить необходимо открыть «Настройки» — «Основные» — «Универсальный доступ» и включить «Уменьшение движения«.

После этого iPhone будет работать быстрее.

Настройка Reverse DNS (PTR) в Hetzner

Настроить обратную DNS запись (PTR) для Hetzner сервера можно в панели управления Robot
Нажав слева «Servers» — выбрав сервер, и кликнув по IP адресу севера появится поле ввода «Reverse DNS», где её и нужно указать.

После настройки, на моей практике изменения вступали в силу в течении суток.

Смотрите также:
Настройка PTR записи на DNS сервере

Настройка FreeRADIUS DHCP для ABillS

Допустим установлен FreeRADIUS 2 как написано в этой статье — Установка и настройка биллинговой системы ABillS
Теперь скопируем файл dhcp.conf в конфигурацию FreeRADIUS:

sudo cp /usr/abills/misc/freeradius/v2/dhcp.conf /usr/local/freeradius/etc/raddb/sites-enabled/

Откроем его в редакторе и заменим %DHCP_SERVER_IP% на ip адрес сервера и укажем сетевой интерфейс:

sudo nano /usr/local/freeradius/etc/raddb/sites-enabled/dhcp.conf

Откроем в редакторе словарь:

sudo nano /usr/local/freeradius/share/freeradius/dictionary

Добавим строку:

$INCLUDE dictionary.dhcp

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

radiusd -X

Возможно Freeradius уже запущен и запустить еще один естественно не получится, смотрите мою статью — Решение ошибки Failed binding to authentication address * port 1812: Address already in use freeradius
После запуска должно отобразится что-то вроде:

Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on dhcp interface enp2s0 address 192.168.99.1 port 67 as server dhcp
Ready to process requests.

Комбинацией клавиш Ctrl+C остановим radiusd и запустим в обычном режиме:

sudo /etc/init.d/radiusd start

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

sudo tcpdump port 67 or port 68 -e -n

Приступим к настройке ABillS, импортируем базу модуля Dhcphosts:

mysql -u root -p --default-character-set=utf8 -D abills < /usr/abills/db/Dhcphosts.sql

Копируем платный модуль в ABillS:

cp Mac_auth.pm /usr/abills/Abills/mysql/

В файле config.pl ABillS должен быть подключен модуль Dhcphosts:

Откроем файл конфигурации ABillS в текстовом редакторе:

nano /usr/abills/libexec/config.pl

И пропишем следующие параметры:

$AUTH{dhcp}='Mac_auth';
# использовать для DHCP leases записей базу
$conf{DHCPHOSTS_LEASES}='db'; 
# включить авторизацию по порту и коммутатору
$conf{DHCPHOSTS_PORT_BASE}=1;

Естественно должен быть подключен модуль Dhcphosts:

@MODULES = (
        'Dhcphosts'
        );

Настроим DHCP логи, откроем в текстовом редакторе файл:

/usr/local/freeradius/etc/raddb/modules/linelog

И добавим в самом конце:

linelog linelog-dhcp {
    filename = ${logdir}/linelog-dhcp.log
    format = ""
    reference = "%{%{reply:DHCP-Message-Type}:-%{request:DHCP-Message-Type}}"
    DHCP-Discover = "%S --> Transaction-ID: %{DHCP-Transaction-Id} DISCOVER: [%{DHCP-Client-Hardware-Address}] via (%{DHCP-Gateway-IP-Address}), hop count = %{DHCP-Hop-Count}, Relay = %{DHCP-Relay-Remote-Id}, Hostname =  %{DHCP-Hostname}"
    DHCP-Offer = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} OFFER: %{reply:DHCP-Your-IP-Address} to [%{DHCP-Client-Hardware-Address}] ..."
    DHCP-Request = "%S --> Transaction-ID: %{DHCP-Transaction-Id} REQUEST: [%{DHCP-Client-Hardware-Address}] via (%{DHCP-Gateway-IP-Address}), hop count = %{DHCP-Hop-Count}, Relay = %{DHCP-Relay-Remote-Id} ..."
    DHCP-Ack = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} ACK: %{reply:DHCP-Your-IP-Address} to [%{DHCP-Client-Hardware-Address}] ..."
    DHCP-NAK = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} NAK: [%{DHCP-Client-Hardware-Address}] for %{request:DHCP-Client-IP-Address}; ..."
    0 = "%S -/- Transaction-ID: %{DHCP-Transaction-Id} %{request:DHCP-Message-Type} DROPPED: ..."
}

Если что, можно создать файл:

touch /var/log/linelog-dhcp.log
chown freerad:freerad /var/log/linelog-dhcp.log

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

sudo /etc/init.d/radiusd restart

На ошибку в логах «No name specified for Post-Auth-Type block» можно не обращать внимания.

Возможно придется дать доступ администратору к модулю Dhcphosts в меню ABillS «Настройка» — «Администраторы».

В «Настройка» — «Сервер доступа» добавим коммутатор для авторизации по порту и коммутатору:

IP: IP адрес коммутатора
Name: Название
Type: dhcp DHCP FreeRadius in DHCP mode
Mac: Мак адресе коммутатора

Смотрите также официальную инструкцию http://abills.net.ua/wiki/doku.php/abills:docs:other:freeradiusdhcp_stepbystep

Решение ошибки Failed binding to authentication address * port 1812: Address already in use freeradius

Запускал однажды FreeRADIUS в режиме отладки командой:

sudo radiusd -X

И заметил следующую ошибку:

Failed binding to authentication address * port 1812: Address already in use freeradius
/usr/local/freeradius/etc/raddb/radiusd.conf[84]: Error binding to port for 0.0.0.0 port 1812

Ошибка сообщает что адрес уже используется, поэтому нужно остановить запущенный процесс FreeRADIUS, поищем его и посмотрим что запущено на портах:

sudo ps ax | grep radius
sudo netstat -tulpn | grep :1812
sudo netstat -tulpn | grep :1813
sudo netstat -tulpn | grep :67

В моем случае уже был запущен /usr/sbin/radiusd, его можно завершить по номеру PID:

sudo kill -9 PID

Либо так:

sudo /etc/init.d/radiusd status
sudo /etc/init.d/radiusd stop
sudo /etc/init.d/freeradius stop

Решение ошибок phpMyAdmin

Заметил однажды при открытии phpMyAdmin в Ubuntu Server следующую ошибку:

addJSON( ‘list’, PMA_RecentFavoriteTable::getInstance(‘recent’)->

Для её решения необходимо установить следующий модуль php:

sudo apt install php libapache2-mod-php

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

Решение проблемы с выпавшими дисками mdadm

Получил сегодня от одного из серверов на Hetzner три email сообщения с информацией о рейдах md0, md1, md2:

DegradedArray event on /dev/md/0:example.com
This is an automatically generated mail message from mdadm
running on example.com
A DegradedArray event had been detected on md device /dev/md/0.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid6] [raid5] [raid4] [raid1]
md2 : active raid6 sdb3[1] sdd3[3]
208218112 blocks super 1.0 level 6, 512k chunk, algorithm 2 [4/2] [_U_U]
md1 : active raid1 sdb2[1] sdd2[3]
524224 blocks super 1.0 [4/2] [_U_U]
md0 : active raid1 sdb1[1] sdd1[3]
12582784 blocks super 1.0 [4/2] [_U_U]
unused devices:

Посмотрел информацию о RAID и дисках:

cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
mdadm --detail /dev/md2
fdisk -l | grep '/dev/sd'
fdisk -l | less

Собрался отправить тикет в техподдержку и запланировать замену выпавших SSD дисков.
Записал SMART информацию о выпавших дисках в файлы, там же был их серийный номер:

smartctl -x /dev/sda > sda.log
smartctl -x /dev/sdc > sdc.log

Удалить диски из рейда если что можно так:

mdadm /dev/md0 -r /dev/sda1
mdadm /dev/md1 -r /dev/sda2
mdadm /dev/md2 -r /dev/sda3

mdadm /dev/md0 -r /dev/sdc1
mdadm /dev/md1 -r /dev/sdc2
mdadm /dev/md2 -r /dev/sdc3

Если какой-то раздел диска отображается как рабочий, а диск нужно извлечь, то сначала помечаем раздел не рабочим и потом удаляем, например если /dev/sda1, /dev/sda2 выпали, а /dev/sda3 работает:

mdadm /dev/md0 -f /dev/sda3
mdadm /dev/md0 -r /dev/sda3

В моем случае, посмотрев информацию о выпавших дисках обнаружил что они целые и рабочие, даже лучше активных.

Посмотрел разделы дисков:

fdisk /dev/sda
p
q
fdisk /dev/sdc
p
q

Они были размечены одинаково как и прежде:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00015e3f
Device Boot Start End Blocks Id System
/dev/sda1 1 1567 12582912+ fd Linux raid autodetect
/dev/sda2 1567 1633 524288+ fd Linux raid autodetect
/dev/sda3 1633 14594 104109528+ fd Linux raid autodetect

Поэтому поочередно дождавшись синхронизации каждого вернул эти диски обратно в рейд:

mdadm /dev/md0 -a /dev/sda1
mdadm /dev/md1 -a /dev/sda2
mdadm /dev/md2 -a /dev/sda3

mdadm /dev/md0 -a /dev/sdc1
mdadm /dev/md1 -a /dev/sdc2
mdadm /dev/md2 -a /dev/sdc3

По окончании команда cat /proc/mdstat уже отображалась с [UUUU].

Если диски заменили новыми, то их нужно разбить аналогично установленным.
Пример разметки диска /dev/sdb аналогично /dev/sda с MBR:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Пример разметки /dev/sdb с GTP и назначения диску случайного UUID:

sgdisk -R /dev/sdb /dev/sda
sgdisk -G /dev/sdb

Также на новоустановленный диск необходимо установить загрузчик:

grub-install /dev/sdb
update-grub

Либо через меню grub:

cat /boot/grub/device.map
grub
device (hd0) /dev/sdb
root (hd0,1)
setup (hd0)
quit

Если установка grub выполняется из загрузочного диска, то нужно посмотреть список разделов и выполнить монтирование, например если RAID не используется:

ls /dev/[hsv]d[a-z]*[0-9]*
mount /dev/sda3 /mnt

Если используется программный RAID:

ls /dev/md*
mount /dev/md2 /mnt

Либо LVM:

ls /dev/mapper/*
mount /dev/mapper/vg0-root /mnt

И выполнить chroot:

chroot-prepare /mnt
chroot /mnt

После монтирования можно восстанавливать GRUB как я писал выше.

Смотрите также другие мои статьи:
mdadm — утилита управления программными RAID массивами
Описание типов RAID
Диагностика HDD используя smartmontools
Восстановление GRUB Linux