add CDN instruction

This commit is contained in:
Evgeny Nerush
2024-11-11 23:06:58 +03:00
parent 7f4cb2710e
commit 000701608a
5 changed files with 56 additions and 45 deletions

View File

@@ -1,8 +1,8 @@
#### Первоначальная настройка VPS
Xray нельзя поставить на "голый" сервер - нужна предварительная подготовка. Нужно создать пользователя, добавить его в группу sudo,
настроить фаервол и перенести порт ssh. Эти действия можно автоматизировать. Для redhat-based дистрибутивов можно использовать
скрипты [init0.sh](misc/init0.sh) и [init1.sh](misc/init1.sh). Скопируйте их на сервер
настроить фаервол и перенести порт ssh. Эти действия можно автоматизировать. Для redhat-based дистрибутивов можно использовать скрипты
[init0.sh](misc/init0.sh) и [init1.sh](misc/init1.sh). Скопируйте их на сервер
```
curl -L https://github.com/EvgenyNerush/easy-xray/blob/test/misc/init0.sh
@@ -16,62 +16,65 @@ curl -L https://github.com/EvgenyNerush/easy-xray/blob/test/misc/init1.sh
#### Cloudflare CDN
Помимо прямого доступа (для которого достаточно одного IPv4-адреса), можно настроить доступ через сеть доставки контента (content delivery
networn, CDN) от Cloudflare. В этом случае проксировать трафик через xray, даже если IP-адрес вашего сервера заблокирован.
Для настройки прокси через CDN нужно:
networn, CDN) от Cloudflare. В этом случае можно проксировать трафик через xray, даже если IP-адрес вашего сервера заблокирован. Для
настройки прокси через CDN нужно:
- завести бесплатный аккаунт на [cloudflare.com](https://www.cloudflare.com/),
- оплатить серверу второй IP-адрес (IPv6 подойдёт, они обычно дешевле),
- купить доменное имя (наподобие example.com, не важно, где вы его купите).
Доменное имя отдаётся под управление Cloudflare (Websites -> Add a domain), затем
добавляется IPv6-адрес вашего сервера (в разделе Websites дважды кликните на доменное имя, перейдите в DNS/Records и нажмите Add a record).
Для IPv6 адреса создавайте запись типа AAAA, если для доменного имени example.com создать запись с именем name, то name.example.com будет
вести на указанный вами IPv6-адрес.
Доменное имя отдаётся под управление Cloudflare (Websites -> Add a domain), затем добавляется IPv6-адрес вашего сервера (в разделе Websites
кликните на доменное имя, перейдите в DNS/Records и нажмите Add a record). Для IPv6 адреса создавайте запись типа AAAA, если для доменного
имени example.com создать запись с именем name, то name.example.com будет вести на указанный вами IPv6-адрес.
![cloudflare, раздел DNS/Records](figs/cloudflare-records.png)
В настройках Network нужно включить поддержку gRPC - именно этот протокол позволит использовать xray через CDN. На странице SSL/TLS/Origin
Server создайте сертификаты для связи вашего сервера с сетью CDN (файлы `cert.pem` и `cert.key`). **До запуска установки xray** скопируйте
ваши сертификаты Cloudflare в директорию со скриптом `ex.sh`!
ваши сертификаты `cert.pem` и `cert.key` в директорию `easy-xray`!
Как работает доступ через CDN? Сети доставки контента задуманы для кеширования больших файлов: если большому числу пользователей в России
хочется посмотреть одно и то же видео с котятами, которое есть на сервере в США, гораздо выгоднее один раз скачать это видео на сервер в
России (кеш), и отдавать пользователям с него, чем много раз скачивать его из США. Нам ничего кешировать не нужно, мы просто пользуемся
возможностью бесплатно доставлять трафик через сервера Cloudflare. Важно, что в такой схеме ваше доменное имя резолвится в IP-адрес сервера
Cloudflare, через который может идти трафик большого количества других сайтов. Поэтому РКН, оценивая сопутствующий ущерб, может не решиться
на блокировку вашего xray сервера, даже если будет о нём знать. Чтобы лучше понять общую концепцию работы xray через CDN, прочитайте [вот
эту статью](https://habr.com/ru/articles/761798/).
хочется посмотреть одно и то же видео, которое есть на сервере в США, гораздо выгоднее один раз скачать это видео на сервер в России (кеш),
и отдавать пользователям с него, чем много раз скачивать из США. В то же время для обхода цензуры нам ничего кешировать не нужно, мы просто
пользуемся возможностью бесплатно доставлять трафик через сервера Cloudflare. Важно, что в такой схеме ваше доменное имя резолвится в
IP-адрес сервера Cloudflare, через который может идти трафик большого количества других сайтов. Поэтому РКН, оценивая сопутствующий ущерб,
может не решиться на блокировку вашего xray сервера, даже если будет о нём знать. Чтобы лучше понять общую концепцию работы xray через CDN,
прочитайте [вот эту статью](https://habr.com/ru/articles/761798/).
#### Easy-xray
Если вы делитесь доступом к своему серверу с другими людьми, рано или поздно IP-адрес вашего сервера может утечь к РКН, который добавит его
в список блокируемых сайтов, доступ к серверу при этом пропадёт. Если же сервер работает через сеть доставки контента (content delivery
network, CDN), то для доступа используется не IP-адрес, а доменное имя. Для того, чтобы заблокировать сервер в этом случае нужно будет
заблокировать один из серверов доменных имён CDN-провайдера (на котором "резолвится" ваше доменное имя). На этом сервере имён может
резолвиться большое число других сайтов (в том числе российских), и в случае блокировки они тоже перестанут работать. Так что, возможно, РКН
не станет идти на такие риски и не будет блокировать ваш сервер даже в случае обнаружения.
CDN от Cloudflare позволяет бесплатно транспортировать grpc-трафик, однако вам потребуется купить какое-либо доменное имя. Чтобы понять
общую концепцию работы xray через CDN, прочитайте [вот эту статью](https://habr.com/ru/articles/761798/).
**До запуска установки xray** скопируйте ваши сертификаты Cloudflare `cert.pem` и `cert.key` в директорию со скриптом `ex.sh`!
Vless не может быть сконфигурирован с fallback при использовании grpc, соответственно, не может противостоять атаке active-probing. Поэтому
помимо xray нужно установить веб-сервер **nginx**, который будет обеспечивать перенаправление на сайт-заглушку. Easy-xray сгенерирует
"сайт" для nginx, который слушает IPv6 адрес и перенаправляет реальных пользователей на xray-сервер, слушающий на 127.0.0.1:50051. При
настройке easy-xray (при выполнении команды `sudo ./ex.sh install` или `./ex.sh conf`) укажите ваше доменное имя, и следуйте дальнейшим
инструкциям. После установки нужно проверить конфигурацию nginx и запустить его с помощью команд
После проделанной подготовки установка и настройка xray происходит как обычно, с помощью запуска `sudo ./ex.sh install`. Vless не может
быть сконфигурирован с fallback при использовании grpc, соответственно, не может противостоять атаке active-probing. Поэтому для
использования CDN скрипт `init0.sh` установит веб-сервер **nginx** - он обеспечит перенаправление на сайт-заглушку. Если вы не использовали
`init0.sh`, установите nginx вручную. Easy-xray сгенерирует "сайт" для nginx, который слушает IPv6 адрес и перенаправляет реальных
пользователей на xray-сервер, слушающий на 127.0.0.1:50051. Проверить конфигурацию nginx и запустить его можно с помощью команд
```
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx
```
Если при попытке зайти на ваш "сайт" из браузера редирект (fallback) на сайт-заглушку не происходит (error 502, bad gateway), возможно,
политики SELinux запрещают nginx выполнять сетевые соединения. Чтобы это исправить, выполните команду
#### Возможные проблемы и их решения
Если при попытке зайти по доменному имент на ваш "сайт" редирект (fallback) на сайт-заглушку не происходит (error 502, bad gateway),
возможно, политики SELinux запрещают nginx выполнять сетевые соединения. Чтобы это исправить, выполните команду
```
sudo setsebool -P httpd_can_network_connect 1
```
Чтобы посмотреть, какие порты не закрыты фаерволом, можно выполнить
```
sudo firewall-cmd --list-ports
```
Если фаервол закрывает 80 и 443 порты, слудует их открыть:
```
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
```