Tags: centos

"Ненависти firewalld псто"

Поступила задача: раздеплоить мелкое веб-приложение на CentOS.

Ради Бога:
git pull
Правка YAML-я (кстати, пусть тот, кто придумал этот формат - медленно сгорит в аду)
docker-compose build
docker-compose up -d

Всё ок, вольюмы, ага, старт, хелсчеки, всё по фен-шую.

Публикую совершенно стандартно через nginx.
Эээть!
... и нифига. Доступа нет.

Окей, проверка правил firewalld. Всё, конечно же, по фен-шую.
Но не работает.
Окей, танцы с бубном и шаманство с iptables.
Не работает!
Принос унитаза.
Показ жопы.
И всё равно не работает!111 ЪУЪ СЪУКА

Ок. Перерыв. Чашка мятного чая с имбирным печеньем.

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

Пыщь. Работает!

Комбинировать docker с firewalld - хреново. По возможности, старайтесь избегать этого.

__

"Трансплантация пингвинов"

Коллеги, у меня возник любопытный вопрос.

При моей нелюбви к "форточкам", у них есть шикарная встроенная тулза под названием "windows server backup", которая позволяет в три клика сделать копию системы и далее, также в три клика, эту копию развернуть.

Копия, что особо приятно, делается ИЗНУТРИ системы по технологии Shadow Copy. Т.е. не нужно останавливать систему, грузится с флешки/CD, а можно прям "на лету" создать бэкап.

Причем копию уровня "bare metal recovery", т.е. грузимся с установочного диска, подтягиваем файл резервной копии, ждём N минут, перезагружаемся - и вуаля, у нас - готовая к работе система.

Так вот.
А есть ли подобная программа для linux?

Почему интересуюсь?
Мне вчера поставили эту задачу (скопировать один сервер под управлением debian на другой), я решил её, но максимально топорно: стопнул все сервисы на "доноре", потом тупо TAR-нул "/", скопировал архив, на целевой системе этот архив развернул, после чего скопировал файлы и папки.
Однако, в процессе от души походил по граблям и постоянно задавал себе вопрос "а не делаю ли я херню?".

Уверен, что эта задача - нифига не новшество и проверенные рабочие способы уже давно существуют.

За помощь и консультации - огромнейшее спасибо и уважаемому klink0v.

__

"Неспешный Git"

Проблема:
При работа с git-ом через медленный канал связи и/или VPN, при попытке выполнить git clone особо жирной репы, получаем 1-2 минутную "тупню", потом следующий отлуп:
Den@host:/bin# git clone --recursive https://hvostat.cat/git/fatcat.git
Cloning into 'fatcat'...
error: RPC failed; curl 52 Empty reply from server
fatal: the remote end hung up unexpectedly

Решение
git clone http://hvostat.cat/git/fatcat.git --depth 1
$ cd fatcat
$ git fetch --unshallow

__

"Nginx: аутентификация клиентов с помощью SSL-сертифиткатов"

Задача:
Пропускать только тех клиентов на веб-сервер/сервис, которые обладают соответствующими сертификатами.

Решение:
0) Генерируем клиентский сертификат на нашем СА и выдаём, например hvostat_client.pfx клиенту.
1) Записываем наш CA-сертификат на веб-сервер, например в /etc/pki/hvostat_ca.crt
2) В конфиге nginx, среди прочего добавляем примерно следующее:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/pki/example.com.crt;
ssl_certificate_key /etc/pki/example.com.key;
ssl_client_certificate /etc/pki/hvostat_ca.crt;
ssl_verify_client on;
}

__

"Красим вывод"

Задача: для большей наглядности либо для удовлетворения собственных эстетических чувств раскрасить вывод консоли в Centos.

Решение: использовать управляющие последовательности.

Последовательность имеет вид:
\e[NNm
где NN - код цвета.


Коды:
39 Цвет по-умолчанию
30 Черный
31 Красный
32 Зеленый
33 Желтый
34 Синий
35 Малиновый
36 Голубой
37 Светло-серый
90 Темно-серый
91 Светло-красный
92 Светло-зеленый
93 Светло-желтый
94 Светло-синий
95 Светло-малиновый
96 Светло-голубой
97 Белый

Практическое применение:
Пишем скрипт с примерно следующим содержимым:

#!/bin/bash

Задаём значение цветов в виде переменных.
RED='\e[91m'
GREEN='\e[92m'
NC='\e[39m'

Задаём условие теста и отправляем вывод в дев/нулл, чтобы не засорял экран.
if ping 192.168.0.1 -c 2 >>/dev/null
then
Не забываем после покраски строки вернуть дефолтный цвет.
echo -e $GREEN"Router online! $NC "
else
echo -e $RED"ROUTER NOT RESPONDING!!! $NC"
fi

__

"StrongSwan: несколько подсетей через один IPsec-тоннель"

Задача:
Есть несколько "вражеских" подсетей, которые надо общать с "нашей" подсетью через один IPsec-тоннель.

Нюансы:
- подсети не пересекаются.
- суммаризировать нельзя.
- разрешен только IKEv1
- системный инженер на "противоположном конце" - упырь.

Решение:
1) Устанавливаем StrongSwan.
2) Настраиваем его по мануалу (А также iptables и прочие firewalld).
3) В ipsec.conf прописываем примерно следующее:


4) Запускаем:
strongswan start

5) Проверяем. Вводим:
strongswan statusall

Вывод должен быть похож на нижеследующее:


6) ???
7) PROFIT!!!

__