• Записи 1545
  • Теги 109
  • Комментарии 3323

Лог жизни

Настройка нового VDS, день первый

Вчера после долгих колебаний всё же решился взять второй VDS, о чём впервые задумывался ещё с февраля. Арендовал его на VDSCOM, так как это один из немногих хостеров, где есть дешёвые серверы с безлимитным каналом в 1 Гбит/с. На сервер я планировал перенести своих Telegram-ботов, поднять VPN, а также узлы i2p и yggdrasil. Собственно, такая высокая скорость канала мне ради SiteKnockerBot и требовалась.
И вот наконец-то сервер готов! Зашёл, осмотрелся, и обнаружил, что нет адресов IPv6, хотя я специально подключал IPv6-сеть как дополнительную опцию. И, главное, в панели управления про них тоже ни слова! Пришлось писать в техподдержку. Там сообщили мне эти адреса и дали ссылку, как прописать их в настройках. А потом решили прописать сами и перезагрузили сервер. Я очень удивлялся, когда он внезапно исчез со связи! А ещё у них бардак творится с размером подсети, которую мне дали: на сайте написано, что дают всего /125, в ответе техподдержки было написано /80, а в настройках прописали стандартные /64.
Дальше настроил VPN. Взять и воспользоваться готовым скриптом — это не есть путь Настоящего Компьютерщика, поэтому нашёл инструкцию и стал делать по ней вручную. Но просто взять и настроить — неинтересно, поэтому без приключений не обошлось. Сначала я хотел повесить VPN на tcp-порт 443, чтобы подключение на первый взгляд выглядело как обычный https-запрос. Поставил, протестировал. Вроде заработало, но тут обнаружилось, что хотя адреса IPv6 дали, но обратиться куда-либо вовне не получается: шлюз возвращает «no route to host». Видимо, админы хостинга забыли прописать разрешающее правило на самом шлюзе. Написал в техподдержку ещё раз, но, судя по всему, она отвечает только в рабочее время. (Хе-хе, это у меня вечер и ночь пятницы — пик активности). Так что решение вопроса с IPv6 отложилось до понедельника.
Решил поэкспериментировать, насколько различается VPN с TCP и UDP. Как выяснилось, разница очень существенная, почти в два раза. Решил, что пока всё-таки перейду на UDP. Но держать сервер на UDP-порту 443 как-то глупо, поэтому решил выбрать другой порт. Поменял порт, а также заодно ещё несколько настроек: жёстко задать алгоритмы шифрования и аутентификации, чтобы всё быстрее согласовывашлось на этапе подключения, и уменьшить размер MTU до 1400, чтобы не было фрагментации пакетов при подключении через мобильные сети. И вдруг подключение перестало работать! Стал поштучно отменять каждую из настроек, кроме порта (так как думал, что уж тут-то накосячить негде), но без толку. И только потом вспомнил, что на сервере включён ufw, и нужно прописать правило для подключения к новому порту!
Затем решил перенести ботов. Поскольку прежде делал это уже два раза, опыт был, и перенос удалось выполнить совершенно без проблем и с минимальным простоем: меньше 15 минут. Точнее, эти 15 минут исчезли из логов, но на старом сервере ещё работала мониторинговая часть, которая отправила бы уведомления, если бы возникла такая необходимость. Потом отключил в Яндекс.Облаке виртуальный сервер, где боты были раньше и подумал «ну всё, теперь можно удалить, наверное». Но не стал этого делать. Как оказалось, правильно! Буквально через 10 минут вспомнил, что забыл забрать один файл — настройки sysctl для SiteKnockerBot. Пришлось включать обратно… Причём в облаке при включении/выключении виртуальной машины IP-адрес меняется, но я этого не учёл, и долго пытался сконнектиться на старый по сохранившимся настройкам. И только скопировав тот файл, смог сказать «Прощай, Яндекс.Облако!» Кстати, впечатления от Яндекс.Облака остались противоречивые: с одной стороны, просто отличная скорость каналов (даже на новом VDS чуть ли не на порядок меньше), с другой — отсутствие внешних IPv6-адресов и совершенно грабительские цены — в месяц получалjсь около 800 рублей за сервер с 20% ядра, медленным HDD и 1 Гб оперативки, причём часть из них — за «белый IP» и совершенно ненужную мне услугу «Cloud DNS».
Разобравшись с этим, я решил было попробовать подключиться с Android. Залез в настройки, там множество опций, и совершенно непонятно, что выставлять для подключения именно к OpenVPN. После недолгого поиска выяснилось, что готовой поддержки для OpenVPN в Android нет, и всё-таки придётся ставить приложение. И тут я подумал, что раз приложение придётся ставить по-любому, то почему бы не попробовать WireGuard. (Изначально я от него отказался именно из-за необходимости ставить стороннее приложение.) Сказано — сделано. Но пришлось разбираться ещё и с его настройкой. И тут ждала первая неприятность. Под Linux он попытался собрать модуль ядра, но не смог — не хватило каких-то symbols. Ядро у меня старое и самосборное. Искать, что там нужно включить обратно, и пересобирать ядро не хотелось от слова совсем, ставить второе из дистрибутива и перезагружаться — тем более. Поэтому решил ограничиться тестом на Android. Поставил для него клиентское приложение, далеко не сразу разобрался с настройками, но в итоге запустил. Потестировав, выяснил, что WireGuard реально даёт неплохой выигрыш на WiFi. Скорость загрузки была порядка 50 Мбит/с против 35—40 у OpenVPN. Но когда переключился на 4G-соединение, результат был обратный — OpenVPN стал уверенно выигрывать. В итоге окончательно решил остаться на нём.
Остаток ночи провёл, экспериментируя с различными размерами MTU в попытках выжать из VPN больше скорости. Но особой разницы увидеть не удалось. Ещё попытался было включить TLS-аутентификацию, но безрезультатно. Уж не знаю, что делал не так, но она так и не заработала. Зато поставил yggdrasil. Вот он завёлся сразу! Правда, потратил кучу времени на то, чтобы собрать список хостов и привести к нужному формату. Почему никто не сообразил выложить их в таком виде, чтобы можно было бы просто скопировать в файл настроек?

3 комментария:

Некоторые сообщения перенесены в тему «Homehosting: плюсы и минусы»

4X_Pro
0

Самый шумный вентилятор — не на процессоре, а в блоке питания. (По крайней мере, у меня всегда так было.)
Кстати, как у тебя получается такой холодный процессор? У меня на ноутбуке даже в простое около 60 °C почти всегда, если броузер запущен. На старом стационарном компе — где-то порядка 57 °C.

Это практически как дистрибутив, но только без создания очередного бессмысленного узконаправленного дистрибутива (коих наплодили уже под 300 и в каждом из них одно вылечено, другое покалечено), в котором по большому счёту только изменены настройки софта по умолчанию, без принуждения людей отказываться от привычного дистрибутива,

Вот на мой взгляд, нужно было идти чуть другим путём: делать не надстройку для дистрибутива в целом, которую нужно в виде ISO качать, а обычный пакет, который можно установить из PPA и который работает как аналог update-утилит из того же Debian. То есть показывает текстовый интерфейс с набором опций, задаёт необходимые вопросы, а потом с учётом сделанного выбора ставит нужные пакеты и генерирует конфиг(и) по шаблонам из твоего репозитория.
То есть пишешь, например, debcomp http, он тебе предлагает сначала выбрать Web-сервер: поставить nginx, Apache и т.п., спрашивает, на какой сетевой интерфейс повесить, генерирует нужное правило для firewall. Второй шаг, например, debcomp apache — предложит набор конфигураций для Apache, например, установка mod_php, связки с php-fpm, mod_ruby, генерации конфигов для набора доменов или поддоменов из определённого каталога, распихивание сайтов по lxc-контейнерам и т.п. Только тут нужно иерархию задач/конфигов хорошо продумать…
Ещё хорошие примеры для вдохновения — это make config для портов в FreeBSD или тот же certbot от Let's Encrypt как пример решения одной конкретной конфигурационной задачи.
MadTechGuy
0

4X_Pro написал(а):
Кстати, как у тебя получается такой холодный процессор?

Pentium G4600. Он сам по себе холодный, его температура в среднем около 40°C. До 50 доходит обычно только при полной загрузке.
4X_Pro написал(а):
Вот на мой взгляд, нужно было идти чуть другим путём: делать не надстройку для дистрибутива в целом, которую нужно в виде ISO качать, а обычный пакет, который можно установить из PPA и который работает как аналог update-утилит из того же Debian.

ISO там вовсе не обязателен. Его я сделал в качестве дополнения: я просто взял установщик Debian (Simple-CDD) и интегрировал в него конфигуратор, так, чтобы он запускался на завершающем этапе установки на отдельном TTY. А точнее, написал скрипт, который собирает ISO-образ с использованием Simple-CDD. А вообще всё задумано так: на систему Debian (не обязательно чистую, но желательно) загружается архив проекта, распаковывается. Запускается debcomp, появляется текстовый интерфейс, в нём выбираешь нужные компоненты и изменяешь их настройки по необходимости. Дальше выбираешь «Установить конфигурацию» (либо выполняешь ./debcomp install) и debcomp начинает работать очень похожим на пакетные менеджеры образом: устанавливает пакеты, от которых зависят выбранные компоненты и удаляет ненужные, если не отмечена галочка «Не удалять уже установленные пакеты» (при первой установке она не отмечена), копируются файлы в систему, вся информация о них (в т. ч. md5-суммы) сохраняется в /var/local/lib/debcomp/rollback для возможности отката, выполняются скрипты preinst и postinst — всё это очень похоже на работу dpkg. Использовать для этой задачи deb-пакеты не получится по многим причинам, как раз потому, что это уже следующий уровень абстракции, стоящий над пакетным менеджером. Вот я как раз и хотел в прошлый раз, чтобы ты посмотрел, как мой конфигуратор устроен изнутри — у тебя бы сразу все вопросы отпали. Минус только один: всё это заточено именно под связку dpkg+apt, и если понадобится адаптировать конфигуратор под другой пакетный менеджер, то это будет очень тяжело. А что касается Arch Linux, то на него перенести вообще вряд ли реально из-за того, что у него rolling release, и непонятно, как обеспечить предсказуемую совместимость конфигурации (а компоненты в ней — это практически пакеты) с дистрибутивом.

А так всё устроено примерно так, как ты описываешь. И на создание TUI меня вдохновил make nconfig, который запускает TUI для конфигурации сборки ядра Linux.
Написать комментарий
Прикрепить файлы: (не более 4 файлов, не более 102400 Кб каждый, 102400 Кб всего)


Задать вопрос