Неофициальный docker-контейнер АнтиЗапрета

Привет. за докер спасибо отдельное, lxc крут, но не всегда подходит для конкретного окружения \ сервера.
Есть ньюанс - как можно добавить в впн весь траф?
на оригинале антизапрета пришлось подправить knot чтоб разрешить доступ к днс для всего трафика
ну и на клиенте redirect-gateway def1 bypass-dhcp

тут наверно не сохранятся же изменения в контейнере?

Да, с новой сборкой офигенно полетело всё.
2 вопроса, которые меня мучают - чем чреват запуск doall.sh скажем раз в сутки? А то он каждые 6 часов запускается и могут быть фризы.
А второй вопрос - где посмотреть список всех клиентов, которые к контейнеру подключены?

Добавил --verb 3 в аргументы запуска openvpn и при старте появилось

Aug 09 12:18:26 22d5d25249d2 openvpn[1084]: Note: Kernel support for ovpn-dco missing, disabling data channel offload.

При том что я устанавливаю openvpn-dco-dkms! Буду разбираться. Но наконец то ясность появилась!

У меня стоит 12 часов и проблем не испытывал. Разве что может быть если условный example.com появится в https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv то ты его в худшем случае получишь через 18 часов. Тут скорее вопрос как часто тебе надо иметь как можно более свежие списки блокировок. наверное🤔.

По второму неуверен но в соседней теме Скрипт для автоматического развертывания AntiZapret VPN Container + YouTube по ссылке на гитхаб написано следующее

Посмотреть статистику подключений OpenVpn (выход Ctrl+X)
sudo lxc exec antizapret-vpn -- nano /etc/openvpn/server/logs/status.log -v

При перезапуске контейнера все изменения сохраняются. При пересоздании - удалятся. Можно руками поправить нужные файлы или добавить в init.sh нужные скрипты, что бы они выполнялись при старте, а потом пересобрать контейнер docker compose built. Тогда локально будет образ со всеми исправлениями.

Но сейчас я активно вношу правки в репозиторий, так что в будущем будут проблемы с обновлением из за конфликтов. Лучше наверное подождать немного, пока весь код не перетащу из оригинального репозитория в мой.

Но если надо весь траф пустить через VPN, то я бы рекомендовал поднять обычный IPSec и/или L2TP. Поддержка этих протоколов есть везде, а скорость будет в разы выше.

Я у себя вот это использую: GitHub - hwdsl2/docker-ipsec-vpn-server: Docker image to run an IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2

Да не сказать чтобы часто, пусть появляется через 18 часов, это лучше чем кратковременные фризы.
А за команды спасибо, то что искал и никак не нашел.

А вот такой вопрос - планируется ли использование sndbuf и rcvbuf в клиенте и сервере? Я поставил коненчо себе по 4 мегабайта буферы, на старой сборке сильно помогло, а вот на новой по инерции перенес.
И не могу понять оправданы они или нет :slight_smile:

мне не к спеху, у меня и обычная lxc версия отлично работает)
IPsec я ненавижу, l2tp давно лочится местами)

просто все сервисы уже перевел на докер, этот по сути последний остался))

для скорости и мобил xray есть))

все ясно, ждемс, пасибо)

Разобрался с dkms!

Official Docker VPN Server with Access Server | OpenVPN - написано, что для того что бы работал нужно ставить на хостовую машину!

DCO: You can enable DCO with Access Server if you install and load it on the host Linux system.

Проверяю, будет ли работать openvpn внутри контейнера с хостовым расширением ядра.

Поднял для теста виртуалку с ubutnu24.04 (в более ранних версиях нет готового пакета dco)
Установил на хосте apt install openvpn-dco-dkms и все заработало в контейнере.
Нагрузка на cpu на сервере упала почти до 0!

Обновляю контейнер и делаю инструкцию.

забираем? :slight_smile:

Готово!

Вот инструкция: GitHub - xtrime-ru/antizapret-vpn-docker: Docker container with antizapret-vpn for selfhosting.

В старых конфигах сервера был в списке алгоритмов AES-128-CBC, из за него не включится dco. Либо обновить контейнер, либо удалить в конфигах руками.

Там для свежих систем (24 убунта и новее) и ручная установка deb пакета для 20-22 убунт.

Проверил на 24 и 22 убунтах - все прекрасно:

  • В логах пишется, что dco включен
  • В ip -details link show появилась пометка ovpn-dco

tls-crypt кстати не требуется для DCO. Не стал его влючать, иначе все клиентские ключи надо будет перегенеривать. Да и нагрузка увеличится из за шифрования.

Понятно, это доп. защита от сканирования (аналог PresharedKey в wireguard).

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

sndbuf 3670016
rcvbuf 3670016

всё равно себе вернул :slight_smile:

Это только для серверного конфига? Замеры проводил?

UP: Для DCO в доках openvpn рекомендуют mtu 1420 выставить, но у меня чет через tun-mtu 1420 не срабатывает, в логах всеравно другие значения пишутся…

и на сервере добавил (в контейнере) и на клиенте (в конфиге роутера openvpn)

Замеры да, без этих параметров - открываю ютуб с веба, жду секунды 4-5 - начинает играть в 1080 при доступном 4к, скорость 20-30 мегабит и разгоняется
С параметрами - открываю ютуб с веба, жду меньше секунды - играет сразу в 4к и скорость сразу под 100 мегабит если стате ютуба верить и разгоняется до 300 (канал дома - 500)

ChatGPT говорит что он нужен ещё для скрытия протокола. Так что думаю нужно добавить.

Супер. Сделаю в выходные тогда.

Новая версия готова:

  1. Добавлен tls-crypt
  2. Добавил рекомендуемые опции для mtu и sndbuf/rcvbuf
  3. Перенаправление всех логов в docker log. Теперь их видно при использовании docker compose up, или docker compose logs -f
  4. Оставил файлы конфигов чистыми, что бы их можно было редактировать без конфликтов гита

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