easy-xray/CDN.ru.md
2024-11-11 23:25:48 +03:00

80 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Первоначальная настройка VPS
Xray нельзя поставить на "голый" сервер - нужна предварительная подготовка. Нужно создать пользователя, добавить его в группу sudo,
настроить фаервол и перенести порт ssh. Эти действия можно автоматизировать. Для redhat-based дистрибутивов можно использовать скрипты
[init0.sh](misc/init0.sh) и [init1.sh](misc/init1.sh). Скопируйте их на сервер
```
curl -L -o init0.sh https://github.com/EvgenyNerush/easy-xray/raw/main/misc/init0.sh
curl -L -o init1.sh https://github.com/EvgenyNerush/easy-xray/raw/main/misc/init1.sh
```
затем внимательно прочитайте и исправьте по необходимости, и запустите от рута. После нужно зайти в систему от имени нового пользователя и
подготовить необходимые файлы для Cloudflare CDN - если она нужна.
#### Cloudflare CDN
Помимо прямого доступа (для которого достаточно одного IPv4-адреса), можно настроить доступ через сеть доставки контента (content delivery
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, раздел DNS/Records](figs/cloudflare-records.png)
В настройках Network нужно включить поддержку gRPC - именно этот протокол позволит использовать xray через CDN. На странице SSL/TLS/Origin
Server создайте сертификаты для связи вашего сервера с сетью CDN (файлы `cert.pem` и `cert.key`). **До запуска установки xray** скопируйте
ваши сертификаты `cert.pem` и `cert.key` в директорию `easy-xray`!
Как работает доступ через CDN? Сети доставки контента задуманы для кеширования больших файлов: если большому числу пользователей в России
хочется посмотреть одно и то же видео, которое есть на сервере в США, гораздо выгоднее один раз скачать это видео на сервер в России (кеш),
и отдавать пользователям с него, чем много раз скачивать из США. В то же время для обхода цензуры нам ничего кешировать не нужно, мы просто
пользуемся возможностью бесплатно доставлять трафик через сервера Cloudflare. Важно, что в такой схеме ваше доменное имя резолвится в
IP-адрес сервера Cloudflare, через который может идти трафик большого количества других сайтов. Поэтому РКН, оценивая сопутствующий ущерб,
может не решиться на блокировку вашего xray сервера, даже если будет о нём знать. Чтобы лучше понять общую концепцию работы xray через CDN,
прочитайте [вот эту статью](https://habr.com/ru/articles/761798/).
#### Easy-xray
После проделанной подготовки установка и настройка 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 выполнять сетевые соединения. Чтобы это исправить, выполните команду
```
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
```