Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kyzima-spb/antizapret

Пользовательская сборка АнтиЗапрет
https://github.com/kyzima-spb/antizapret

Last synced: about 2 months ago
JSON representation

Пользовательская сборка АнтиЗапрет

Awesome Lists containing this project

README

        

AntiZapret VPN Container
========================

- [Введение](#введение)
- [Какой VPS выбрать?](#какой-vps-выбрать)
- [Минимальные системные требования при выборе VPS](#минимальные-системные-требования-при-выборе-vps)
- [Чем пользовался я и что могу посоветовать](#чем-пользовался-я-и-что-могу-посоветовать)
- [Рекомендуемые и протестированные авторами АнтиЗапрет](#рекомендуемые-и-протестированные-авторами-антизапрет)
- [Установка](#установка)
- [Автоматическая установка](#автоматическая-установка)
- [Установка на Vultr и Scaleway с помощью cloud-init](#установка-на-vultr-и-scaleway-с-помощью-cloud-init)
- [После установки](#после-установки)
- [Удаление](#удаление)
- [Полезные команды](#полезные-команды)
- [Особенности VPN](#особенности-vpn)
- [Нестандартный способ маршрутизации](#нестандартный-способ-маршрутизации)
- [Намеренное удаление IPv6-адресов](#намеренное-удаление-ipv6-адресов)
- [Работа со сторонними DNS-зонами](#работа-со-сторонними-dns-зонами)
- [Техническая поддержка](#техническая-поддержка)

## Введение

**Что это?** Это полный аналог сервиса для получения доступа к заблокированным сайтам в Российской Федерации [АнтиЗапрет VPN](https://antizapret.prostovpn.org/), пригодный для установки на личный сервер в интернете.

**Какие преимущества перед обычным VPN?** Обычные VPN направляют трафик ко всем сайтам и сервисам через свои серверы, что понижает общую скорость работы интернета. АнтиЗапрет направляет трафик на свои серверы только к сайтам и сервисам, заблокированным на территории Российской Федерации, и не снижает скорость открытия других сайтов.

**Зачем нужен этот контейнер?** Он нужен в случаях, если вы не доверяете администратору сервиса АнтиЗапрет, недовольны скоростью работы или просто хотите запустить аналог сервиса для себя на собственном оборудовании.

## Какой VPS выбрать?

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

### Минимальные системные требования при выборе VPS

* Личный сервер или VPS с виртуализацией XEN или KVM (OpenVZ не подойдёт)
* Выделенный IPv4-адрес
* Минимум 1Gb оперативной памяти
* Минимум 5Gb дискового пространства
* Дистрибутив Linux, где доступен systemd-machined (рекомендуется Debian 11, в Debian 12 есть проблемы с доступом в консоль контейнера)
* Безлимитный трафик, либо как можно больше =)

### Чем пользовался я и что могу посоветовать

*Все ссылки реферальные!!! Оплата в рублях с российских карт и ЮМани, другие способы уточняйте.*

* [RoboVPS](https://www.robovps.biz/?ref=39155)
* период использования: 17.04.2022 - 17.10.2023
* очень хороший и стабильный хостинг, ТП отвечает быстро,
был оптимальный вариант по соотношению цена/качество, пока не повысили цены
* ChatGPT открывается, но не выдает токен (на момент использования, сейчас не знаю)

* [HOSTING RUSSIA](https://hosting-russia.ru/?p=37512)
* период использования: 17.10.2023 - по сегодня
* ChatGPT выдал токен в локации Германия

* [аéза](https://aeza.net/?ref=451381)
* тестировал 21.02.2024 локации США, Лондон и Нидерланды для выдачи токена ChatGPT
* почасовая оплата
* ChatGPT выдал токен в локации Лондон и Нидерланды, в США - отказался

### Рекомендуемые и протестированные авторами АнтиЗапрет

*Часть ссылок — реферальные. При покупке сервера по реферальным ссылкам, часть оплаченной суммы пойдёт на содержание серверов АнтиЗапрета.*

* [ITLDC](https://itldc.com/?from=51099) (сервер SSD VDS 1G за €3.99)
* [Vultr](https://www.vultr.com/?ref=8592407-6G) (серверы за $5, при регистрации по ссылке даётся бонус на первый месяц)
* [Scaleway](https://www.scaleway.com/en/)

## Установка

### Автоматическая установка

Входим в систему используя SSH: IP-адрес хоста, логин и пароль обычно выдает хостер.
Все команды выполняем от пользователя `root` или используя `sudo`.

Установщику можно задать следующие переменные окружения:

* `COMMAND` - имя команды, по-умолчанию `install`
* `NAME` - имя контейнера, по-умолчанию `antizapret-vpn`
* `IMAGE` - URL-адрес или путь к файлу с образом
* `BACKUP_FILE` - путь к файлу с бекапом OpenVPN для сохранения или восстановления

1. Установка официального контейнера:
```shell
wget -qO- https://kyzima-spb.github.io/antizapret/installer.sh | bash
```
2. Установка моей версии контейнера с улучшениями:
```shell
wget -qO- https://kyzima-spb.github.io/antizapret/installer.sh | \
IMAGE=https://kyzima-spb.github.io/antizapret/rootfs.tar.xz \
bash
```
3. Установка контейнера с указанием имени:
```shell
wget -qO- https://kyzima-spb.github.io/antizapret/installer.sh | \
NAME=antizapret \
bash
```

### Установка на Vultr и Scaleway с помощью cloud-init

**Scaleway**: при создании нового сервера (instance) выберите ОС Ubuntu 20.04,
после пункта #5 (Enter a Name and Optional Tags) нажмите на кнопку "Advanced Options",
активируйте "Cloud-init", скопируйте и вставьте скрипт ниже.

**Vultr**: при создании нового сервера выберите ОС Ubuntu 20.04,
в пункте Startup Script создайте новый скрипт кнопкой Add New убедитесь,
что тип скрипта - Boot, скопируйте и вставьте скрипт ниже.

```bash
#!/bin/bash
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
```

По завершении создания сервера у вас уже будет установлен АнтиЗапрет.

### После установки

После успешной установки должен появиться файл `antizapret-client-tcp.ovpn`.
Это ваш конфигурационный файл OpenVPN, который нужно импортировать в программу OpenVPN на компьютере
и OpenVPN Connect на Android и iOS.

Если установка выполнялась скриптом, то файл появится в директории, из которой был запущен скрипт.
Если вы не меняли директорию, то по-умолчанию это домашняя директория пользователя.
Для пользователя `root`, то это `/root`, иначе `/home/`.

Скопируйте файл `antizapret-client-tcp.ovpn` с сервера на ваш компьютер,
с помощью программы FileZilla (Windows, macOS, Linux) или WinSCP (только для Windows), по протоколу **SFTP**.

В Linux данный файл можно скачать с сервера командой:
```shell
scp @:
```

## Удаление

1. Чтобы удалить контейнер, образ и все связанные файлы выполните:
```shell
wget -qO- https://kyzima-spb.github.io/antizapret/installer.sh | \
COMMAND=uninstall bash
```
2. Если при установке было задано другое имя, то выполните:
```shell
wget -qO- https://kyzima-spb.github.io/antizapret/installer.sh | \
COMMAND=uninstall NAME=antizapret bash
```

## Полезные команды

Для входа в контейнер воспользуйтесь командой:
```shell
machinectl shell
```

Команды, которые можно выполнить внутри контейнера АнтиЗапрет.

1. Обновить сопоставление хостов для проксирования
```shell
LANG=C.UTF-8 /root/antizapret/doall.sh
```
2. Очистить кеш Knot Resolver
```shell
echo "cache.clear()" | socat - /run/knot-resolver/control/1
```

## Особенности VPN

### Нестандартный способ маршрутизации

В отличие от обычных VPN, осуществляющих перенаправление отдельных IP-адресов или диапазонов средствами маршрутизации ОС, VPN АнтиЗапрета использует маршрутизацию на основе доменных имен, с помощью специального DNS-сервера, созданного для этой цели.

На VPN-сервере запущен специальный DNS-резолвер, устанавливающий отображение (соответствие, маппинг) настоящего IP-адреса домена в свободный IP-адрес большой внутренней подсети, и отдающий запрашиваемому клиенту адрес из внутренней подсети.

У такого подхода есть множество преимуществ:

* Клиенту устанавливается только один или несколько маршрутов, вместо десятков тысяч маршрутов;
* Маршрутизируются только заблокированные **домены**, а не все сайты на заблокированном IP-адресе;
* Возможность обновления списка заблокированных сайтов без переподключения клиента;
* Корректная работа с доменами, постоянно меняющими IP-адреса, и с CDN-сервисами;
* Корректная работа с провайдерами, блокирующими все поддомены заблокированного домена (блокировка всей DNS-зоны). Пример такого провайдера — Yota.

Но есть и минусы:

* Необходимо использовать только DNS-сервер внутри VPN. С другими DNS-серверами работать не будет.
* Работает только для заблокированных доменов и программ, использующих доменные имена. Для заблокированных IP-адресов необходимо использовать обычную маршрутизацию.

Схематичное представление:

```
📱 — Клиент
🖥 — VPN и DNS-сервер
🖧 — Интернет

📱 → rutracker.org? → 🖥
🖥 → rutracker.org? → 🖧
🖥 ← 195.82.146.214 ← 🖧
10.224.0.1 → 195.82.146.214
📱 ← 10.224.0.1 ← 🖥
```

Обычная способ маршрутизации также применяется, но только для больших диапазонов заблокированных адресов (всего несколько маршрутов).

### Намеренное удаление IPv6-адресов

Текущая версия специального DNS-сервера не работает с IPv6 и намеренно удаляет IPv6-адреса (AAAA-записи) из DNS-ответов, чтобы у пользователей, провайдеры которых предоставляют IPv6-связность, работал обход блокировок.

Это не является серьёзным недостатком, так как сайтов, доступных только по IPv6, но не по IPv4, практически не существует.

Корректная поддержка IPv6 запланирована в следующих версиях специального DNS-сервера.

### Работа со сторонними DNS-зонами

Контейнер настроен на работу с дополнительными доменными зонами, которые используются некоторыми заблокированными сайтами:

* OpenNIC (`.bbs, .chan, .cyb, .geek, .pirate` и другие);
* EmerDNS (`.lib, .emc, .coin, .bazar`);
* Namecoin (`.bit`).

## Техническая поддержка

Техническая поддержка осуществляется на форуме NTC Community: https://ntc.party/c/antizapret-prostovpn-org