Контейнер VPN АнтиЗапрета для установки на собственный сервер

Спасибо!

Но, в связи с тем, что гугл толи шейпят, толи блочат, вообще считаю, что нужно начинать городить другую схему. Допустим:

  1. дефолтный сервер за рубежом.
  2. дополнительно поднимаем сервер в РФ, прикручиваем тоннели между серверами.
  3. Сервер за рубежом - дефолтный впн сервер для всего мира.
  4. Трафик с сервера №1 в Россию заворачиваем через тоннель и сервер из пункта 2.

В результате у нас “весь мир” и “вся РФ” идет с региональных IP, и всё работает.

На собственном сервере где установлен контейнер Антизапрета выходят ошибки.
Как можно исправить ошибку и с чем это связана ?

Спойлер

Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘102400’ to ‘net/netfilter/nf_conntrack_max’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘600’ to ‘net/netfilter/nf_conntrack_generic_timeout’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘30’ to ‘net/netfilter/nf_conntrack_icmp_timeout’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘10’ to ‘net/netfilter/nf_conntrack_tcp_timeout_close’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘60’ to ‘net/netfilter/nf_conntrack_tcp_timeout_close_wait’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘1800’ to ‘net/netfilter/nf_conntrack_tcp_timeout_established’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘120’ to ‘net/netfilter/nf_conntrack_tcp_timeout_fin_wait’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘30’ to ‘net/netfilter/nf_conntrack_tcp_timeout_last_ack’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘300’ to ‘net/netfilter/nf_conntrack_tcp_timeout_max_retrans’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘60’ to ‘net/netfilter/nf_conntrack_tcp_timeout_syn_recv’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘120’ to ‘net/netfilter/nf_conntrack_tcp_timeout_syn_sent’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘120’ to ‘net/netfilter/nf_conntrack_tcp_timeout_time_wait’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd[1]: Starting Flush Journal to Persistent Storage…
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘300’ to ‘net/netfilter/nf_conntrack_tcp_timeout_unacknowledged’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘120’ to ‘net/netfilter/nf_conntrack_udp_timeout’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘180’ to ‘net/netfilter/nf_conntrack_udp_timeout_stream’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘4194304’ to ‘net/core/rmem_max’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘262143’ to ‘net/core/rmem_default’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘4194304’ to ‘net/core/wmem_max’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘262143’ to ‘net/core/wmem_default’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘bbr’ to ‘net/ipv4/tcp_congestion_control’, ignoring: No such file or directory
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘1’ to ‘fs/protected_hardlinks’, ignoring: Permission denied
Jun 12 08:48:47 antizapret-vpn systemd-sysctl[45]: Couldn’t write ‘1’ to ‘fs/protected_symlinks’, ignoring: Permission denied
Jun 12 08:48:47 antizapret-vpn systemd[1]: Started Apply Kernel Variables.
Jun 12 08:48:47 antizapret-vpn systemd-journald[40]: Runtime journal (/run/log/journal/e2f53169f9c0449a88142dfbe8fa0885) is 1.0M, max 8.0M, 7.0M free.

Для веб версии и приложений на ТВ достаточно netflix.com.
Для приложений на мобильные устройства нужен еще api.fast.com.

Этих двух доменов достаточно для работы Netflix – при этом контент загружается с других доменов, и будет загружаться напрямую, не через VPN.

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

Да, я так и использую теперь, но для авторизации такой подход не верен, нужно найти домен, который используется для этого.

З.ы. при попытке входа в аккаунт пишет, что пара логин и пароль не верны, хотя это не так

Привет, решил написать в эту тему, просьба поправить, если ошибся. Захотел разблокировать себе play.google.com, для чего внёс этот домен в include-hosts-custom.txt. Однако побочным эффектом стало то, что трафик к другим сервисам Google и самому google.com стал тоже идти через VPN, чего не очень хотелось бы. Как сделать так, чтобы трафик через VPN шёл только к тому домену, который я указал в конфиге?

Контейнер VPN АнтиЗапрета для установки на собственный сервер - antizapret.prostovpn.org - NTC

Некоторые сайты выдают заглушки о недоступности в РФ даже после добавления доменов в include-hosts-custom.txt. Например, netflix.com (добавил по совету выше netflix.com и fast.com) и wikidot.com. При этом другие сайты (к примеру, canva.com и pexels.com) после добавления открываются нормально. В чем может быть проблема?

Вероятнее всего, нетфликс забанил сам пулл адресов этого впс хостера. У меня именно эта ситуация была. Решил переходом в другой впс. Посмотреть на впс можно так:

curl -Is https://netflix.com |grep 403

Если нетфликс сам забанил, ты выйдет строчка, а если вывод будет пустой, то, соответственно, нет)

определяется двухсторонний ping, из-за выключенного UFW.Если его включить Антизапрет перестает работать. @ValdikSS подскажи как включить ufw на своем сервере, что-бы Антизапрет остался работать

Кстати, намедни дебажил отсутствия маршрутизации на опенврт. Выяснил, что опенврт не смог прописать маршруты, что передает опенвпн сервак, в итоге дописал в клиентский конфиг эти строки, все сработало.
route 10.224.0.0 255.254.0.0
dhcp-option DNS 192.168.104.1

ufw allow 1194/tcp
ufw allow 1194/udp

Открывайте порты в впс’е, а не в контейнере антизапрета

Добрый день, как побороли? Я уже и согласно рекомендациям сделал в скрипте
sudo ufw allow in on lxdbr0
sudo ufw route allow in on lxdbr0 и 1194, перед командой machinectl enable antizapret-vpn. Не отрабатывают скрипты финальной настройки т.к. нет инета внутри контейнера. А фаерволл совсем выключать не хочется (

Большим жирным шрифтом. Если у вас интерфейс не lxdbr0, необходимо подправить команды.
Если у вас есть какие-то дополнительные запрещающие правила, необходимо также разобраться с тем, что они запрещают.

У меня не сработало. Новая машина Ubuntu 20.04 на Vultr по инструкции в ридми.

Last login: Sat Jun 18 16:26:27 2022 from 92.255.102.90
root@vultr:~# systemctl disable --now ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ufw
root@vultr:~# machinectl stop antizapret-vpn
root@vultr:~# machinectl start antizapret-vpn
root@vultr:~# sleep 20
root@vultr:~# machinectl copy-from antizapret-vpn /root/easy-rsa-ipsec/CLIENT_KEY/antizapret-client-tcp.ovpn /root/antizapret-client-tcp.ovpn
Failed to copy: No such file or directory

Как это вообще дебажить? Логин в контейнер требует пароль.

Когда-то ставил себе антизапрет на CentOS 7,
нашёл в своих заметках, может, кому ещё пригодится (на полную правильность всего не претендую, я не профессиональный линуксоид)

yum -y update
reboot

yum -y install epel-release
yum -y update

yum -y install yum-plugin-copr
yum -y copr enable ngompa/snapcore-el7

yum -y install snapd
systemctl enable --now snapd.socket

yum -y install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm
yum -y install yum-utils
yum-config-manager --disable zfs
yum-config-manager --enable zfs-kmod
yum -y install zfs

grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
sh -c 'echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf'
reboot

snap search lxd
snap install lxd
ln -s /var/lib/snapd/snap /snap

snap list
snap services

usermod -a -G lxd root

newgrp lxd
id

lxc list

lxd init

nano /etc/systemd/system/snap.lxd.daemon.service

[Service]
Environment=LXD_INSECURE_TLS=true

systemctl restart snap.lxd.daemon.service

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
sleep 10
lxc file pull antizapret-vpn/root/easy-rsa-ipsec/CLIENT_KEY/antizapret-client-tcp.ovpn antizapret-client-tcp.ovpn

kscp -P 22 -pw <password> root@<ip_addr>:./antizapret-client-tcp.ovpn antizapret-client-tcp.ovpn

Только что попробовал, взяв скрипт и добавив в самое его начало правила ufw — сработало. Обратите внимание, что по ссылке правила для LXD, а для systemd-machined необходимо изменить название интерфейса на “ve-antizapr+”. Вот полный текст скрипта (но у меня, почему-то, он не выполнился до конца, пришлось запускать вручную):

Спойлер
#!/bin/bash
ufw allow in on ve-antizapr+
ufw route allow in on ve-antizapr+
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt update
apt -y install systemd-container dirmngr
mkdir -p /root/.gnupg/
gpg --no-default-keyring --keyring /etc/systemd/import-pubring.gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 0xEF2E2223D08B38D4B51FFB9E7135A006B28E1285

machinectl pull-tar https://antizapret.prostovpn.org/container-images/az-vpn/rootfs.tar.xz antizapret-vpn
mkdir -p /etc/systemd/nspawn/
echo -e "[Network]\nVirtualEthernet=yes\nPort=tcp:1194:1194\nPort=udp:1194:1194" > /etc/systemd/nspawn/antizapret-vpn.nspawn

systemctl enable --now systemd-networkd.service
machinectl enable antizapret-vpn
machinectl start antizapret-vpn
sleep 20
machinectl copy-from antizapret-vpn /root/easy-rsa-ipsec/CLIENT_KEY/antizapret-client-tcp.ovpn /root/antizapret-client-tcp.ovpn

machinectl shell antizapret-vpn для доступа внутрь контейнера.

Спасибо, уже прошло дальше, файл .ovpn появился, правда пришлось заново переустановить машину. Но VPN не подключается, таймаут. Подключается с выключенным файерволом:

systemctl disable --now ufw

Пробовал порт разрешать, но не помогло:

ufw allow 1194

Хорошо было бы обновить в итоге инструкцию в ридми для Vultr, а то она не рабочая получается.

Всем привет!

Не нашел готового докер контейнера, а по инструкции отсюда Bitbucket внутри контейнеров для LXD и systemd-machined небыло интернета.

Разбираться не стал и конвертнул образ LXD в docker. Через него все завелось!

Закинул на гитхаб:

Имхо старт получился проще, чем в LXD или systemd-machined. Если бы еще нативный Dockerfile сделать, а не конвертить, было бы шикарно…

@ValdikSS буду признателен за фидбэк! Если все ок, то мб можно перенести мой код в основной репо или добавить инструкцию в readme?

Docker предназначен для контейнеров приложений (application container): в контейнере, как правило, запускается единственная программа как init 1, образ не может самостоятельно обновляться (его необходимо коммитить), и т.п.
LXD и machined — системные контейнеры (system container) — предназначены для контейнеризации всей системы, по принципу виртуальной машины.
Я удивлён, что у вас в принципе запускается systemd (/usr/sbin/init) внутри — все эти годы Docker не поддерживал systemd. Docker — неподходящий инструмент для целей контейнеризации антизапрета.