Rose debug info
---------------

IT science

AntiZapret на Oracle Cloud и Padavan

Всем привет, вот и дошли наконец руки =) все откладывал, то пользовался telegram ботами, то opera VPN. Но, как то резко везде заблокировали возможности. Ладно, делаем дёшево и функционально. Поехали.

  1. Нам нужно арендовать сервер на Oracle Cloud. На эту тему есть куча статей с инструкциями, нужна только кредитная карта для подтверждения личности и все. В бесплатный минимальный набор входит:
  • выделенный ipv4
  • CPU ядро — 1 шт.
  • Память — 1 Гб
  • Сеть (интернет) — 480 Мбит/с
  • дисковое пространство — 50 Гб

для наших целей «за глаза» хватит
разворачиваем ubuntu server

  1. дальше по инструкции с сайта https://bitbucket.org/anticensority/antizapret-vpn-container/src/master/
sudo su
apt update
apt install lxd
lxc image import https://antizapret.prostovpn.org/container-images/az-vpn --alias antizapret-vpn-img
lxc init antizapret-vpn-img antizapret-vpn
lxc config device add antizapret-vpn proxy_1194 proxy listen=tcp:[::]:1194 connect=tcp:127.0.0.1:1194
lxc config device add antizapret-vpn proxy_1194_udp proxy listen=udp:[::]:1194 connect=udp:127.0.0.1:1194
lxc start antizapret-vpn
lxc file pull antizapret-vpn/root/easy-rsa-ipsec/CLIENT_KEY/antizapret-client-tcp.ovpn antizapret-client-tcp.ovpn

устанавливается все небыстро, но должно получиться

  1. Настраиваем проброс портов к нашей виртуальной машине
    заходим в настройки сети

и добавляем два правила

так же на сервере я установил и настроил ufw (firewall) а в iptables разрешил всё

sudo apt-get install ufw
sudo ufw enable
sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 1194/udp
sudo ufw allow 1194/tcp
sudo ufw status
sudo iptables -L
sudo iptables-save > ~/iptables-rules
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables --flush

зачем я это сделал? у меня почему-то снаружи не был доступен порт 1194, после этих манипуляций все заработало

так же нам потребуется конфиг ovpn с сертификатами, выведите на экран и скопируйте в блокнот, например

cat antizapret-client-tcp.ovpn
  1. Теперь осталось настроить роутер
    заходит в настройки VPN client и делаем все как у меня на скрине

в расширенную конфигурацию прописываем

# Custom user conf file for OpenVPN client
# Please add needed params only!

### If your server certificates with the nsCertType field set to "server"
remote-cert-tls server
setenv FRIENDLY_NAME "AntiZapret VPN TCP"

### Process priority level (0..19)
nice 0

### Syslog verbose level
verb 0
mute 10

resolv-retry infinite
persist-key
persist-tun

auth-nocache

во вкладе сертификаты/ключи вставляем те, которые в ovpn файле, они так и идут подряд

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

PS убедитесь, что ваш DHCP сервер раздает DNS такой же как и ip шлюза, это важно, иначе запросы будут ходить в обход вашей конструкции

подготовка многостраничных TIFF для nalog.ru

когда для налоговой нужно подготовить документы в формате многостраничных монохромных TIFF с разрешением 300х300 dpi приходит в помощь linux

предположим у вас уже есть многостраничный pdf «multipage-input.pdf»

gs -o multipage-tiffg.tif -sDEVICE=tiffgray -r300x300 multipage-input.pdf

создаём многостраничный TIFF «multipage-tiffg.tif» в оттенках серого, разрешением 300dpi

convert multipage-tiffg.tif -monochrome -compress lzw mono.tif

далее преобразуем в монохромный документ «mono.tif»

 Нет комментариев    38   1 мес   convert   gs   ImageMagic   linux

тестируем китайский оптический патчкорд 10Гбит/с

Позарился я на дешевый оптический патчкорд на 10Гбит/с из Китая

2 SFP+ модуля и оптика всего за 1000 руб.

Продавец молодец, сразу спрашивает для какого оборудования нужно, т. к. брендовые производители стараются защитить свою продукцию и не работают с «левыми» SFP.

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

Честно, я переживал, так как у нас свитчи HP и получилось так, что я просто выкинул деньги.

После получения посылки проверить все равно решили, выкладываю результаты небольшого теста
в тесте участвовали две машины с сетевыми картами Asus 10-Gigabit XG-C100C, подключенные медью к свитчам HPE 1950 24G 2SFP+ 2XGT Switch и HPE 1950 48G 2SFP+ 2XGT Switch.

Первый iperf замер был произведен при соединении свитчей медью

результат со стороны клиента
результат со стороны сервера

Второй iperf замер был произведен при соединении свитчей оптикой

результат со стороны клиента
результат со стороны сервера

Вывод: такие патчкорды — работают, хоть и дешево, но заявленные показатели мы увидели.

PS проверили соединение с еще одним свитчом D-Link DGS-1510-52X, уже без тестов скорости, по индикации свитчей поднялся линк 10Гбит/с.

создание пакетов synology (1 часть, подготовка рабочего пространства)

Сейчас я вам расскажу простым и доступным языком как создавать пакеты Synology. За основу возьму официальную статью с сайта https://help.synology.com/developer-guide/create_package/build_and_create_package.html

туториал будет состоять из нескольких частей, чтобы не делать огромную простыню

Для начала нам понадобится linux сервер, например Ubuntu

раскатываем малявку mini http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

я делал виртуальный...

после установки работаем из под sudo (обязательно)

sudo su

устанавливаем python, git, gpg

apt install python git gpg

создаем папку toolkit в корне системы (для этого и нужны root права)

mkdir -p /toolkit
cd /toolkit

скачиваем toolkit

git clone https://github.com/SynologyOpenSource/pkgscripts-ng pkgscripts
cd /toolkit/pkgscripts/

готовим среду для сборки, например для DSM 6.x и архитектуры x64

./EnvDeploy -v 6.0 -p x64

посмотреть список доступных платформ можно так:

./EnvDeploy -v 6.0 --list

создаем GPG ключ

gpg --gen-key

в процессе генерации нам надо будет указать свое имя и свой e-mail, а так же придумать фразу-пароль... но, на самом деле это просто пароль, т. к. не сработало с кириллицей, с латиницей с пробелами, получилось только указать длинный пароль из латинских символов заглавных строчных и цифр.

все что мы сгенерировали попадает в папку /root/.gnupg/, которую надо скопировать сюда /toolkit/build_env/ds.x64-6.0/root/

теперь проверяем что у нас получилось

cd /toolkit/build_env/ds.x64-6.0/
chroot .
gpg -K

в результате видим примерно следующее:

/root/.gnupg/pubring.kbx
------------------------
sec   rsa3072/6BFF2816 2021-05-07 [expires: 2023-05-07]
uid       [ultimate] Aleksey Voronin <mail@domain.ru>
ssb   rsa3072/15BC6096 2021-05-07 [expires: 2023-05-07]

все получилось, выходим из chroot

exit

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

отслеживаем подключения по vpn на pfsense

Пандемия 2020 дала свои плоды: удаленная работа, массовое использование VPN. Конечно, любое руководство захочет контролировать удаленное подключение/отключение сотрудников. У себя в компании мы интегрировали VPN в пропускную систему создав виртуальный контроллер. Теперь отдел кадров видит кто посещал рабочее место зайдя в офис или подключался удаленно. Полностью расписывать весь механизм я не стану, лишь опубликую как можно организовать получение событий со шлюза на pfsense.

Для начала создаём сервер на ubuntu, например, виртуальный. Требования минимальны: 1 CPU, 256Мб памяти, 10Гб диск. Я щедро выделил 1Гб памяти и 100 Гб диска, вот что реально потребляет система:

Качаем минимальный дистрибутив в 74Мб http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

устанавливаем syslog-ng

sudo apt update
sudo apt install syslog-ng

создаем конфиг /etc/syslog-ng/conf.d/external_log.conf

source s_udp {
    udp(port(514));
};
destination d_PFSENSE_VPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_VPN {
    host("192.168.#.#");
    match(",l2tp," value ("MESSAGE"));
};
log {
    source(s_udp);
    filter(f_PFSENSE_VPN);
    destination(d_PFSENSE_VPN);
};
destination d_PFSENSE_OPENVPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_OPENVPN {
    host("192.168.#.#");
    program("openvpn");
};
log {
    source(s_udp);
    filter(f_PFSENSE_OPENVPN);
    destination(d_PFSENSE_OPENVPN);
};

где 192.168.#.# — ip-адрес pfsense

перенаправим логи с pfsense на наш маленький сервер, здесь мы их будем парсить и обрабатывать как нам нужно

в моём примере, мы создаем два фильтра f_PFSENSE_VPN и f_PFSENSE_OPENVPN для того чтобы скриптом обрабатывать только события связанные с подключением и отключением по протоколам l2tp и OpenVPN (актуально для формата логов pfsense версии 2.5.1

есть два destination, но по сути они ссылаются на один и тот же скрипт d_PFSENSE_VPN и d_PFSENSE_OPENVPN

со стороны pfsense настраиваем пересылку логов на наш сервер

Status -> System Logs -> Settings

указываем ip-адрес и порт нашего сервера и ставим галочку «VPN Events (IPsec, OpenVPN, L2TP, PPPoE Server)», т. к. нам нужны только события удаленных подключений

с парсером, я думаю, вы справитесь, приведу пример логов для OpenVPN:
подключение

Jun 25 18:29:57 192.168.#.# openvpn: user ’user_name’ authenticated

отключение

Jun 25 18:57:34 192.168.#.# openvpn[16766]: user_name/132.252.198.166:6182 Connection reset, restarting [-1]

С l2tp еще проще:
подключение

Jun 25 18:29:57 192.168.#.# root: login,l2tp,192.168.111.#,user_name

отключение

Jun 25 18:57:34 192.168.#.# root: logout,l2tp,192.168.111.#,user_name

Ранее Ctrl + ↓