Увеличение размера раздела виртуалки Ubuntu/Debian

Ситуация: нужно увеличить размер диска на виртуалке.

Решение: увеличиваем на гипервизоре размер. Для того чтобы увеличить объем внутри самой виртуалки можно выполнить всего четыре команды без перезагрузки:

echo 1 > /sys/class/block/sda/device/rescan
apt update && apt install -y cloud-guest-utils
growpart /dev/sda 1
resize2fs /dev/sda1

Вместо sda1 подставьте свой раздел.

Первую команду можно не выполнять если перезагрузить виртуалку после увеличения раздела в гипервизоре.

Данное решение подходит если не используется lvm, zfs, mdadm и другие программные рейды.

Рубрика: Debian, Ubuntu, virtualization | Оставить комментарий

Установка kubernetes с нуля на debian 11

Статья опирается на официальную документации, ссылка —  https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/

Но чтобы упростить установку собрал команды и оформил из них скрипт, который нужно запустить на всех нодах кластера:

#!/bin/bash
apt update
apt install -y apt-transport-https ca-certificates curl gnupg2
mkdir /etc/apt/keyrings/
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
wget https://github.com/containerd/containerd/releases/download/v1.7.0/containerd-1.7.0-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.7.0-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
mkdir /usr/local/lib/systemd
mkdir /usr/local/lib/systemd/system
mv containerd.service /usr/local/lib/systemd/system/
rm containerd-1.7.0-linux-amd64.tar.gz
systemctl daemon-reload
systemctl enable --now containerd
wget https://github.com/opencontainers/runc/releases/download/v1.1.7/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc
rm runc.amd64
wget https://github.com/containernetworking/plugins/releases/download/v1.2.0/cni-plugins-linux-amd64-v1.2.0.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.2.0.tgz
rm cni-plugins-linux-amd64-v1.2.0.tgz
echo br_netfilter > /etc/modules-load.d/br_netfilter.conf
systemctl restart systemd-modules-load.service
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
sed -i '/net.ipv4.ip_forward=1/s/^#//g' /etc/sysctl.conf
sysctl -p
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i -r "s/SystemdCgroup.+$/SystemdCgroup = true/g" /etc/containerd/config.toml
systemctl restart containerd

После запуска скрипта на первой мастер ноде (control-plane) запускаем инициализацию кубера:

kubeadm init --control-plane-endpoint "сервер:порт" --upload-certs

Тут стоит уточнить по адресу сервера в строке выше. Лучше заранее настроить haproxy+keepalived на мастер ноды и при инициализации указывать адрес сервера haproxy.

В выводе копируем команды для добавления мастер нод (control-plan) и воркер нод.

Настраиваем управление кластером через kubectl. Для этого копируем данные для входя из файла /etc/kubernetes/admin.conf себе на компьютер в файл .kube/config

Далее устанавливаем calico.

curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml -O
kubectl apply -f calico.yaml

Далее разворачиваем остальные ноды.

Также стоит учитывать, что сертификаты для добавления мастер нод протухают через 2 часа. Если нужно добавить мастер ноду после истечения 2 часов нужно запустить команду kubeadm init phase upload-certs —upload-certs на любой из уже настроенных мастер нод.

Рубрика: DevOps | Оставить комментарий

Блокировка стран через ipset

Иногда есть необходимость доступа на корпоративный сервер по внешнему IP с домашних компьютеров, ноутбуков, планшетов и т.д. В этом случае чтобы обеспечить безопасность было бы правильно настроить везде VPN-туннели. Но это бывает очень проблематично. В этом случае можно пойти другим путем. Можно защитить сервер с помощью fail2ban и блокировкой по IP стран. Про настройку fail2ban есть куча статей в интернета, а про блокировку по странам не так уж много. В данной статье будет описано как заблокировать вход со всех стран, кроме России.

1) Для начала установим ipset
yum install ipset kmod-ipset

2) Ищем списки сетей в Google фразой cidr country list. На момент написания статьи рабочая ссылка тут http://www.ipdeny.com/ipblocks/
Для России нужно выбрать соответственно Russian Federation, далее нажимает download zone file, содержимое страницы нужно скопировать и вставить в файлик например Russia.

3) Создаем скрипт для импорта IP-адресов в ipset:

#!/bin/bash
ipset create Russia nethash
while read IP; do
ipset add Russia $IP
done < Russia

Кладем скрипт в одну папку с файлом Russia и запускаем.

4) Добавляем в iptables правило, которое будет блокировать все страны кроме России:
iptables -A INPUT -m set ! --match-set Russia src -j DROP

Рубрика: Без рубрики | 6 комментариев

FreePBX transfer digit timeout

Стандартная ситуация, если у вас в офисе в качестве АТС используется FreePBX:
Входящий звонок пришел на секретаря.
Секретарь поднял трубку, и ему звонящий просит соединить его с неким сотрудником.
Секретарь, как его учили набирает *2 для перевода с уведомление и ищет у себя на бумажке или где-то ещё внутренний номер сотрудника, а в это время FreePBX отсчитывает около 3-х секунд и сообщает «Извините, данный номер не существует, пожалуйста, попробуйте ещё раз» и соединяет секретаря обратно со звонящим.
Чтобы увеличить данный таймаут нужно добавить строчку в файле /etc/asterisk/features_general_custom.conf:
transferdigittimeout=10
Для того, чтобы это изменение вступило в силу достаточно зайти в настройку чего либо в FreePBX и нажать кнопку применить.
Данный таймаут как видно из его названия влияет не только на перевод с уведомлением (Attended Transfer) но и на перевод без уведомления (Blind Transfer).

Рубрика: FreePBX, VOIP | 1 комментарий

Addpac свежие прошивки

Addpac AP100
AP100 8.41.085
AP100 8.41.088
Addpac AP100B
AP100B 8.41.086
AP100B 8.41.089
Addpac AP200B
AP200B 8.30W
Addpac AP700P
AP700P 8.41.089
AP700P 8.41.091
Addpac AP1100F
AP1100F 8.30W
AP1100F 8.41.092
Addpac AP2330
AP2330 8.41.088
AP2330 8.41.093

Рубрика: VOIP | Метки: , , , , | Оставить комментарий

Кэширующий DNS сервер на Centos 6.3

1. Устанавливаем днс сервер из репозиториев:
yum install caching-nameserver
2. Генерируем файл /etc/rndc.key:
rndc-confgen -a -r /dev/urandom
Если всё хорошо, результатом выполнения будет:
wrote key file "/etc/rndc.key"
3. Правим файл конфигурации /etc/named.conf:
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 127.0.0.1; 192.168.1.254;}; // Здесь указываем IP адрес сервера, смотрящий в локальную сеть
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24;}; // Здесь указываем адрес подсети, для которой разрешено делать запросы на днс-сервер
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

4. Запускаем службу:
service named start
5. Ставим в автозагрузку:
chkconfig --level 345 named on

Рубрика: Centos | Метки: , , | Оставить комментарий

Centos WIFI Broadcom BCM4312

Установил тут на днях Centos 6.3 на нетбук Lenovo S10-2 и с удивлением обнаружил, что WIFI из коробки не заработал.
Погуглив я понял, что это очень распространенная проблема разных дистрибутивов.
Перепробовав несколько вариантов решения, найденные в интернете, заработало только одно — установка проприоритарной прошивки.
Итак, убедимся, что у нас именно такая версия WIFI адаптера:
/sbin/lspci | grep Broadcom
02:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

Проверяем наличие пакета в системе:
yum list installed b43-fwcutter
Данный пакет предоставляет нам утилиту, способную «изъять» прошивку из драйвера для другой, менее популярной ОС. Если пакета нет, устанавливаем:
yum install b43-fwcutter
Далее немного сложнее, нам надо скачать рекомендуемый архив и изъять из него прошивки, все это требуется сделать с правами root.
Получаем требуемые права (команда попросит ввода пароля на пользователя root) и скачиваем архив с драйвером:
su -
wget http://downloads.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2

Не меняя каталога, и не выходя из терминала выполняем (нижеследующими командами мы распаковываем полученный архив и входим в один из его каталогов):
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver

Ну и наконец-то, кульминация, мы изымаем и устанавливаем прошивки в дерево ядра:
b43-fwcutter -w /lib/firmware/ wl_apsta_mimo.o
Напоследок перегружаем модуль ядра:
modprobe -r b43; modprobe b43

Рубрика: Centos | Метки: , , , | 3 комментария

Addpac не отбиваются линии

Данная статья будет полезна тем, кто подключает addpac с fxo портами к ТФОП/мини-АТС.
Довольно распространенная проблема — АТС генерирует короткие гудки, дабы человек понял, что разговор окончен, но voip-шлюз это не воспринимает. У шлюзов addpac есть специальная настройка для детекции сигнала отбоя — Clear-down-tone cadence.
Итак, заходим на шлюз:

AP1005# conf
Enter configuration commands, one per line. End with CNTL/Z
AP1005(config)# deb
AP1005(config)# end
AP1005# debug rta voice
Далее звоним через шлюз и кладем трубку со стороны АТС. В момент коротких гудков снимаем нечто вроде:

AP1005# 60 60 60 60 60 60 60 60 60 60 60 60 60 23 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 50 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 22 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 50 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 22 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 1616 16 16 16 17 50 60 60 60 60 60 60 60 60 60 60 60 60

Считаем:
сигналов ~=-16 * 35. Умножаем на 35, если кодек g711 или g729 — на 10. У меня последний вариант, так что получаем 350. Это у нас active power, а число зовется Active Time Duration.
сигналов ~=-60 * 34. Здесь тоже самое — получаем 340. Это idle power, число — Idle Time Duration.
Получаем:

voice class clear-down-cadence 1 -16 350 340 3 11

Здесь
1 — число необходимого повторения данной последовательности, у меня (1);
2 — уровень тона, т.е. active power (-16);
3 — ActiveTimeDuration (350) — время тонового сигнала в мсек;
4 — Idle Time Duration (340) — время паузы в мсек;
5 — Active Power Variance — отклонения уровня, у нас не отклоняется, но все равно ставим 3 — на всякий;
6 — Idle Power Variance — отклонения уровня паузы, ставим 11.
Применяем:

AP1005# conf
Enter configuration commands, one per line. End with CNTL/Z
AP1005(config)# voice class clear-down-cadence 1 -16 350 340 3 11

____________________________________________________________________
При написании данной статьи использовался материал http://www.xdsl.ru/svpro/viewtopic.php?t=289

Рубрика: VOIP | Метки: , , , , , | Оставить комментарий

Туннель IPIP между двумя Linux

Пожалуй один из самых простых в настройке туннелей, который я знаю. Удобство ещё и в том, что его можно настроить как на unix-системе, так и на различных маршрутизаторах, в том числе Cisco, а также на Windows, последнее не проверял.
А самое приятное, что в любом Linux-дистрибутиве уже есть всё необходимое для создания ipip-туннеля.

Стоить отметить, что этот тип туннелей имеет тип точка-точка.
Есть и один недостаток этого вида туннеля в отличие от таких туннелей, как pptp, l2tp, openvpn, для ipip-туннеля необходимо условие: оба участника должны иметь внешние IP-адреса, или должны быть в одной сети, если быть точнее, между ними не должно быть никаких Nat’ов.

Чтобы проще понять алгоритм настройки обозначим исходные данные:
Сервер 1: IP-100.100.100.100
Сервер 2: IP-200.200.200.200
Нам нужно их объединить в одну сеть посредством vpn-туннеля со следующими данными:
Сервер 1: 10.0.0.1/255.255.255.252
Сервер 2: 10.0.0.2/255.255.255.252
Вся настройка состоит из трех команд на каждом из серверов:
Сервер 1:
1. Создадим ipip-туннельный интерфейс:
ip tunnel add tun0 mode ipip remote 200.200.200.200 local 100.100.100.100 dev eth0
2. Установим IP-адреса:
ifconfig tun0 10.0.0.1 netmask 255.255.255.252 pointopoint 10.0.0.2
3. Установим MTU и поднимем интерфейс:
ifconfig tun0 mtu 1492 up
Сервер 2:
1. Создадим ipip-туннельный интерфейс:
ip tunnel add tun0 mode ipip remote 100.100.100.100 local 200.200.200.200 dev eth0
2. Установим IP-адреса:
ifconfig tun0 10.0.0.2 netmask 255.255.255.252 pointopoint 10.0.0.1
3. Установим MTU и поднимем интерфейс:
ifconfig tun0 mtu 1492 up

Вот и всё!
Но для того, чтобы туннели восстанавливались после перезагрузки нужно написать скрипты с этими командами и добавить их например в /etc/rc.local

Рубрика: VPN | Метки: , , , , | 7 комментариев

Туннель точка-точка на основе Openvpn

1.Устанавливать удобнее всего из репозиториев:

для Debian/Ubuntu:
apt-get install openvpn
для Centos/RedHat:
yum install openvpn

2. При построении туннеля воспользуемся самым простым способом аутентификации — методом статического ключа.

Генерация ключа:
openvpn --genkey --cipher AES-256-CBC --secret /etc/openvpn/ksi_key
Ключ записывается в файл ksi_key
Для установления туннеля необходимо файл с секретным ключом перенести на второй сервер (любым способом, можно просто открыть его любым редактором и скопировать его содержимое, либо по перенести по протоколу scp).

3. Конфигурация первого сервера:

# cat client.conf
remote 192.168.75.3
dev tun
ifconfig 192.168.8.2 192.168.8.1
cipher AES-256-CBC
secret /etc/openvpn/ksi_key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemon

4. Конфигурация второго сервера:

# cat server.conf
remote 192.168.25.70
dev tun
ifconfig 192.168.8.1 192.168.8.2
cipher AES-256-CBC
secret /etc/openvpn/ksi_key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemon

remote — IP — адрес хоста, представляющего из себя дальнюю сторону туннеля. Если его не указать, то openvnp будет пассивно принимать все входящие соединения, не пытаясь самостоятельно соединяться с удаленной машиной
dev — тип виртуального устройства туннеля. Может принимать значение tun или tap. Тun позволяет создавать только соединения типа точка-точка, tap виртуальные сегменты Ethernet.
ifconfig — назначает виртуальному tun/tap интерфейсу IP — адрес. Указывает адрес удаленного интерфейса. Это необходимо, потому что туннель работает как стандартное соединение «точка — точка».
cipher — алгоритм, используемый для шифрования пакетов
secret — указывает имя файла, в котором хранится статический ключ, используемый для шифрования потока
keepalive — контроль за состоянием соединений. В случае если по туннелю не передаются данные, через некоторое время посылается ping, для того чтобы соединение не разрывалось.
ping-timer-rem — позволяет обрабатывать директиву keepalive только в случае, если имеется параметр remote. (если remote не указывать, сервер будет принимать пакеты от любых ip адресов, но не будет реагировать на пакеты, до тех пор, пока они не пройдут все аутентификационные тесты)
persist-tun — не позволяет закрывать/открывать tun/tap интерфейс при рестарте соединения (keepalive)
persist-key — не дает перечитывать ключ с файловой системы при рестарте соединения (keepalive)
daemon — работа в режиме сервиса (демона)

5. Стартуем демоны:

Для Debian/Ubuntu:
/etc/init.d/openvpn start
Для Centos/RedHat:
service openvpn start

PS:
Если создать два и более файлов с расширением .conf в папке /etc/openvpn/ то при запуске службы будет запускаться отдельный сервер для каждого файла, тем самым можно иметь соединений точка-точка сколько угодно на одной машине. Только при этом нужно в каждом конфиге указывать уникальный порт (параметр port), если порт не указывается, то используется порт по умолчанию — 1701.

Рубрика: VPN | Оставить комментарий