mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-10-12 17:28:16 +03:00
Try fix prettier format
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
---
|
||||
sidebar: auto
|
||||
---
|
||||
|
||||
# Быстрый старт
|
||||
|
||||
> **В этой главе вы узнаете, как максимально просто получить Xray и начать его использовать.**
|
||||
@@ -48,5 +49,3 @@ Xray обладает множеством команд и аргументов,
|
||||
::: tip Благодарность
|
||||
Огромное спасибо всем за то, что делитесь своими навыками и опытом, которые делают Xray с каждым днем лучше.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
@@ -42,15 +42,15 @@ Use "xray help <command>" for more information about a command.
|
||||
```
|
||||
Run Xray with config, the default command.
|
||||
|
||||
The -config=file, -c=file flags set the config files for
|
||||
The -config=file, -c=file flags set the config files for
|
||||
Xray. Multiple assign is accepted.
|
||||
|
||||
The -confdir=dir flag sets a dir with multiple json config
|
||||
|
||||
The -format=json flag sets the format of config files.
|
||||
The -format=json flag sets the format of config files.
|
||||
Default "auto".
|
||||
|
||||
The -test flag tells Xray to test config files only,
|
||||
The -test flag tells Xray to test config files only,
|
||||
without launching the server.
|
||||
|
||||
The -dump flag tells Xray to print the merged config.
|
||||
@@ -119,6 +119,7 @@ The commands are:
|
||||
```
|
||||
|
||||
Sub-command `pb`
|
||||
|
||||
```bash
|
||||
# Usage: xray convert pb [-debug] [-type] [json file] [json file] ...
|
||||
|
||||
@@ -136,6 +137,7 @@ xray help convert pb
|
||||
```
|
||||
|
||||
Sub-command JSON
|
||||
|
||||
```bash
|
||||
# Usage: xray convert json [-type] [stdin:] [typedMessage file]
|
||||
|
||||
@@ -208,5 +210,3 @@ xray wg [-i "(base64.StdEncoding)"]
|
||||
- Рабочий каталог (Working Directory);
|
||||
- Путь, указанный в переменной окружения `Xray.location.asset` (см. [Переменные окружения](../config/features/env.md#ресурсные-файлы)).
|
||||
:::
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": "b831381d-6324-4d53-ad4f-8cda48b30811" // Не забудьте заменить это поле, сгенерировав UUID с помощью `xray uuid` или `uuidgen`
|
||||
"id": "b831381d-6324-4d53-ad4f-8cda48b30811" // Не забудьте заменить это поле, сгенерировав UUID с помощью `xray uuid` или `uuidgen`
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -68,7 +68,7 @@
|
||||
"port": 10086, // Порт сервера
|
||||
"users": [
|
||||
{
|
||||
"id": "b831381d-6324-4d53-ad4f-8cda48b30811" // Не забудьте заменить это поле, сгенерировав UUID с помощью `xray uuid` или `uuidgen`
|
||||
"id": "b831381d-6324-4d53-ad4f-8cda48b30811" // Не забудьте заменить это поле, сгенерировав UUID с помощью `xray uuid` или `uuidgen`
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -85,13 +85,14 @@
|
||||
"rules": [
|
||||
{
|
||||
"type": "field",
|
||||
"ip": ["geoip:private","geoip:cn"], // Исключить локальную сеть и диапазоны IP-адресов Китая
|
||||
"ip": ["geoip:private", "geoip:cn"], // Исключить локальную сеть и диапазоны IP-адресов Китая
|
||||
"outboundTag": "direct"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Единственное, что вам нужно изменить в приведенной выше конфигурации, - это IP-адрес вашего сервера и UUID пользователя, как указано в комментариях. Эта конфигурация будет перенаправлять весь трафик на ваш сервер, за исключением локальной сети (например, доступ к маршрутизатору) и диапазонов IP-адресов Китая (например, доступ к bilibili, acfun).
|
||||
|
||||
## Запуск
|
||||
@@ -103,6 +104,3 @@
|
||||
- Или используйте systemd или другой инструмент для запуска Xray как службы в фоновом режиме.
|
||||
|
||||
Более подробную информацию можно найти в [документации по конфигурации](../config/) и в разделе [Простыми словами](./level-0/).
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -45,5 +45,3 @@ git push -u origin your-branch
|
||||
## Нашли ошибку?
|
||||
|
||||
Если вы обнаружили ошибку в документации, вы можете внести исправления или создать задачу (Issue).
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
Xray доступен на следующих платформах:
|
||||
|
||||
- Windows 7 и выше (x86 / amd64 / arm32 / arm64);
|
||||
- Если вам требуется использовать эти версии (1.8.18 и более новые, отмеченные как ```win7```, 1.8.6, 1.8.4) в Windows 7, необходимо убедиться, что в вашей ОС установлено обновление **KB4474419**. Для повышения уровня безопасности также рекомендуем убедиться, что у вас установлено обновление KB4490628.
|
||||
- Если вам требуется использовать эти версии (1.8.18 и более новые, отмеченные как `win7`, 1.8.6, 1.8.4) в Windows 7, необходимо убедиться, что в вашей ОС установлено обновление **KB4474419**. Для повышения уровня безопасности также рекомендуем убедиться, что у вас установлено обновление KB4490628.
|
||||
- macOS 10.10 Yosemite и выше (amd64 / arm64);
|
||||
- Linux 2.6.23 и выше (x86 / amd64 / arm / arm64 / mips64 / mips / ppc64 / s390x / riscv64);
|
||||
- Включая, но не ограничиваясь: Debian 7 / 8, Ubuntu 12.04 / 14.04 и выше, CentOS 7 / 8, Arch Linux и др.;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
Поскольку эта статья предназначена для **новичков без опыта**, многие вещи будут объяснены максимально подробно. Поэтому будьте готовы к тому, что текст будет довольно многословным.
|
||||
|
||||
## 1.4 Почему самостоятельная настройка — это сложно?
|
||||
## 1.4 Почему самостоятельная настройка — это сложно?
|
||||
|
||||
Чтобы ответить на этот вопрос, нужно немного углубиться в историю вопроса.
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
Во-вторых, о проблемах новичков.
|
||||
|
||||
Начинающим пользователям без технического бэкграунда, чтобы разобраться во всех этих премудростях, приходится изучать огромные массивы информации, разбросанной по всему интернету: блогам, форумам, группам в мессенджерах, репозиториям на GitHub, видео на YouTube и так далее.
|
||||
Начинающим пользователям без технического бэкграунда, чтобы разобраться во всех этих премудростях, приходится изучать огромные массивы информации, разбросанной по всему интернету: блогам, форумам, группам в мессенджерах, репозиториям на GitHub, видео на YouTube и так далее.
|
||||
|
||||
Вся эта информация часто оказывается противоречивой, неполной или попросту неверной. Новичкам остаётся только гадать, кому верить и как всё это работает на самом деле.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
Во-первых, я хотел бы спросить у любителей подобных советов: разве платные VPN — это панацея?
|
||||
|
||||
Во-вторых, я считаю, что «не знать» и «не хотеть знать» — это две большие разницы. Конечно, инфантилы, которые хотят всё и сразу, не прилагая никаких усилий, вызывают только раздражение. Но люди, которые искренне хотят разобраться во всём сами, не заслуживают презрения и издёвок. Именно эта нетерпимость к новичкам и побудила меня написать эту статью.
|
||||
Во-вторых, я считаю, что «не знать» и «не хотеть знать» — это две большие разницы. Конечно, инфантилы, которые хотят всё и сразу, не прилагая никаких усилий, вызывают только раздражение. Но люди, которые искренне хотят разобраться во всём сами, не заслуживают презрения и издёвок. Именно эта нетерпимость к новичкам и побудила меня написать эту статью.
|
||||
|
||||
Давайте разберёмся, в чём плюсы и минусы платных VPN-сервисов.
|
||||
|
||||
@@ -82,18 +82,16 @@
|
||||
|
||||
2. Если же вы решили настроить всё самостоятельно, продолжайте чтение!
|
||||
|
||||
Цель этой статьи — стать отправной точкой для новичков, предоставить подробное пошаговое руководство по настройке VPN-сервера на VPS, начиная **с ввода первой команды** и заканчивая **успешным подключением к заблокированным ресурсам**.
|
||||
Цель этой статьи — стать отправной точкой для новичков, предоставить подробное пошаговое руководство по настройке VPN-сервера на VPS, начиная **с ввода первой команды** и заканчивая **успешным подключением к заблокированным ресурсам**.
|
||||
|
||||
В процессе настройки вы познакомитесь с основными командами Linux, что станет хорошей базой для дальнейшего изучения этой операционной системы.
|
||||
|
||||
## 1.7 Немного лирики
|
||||
|
||||
1. В интернете много дезинформации, поэтому важно научиться критически мыслить, не поддаваться на провокации и не верить всему, что пишут.
|
||||
2. Искренне надеюсь, что, получив доступ к свободному интернету, вы сможете узнавать больше нового, наслаждаться разнообразным контентом, знакомиться с интересными людьми и находить единомышленников.
|
||||
2. Искренне надеюсь, что, получив доступ к свободному интернету, вы сможете узнавать больше нового, наслаждаться разнообразным контентом, знакомиться с интересными людьми и находить единомышленников.
|
||||
3. Ваша личность в интернете — это всё ещё вы. Добиться полной анонимности крайне сложно, поэтому не забывайте о законах вашей страны и стран, IP-адреса которых вы используете. Всегда помните о собственной безопасности.
|
||||
|
||||
## 1.8 Ваш прогресс
|
||||
|
||||
> ⬛⬜⬜⬜⬜⬜⬜⬜ 12.5%
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
3. Записать порт (Port) SSH для удалённого подключения к VPS.
|
||||
4. Записать имя пользователя и пароль для удалённого подключения по SSH.
|
||||
|
||||
Выбор и покупка VPS — дело непростое. Рекомендуем сначала изучить этот вопрос и выбрать тариф, который соответствует вашим финансовым возможностям и требованиям к скорости и качеству связи. Также можно воспользоваться бесплатными (постоянными или временными) предложениями от крупных облачных провайдеров, таких как Oracle Cloud и Google Cloud. Главное — не влезайте в долги.
|
||||
Выбор и покупка VPS — дело непростое. Рекомендуем сначала изучить этот вопрос и выбрать тариф, который соответствует вашим финансовым возможностям и требованиям к скорости и качеству связи. Также можно воспользоваться бесплатными (постоянными или временными) предложениями от крупных облачных провайдеров, таких как Oracle Cloud и Google Cloud. Главное — не влезайте в долги.
|
||||
|
||||
::: tip Пояснение
|
||||
Несколько слов о выборе Debian 10 в качестве операционной системы. Что бы вы ни слышали в интернете, какой бы дистрибутив Linux ни советовали вам гуру, все эти споры о том, какой Linux лучше, **не имеют к вам никакого отношения**! Debian 10 — это надёжная и стабильная операционная система, которая отлично подходит для работы VPN-сервера и достаточно оптимизирована (например, имеет специальное ядро для облачных сред и своевременную поддержку BBR). Когда вы освоитесь с Linux, можете попробовать и другие дистрибутивы.
|
||||
@@ -53,5 +53,3 @@
|
||||
Если вы выполнили все пункты из этого раздела, у вас уже есть всё необходимое, чтобы открыть для себя новый мир. Так чего же мы ждём? Давайте перейдём к следующей главе и сделаем это!
|
||||
|
||||
> ⬛⬛⬜⬜⬜⬜⬜⬜ 25%
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||

|
||||
|
||||
Этот экран — аналог «рабочего стола» на удалённом сервере, но здесь нет привычных значков, курсора мыши и ярких цветов. Только текст. Это и есть **командная строка** — *Command Line Interface* или сокращённо *CLI*.
|
||||
Этот экран — аналог «рабочего стола» на удалённом сервере, но здесь нет привычных значков, курсора мыши и ярких цветов. Только текст. Это и есть **командная строка** — _Command Line Interface_ или сокращённо _CLI_.
|
||||
|
||||
Все дальнейшие действия вам придётся выполнять в командной строке, как хакер в кино. Возможно, поначалу это покажется вам непривычным, но поверьте, в использовании командной строки нет ничего страшного или сложного. По сути, это всего лишь способ взаимодействия с компьютером с помощью текстовых команд вместо графического интерфейса. **Вы пишете команду, а компьютер её выполняет.**
|
||||
|
||||
@@ -55,10 +55,10 @@
|
||||
|
||||
2. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :----------: | :----------------- |
|
||||
| `cmd-01` | `apt update` | Проверить обновления |
|
||||
| `cmd-02` | `apt upgrade` | Установить обновления|
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :-----------: | :-------------------- |
|
||||
| `cmd-01` | `apt update` | Проверить обновления |
|
||||
| `cmd-02` | `apt upgrade` | Установить обновления |
|
||||
|
||||
3. Введите первую команду, чтобы получить информацию об обновлениях:
|
||||
|
||||
@@ -81,7 +81,3 @@
|
||||
**Поздравляем, вы сделали ещё один важный шаг!** Теперь вы умеете подключаться к своему серверу по SSH! Но что делать после подключения, кроме обновления системы? Узнаем в следующей главе!
|
||||
|
||||
> ⬛⬛⬛⬜⬜⬜⬜⬜ 37.5%
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
## 4.1 Зачем нужна безопасность?
|
||||
|
||||
Безопасность Linux-серверов — это обширная и сложная тема. Бесчисленные веб-сайты, приложения, сервисы и даже критически важная инфраструктура построены на базе Linux. За всем этим стоят огромные деньги и коммерческие интересы, что, естественно, привлекает злоумышленников. В то же время надёжная работа этих сервисов крайне важна, поэтому любые серьёзные уязвимости недопустимы. Именно поэтому множество специалистов по безопасности изо дня в день ведут борьбу на передовой, обеспечивая стабильную работу цифрового мира, к которому мы все привыкли.
|
||||
Безопасность Linux-серверов — это обширная и сложная тема. Бесчисленные веб-сайты, приложения, сервисы и даже критически важная инфраструктура построены на базе Linux. За всем этим стоят огромные деньги и коммерческие интересы, что, естественно, привлекает злоумышленников. В то же время надёжная работа этих сервисов крайне важна, поэтому любые серьёзные уязвимости недопустимы. Именно поэтому множество специалистов по безопасности изо дня в день ведут борьбу на передовой, обеспечивая стабильную работу цифрового мира, к которому мы все привыкли.
|
||||
|
||||
Теперь, когда у вас есть собственный VPS-сервер, и вы собираетесь открыть на нём порты для перенаправления трафика, вы фактически оказываетесь на передовой этой борьбы и подвергаетесь тем же рискам. В то же время, новички, не обладающие достаточными знаниями и информацией, склонны впадать в крайности: либо они считают, что им ничего не угрожает, либо же, наоборот, впадают в паранойю.
|
||||
Теперь, когда у вас есть собственный VPS-сервер, и вы собираетесь открыть на нём порты для перенаправления трафика, вы фактически оказываетесь на передовой этой борьбы и подвергаетесь тем же рискам. В то же время, новички, не обладающие достаточными знаниями и информацией, склонны впадать в крайности: либо они считают, что им ничего не угрожает, либо же, наоборот, впадают в паранойю.
|
||||
|
||||
- Первым я бы посоветовал не относиться к безопасности легкомысленно и изучить этот вопрос более подробно, чтобы потом не пришлось кусать локти.
|
||||
|
||||
@@ -12,31 +12,31 @@
|
||||
|
||||
## 4.2 Какие именно риски существуют?
|
||||
|
||||
Как мы уже говорили в главе про удалённое подключение, для доступа к вашему VPS достаточно знать четыре вещи: **IP-адрес**, **порт**, **имя пользователя** и **пароль**. Очевидно, что эти четыре элемента нужно защищать в первую очередь. Давайте разберём каждый из них:
|
||||
Как мы уже говорили в главе про удалённое подключение, для доступа к вашему VPS достаточно знать четыре вещи: **IP-адрес**, **порт**, **имя пользователя** и **пароль**. Очевидно, что эти четыре элемента нужно защищать в первую очередь. Давайте разберём каждый из них:
|
||||
|
||||
1. **IP-адрес**: злоумышленники могут сканировать целые диапазоны IP-адресов в поисках уязвимых серверов. Ваш IP-адрес — это публичная информация, которую невозможно скрыть.
|
||||
1. **IP-адрес**: злоумышленники могут сканировать целые диапазоны IP-адресов в поисках уязвимых серверов. Ваш IP-адрес — это публичная информация, которую невозможно скрыть.
|
||||
|
||||
2. **Порт**: если вы используете настройки по умолчанию, то порт SSH равен `22`.
|
||||
|
||||
3. **Имя пользователя**: если вы используете настройки по умолчанию, то имя пользователя — `root`.
|
||||
|
||||
4. **Пароль**: пароль не имеет значения по умолчанию. Он либо генерируется автоматически при создании VPS, либо задаётся вами. Таким образом, если вы не меняли настройки сервера, то три из четырёх элементов уже известны злоумышленникам, и вся безопасность вашего сервера держится на одном только пароле. Возможны следующие варианты:
|
||||
4. **Пароль**: пароль не имеет значения по умолчанию. Он либо генерируется автоматически при создании VPS, либо задаётся вами. Таким образом, если вы не меняли настройки сервера, то три из четырёх элементов уже известны злоумышленникам, и вся безопасность вашего сервера держится на одном только пароле. Возможны следующие варианты:
|
||||
|
||||
- Вы используете автоматически сгенерированный пароль из панели управления VPS. Такие пароли обычно состоят из случайного набора символов (букв в разных регистрах, цифр и спецсимволов) и достаточно надёжны.
|
||||
- Вы используете автоматически сгенерированный пароль из панели управления VPS. Такие пароли обычно состоят из случайного набора символов (букв в разных регистрах, цифр и спецсимволов) и достаточно надёжны.
|
||||
|
||||
- Вы установили простой пароль, например, `123456`. Взломать такой сервер не составит труда.
|
||||
- Вы установили простой пароль, например, `123456`. Взломать такой сервер не составит труда.
|
||||
|
||||
- Вы установили сложный пароль, который используете где-то ещё. Это тоже небезопасно. Злоумышленники используют специальные программы, которые перебирают миллионы ранее скомпрометированных паролей из утечек данных.
|
||||
- Вы установили сложный пароль, который используете где-то ещё. Это тоже небезопасно. Злоумышленники используют специальные программы, которые перебирают миллионы ранее скомпрометированных паролей из утечек данных.
|
||||
|
||||
5. Важно понимать, что никакой хакер не будет лично подбирать ваш пароль. Все атаки выполняются автоматически с помощью специальных скриптов, которые работают круглосуточно. Пока вы спите, ваш сервер может подвергаться атакам.
|
||||
5. Важно понимать, что никакой хакер не будет лично подбирать ваш пароль. Все атаки выполняются автоматически с помощью специальных скриптов, которые работают круглосуточно. Пока вы спите, ваш сервер может подвергаться атакам.
|
||||
|
||||
Если пароль будет подобран, злоумышленники получат полный доступ к вашему серверу (права пользователя `root`), смогут установить на него вредоносное ПО и использовать его в своих целях (например, для майнинга криптовалюты, рассылки спама, фишинговых атак, организации торрент-трекера, размещения публичных узлов для доступа к даркнету и т.д.). При этом злоумышленники могут действовать очень скрытно, и вы даже не заметите, что ваш сервер взломан, пока не получите уведомление от хостинг-провайдера о блокировке вашего аккаунта или, что ещё хуже, повестку в суд.
|
||||
Если пароль будет подобран, злоумышленники получат полный доступ к вашему серверу (права пользователя `root`), смогут установить на него вредоносное ПО и использовать его в своих целях (например, для майнинга криптовалюты, рассылки спама, фишинговых атак, организации торрент-трекера, размещения публичных узлов для доступа к даркнету и т.д.). При этом злоумышленники могут действовать очень скрытно, и вы даже не заметите, что ваш сервер взломан, пока не получите уведомление от хостинг-провайдера о блокировке вашего аккаунта или, что ещё хуже, повестку в суд.
|
||||
|
||||
6. Не забывайте, что при покупке VPS вы, скорее всего, указывали свои реальные платёжные данные. А при посещении сайтов и использовании социальных сетей ваш IP-адрес также сохраняется. Всё это может быть использовано против вас. **Поэтому, если на вашем сервере произойдёт что-то противозаконное, отвечать за это придётся вам.**
|
||||
6. Не забывайте, что при покупке VPS вы, скорее всего, указывали свои реальные платёжные данные. А при посещении сайтов и использовании социальных сетей ваш IP-адрес также сохраняется. Всё это может быть использовано против вас. **Поэтому, если на вашем сервере произойдёт что-то противозаконное, отвечать за это придётся вам.**
|
||||
|
||||
## 4.3 Какие меры безопасности нужно предпринять?
|
||||
|
||||
Исходя из всего вышесказанного, нам нужно защитить **порт**, **имя пользователя** и **пароль**, чтобы снизить риск взлома. Для этого необходимо:
|
||||
Исходя из всего вышесказанного, нам нужно защитить **порт**, **имя пользователя** и **пароль**, чтобы снизить риск взлома. Для этого необходимо:
|
||||
|
||||
1. Изменить порт SSH на **нестандартный** (отличный от 22) (см. раздел 4.4).
|
||||
2. Создать **нового пользователя** (не `root`) и **запретить удалённое подключение по SSH** для пользователя `root` (см. разделы 4.5 и 4.6).
|
||||
@@ -46,58 +46,61 @@
|
||||
|
||||
## 4.4 Изменение порта SSH
|
||||
|
||||
Давайте решим проблему с портом SSH, который по умолчанию равен `22` (обратите внимание: у некоторых хостинг-провайдеров порт SSH по умолчанию уже отличается от 22. В этом случае вы можете пропустить этот шаг, но можете и изменить порт ещё раз, следуя инструкциям ниже).
|
||||
Давайте решим проблему с портом SSH, который по умолчанию равен `22` (обратите внимание: у некоторых хостинг-провайдеров порт SSH по умолчанию уже отличается от 22. В этом случае вы можете пропустить этот шаг, но можете и изменить порт ещё раз, следуя инструкциям ниже).
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :---------------- | :------------------------ |
|
||||
| `cmd-03` | `nano` | Текстовый редактор |
|
||||
| `cmd-04` | `systemctl restart` | Перезапуск службы |
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :------------------ | :----------------- |
|
||||
| `cmd-03` | `nano` | Текстовый редактор |
|
||||
| `cmd-04` | `systemctl restart` | Перезапуск службы |
|
||||
|
||||
2. Важные файлы конфигурации Linux:
|
||||
|
||||
| Номер | Путь к файлу | Описание |
|
||||
| :------ | :----------------------- | :------------------------- |
|
||||
| `conf-01` | `/etc/ssh/sshd_config` | Настройки SSH-сервера |
|
||||
| Номер | Путь к файлу | Описание |
|
||||
| :-------- | :--------------------- | :-------------------- |
|
||||
| `conf-01` | `/etc/ssh/sshd_config` | Настройки SSH-сервера |
|
||||
|
||||
3. Первое, что нужно сделать, — это открыть файл настроек SSH-сервера (`/etc/ssh/sshd_config`) в текстовом редакторе `nano`. В Windows вы бы просто нашли этот файл и дважды кликнули по нему. А как это сделать в Linux? Если вы внимательно читали предыдущие разделы, то наверняка уже догадались! Правильно, нужно выполнить команду:
|
||||
3. Первое, что нужно сделать, — это открыть файл настроек SSH-сервера (`/etc/ssh/sshd_config`) в текстовом редакторе `nano`. В Windows вы бы просто нашли этот файл и дважды кликнули по нему. А как это сделать в Linux? Если вы внимательно читали предыдущие разделы, то наверняка уже догадались! Правильно, нужно выполнить команду:
|
||||
|
||||
```shell
|
||||
nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
4. После открытия файла вы увидите интерфейс редактора `nano`. Обратите внимание на нижнюю часть экрана, где перечислены основные горячие клавиши (на скриншоте ниже выделены красной рамкой). Не нужно ничего заучивать, всё необходимое всегда перед глазами!
|
||||
4. После открытия файла вы увидите интерфейс редактора `nano`. Обратите внимание на нижнюю часть экрана, где перечислены основные горячие клавиши (на скриншоте ниже выделены красной рамкой). Не нужно ничего заучивать, всё необходимое всегда перед глазами!
|
||||
|
||||

|
||||
|
||||
5) Второе, что нужно сделать, — это найти строку, начинающуюся с `Port`, и изменить номер порта. Число после `Port` — это номер порта SSH. Рекомендуется использовать число в диапазоне от `1024` до `65535` (в этой статье мы будем использовать порт `9753`). Как это сделать, используя горячие клавиши `nano`? Вы уже наверняка догадались!
|
||||
5) Второе, что нужно сделать, — это найти строку, начинающуюся с `Port`, и изменить номер порта. Число после `Port` — это номер порта SSH. Рекомендуется использовать число в диапазоне от `1024` до `65535` (в этой статье мы будем использовать порт `9753`). Как это сделать, используя горячие клавиши `nano`? Вы уже наверняка догадались!
|
||||
|
||||
- Нажмите `Ctrl+W`, чтобы открыть поиск, введите `Port 22` и нажмите Enter.
|
||||
- Замените `22` на `9753`.
|
||||
- Примечание: если в начале строки стоит символ `#`, значит, эта строка закомментирована и не будет применяться. Вы можете либо раскомментировать её (удалив `#`), либо добавить новую строку без `#` в конце файла, как показано на скриншоте.
|
||||
- Примечание: если в начале строки стоит символ `#`, значит, эта строка закомментирована и не будет применяться. Вы можете либо раскомментировать её (удалив `#`), либо добавить новую строку без `#` в конце файла, как показано на скриншоте.
|
||||
|
||||
::: warning
|
||||
Использование порта `9753` в этой статье делает его менее безопасным, поскольку злоумышленники могут начать сканировать этот порт в первую очередь. Кроме того, этот порт может быть заблокирован некоторыми провайдерами. Поэтому настоятельно рекомендуем использовать другой порт. У вас в распоряжении более 60 тысяч портов, так что выбрать есть из чего.
|
||||
Использование порта `9753` в этой статье делает его менее безопасным, поскольку злоумышленники могут начать сканировать этот порт в первую очередь. Кроме того, этот порт может быть заблокирован некоторыми провайдерами. Поэтому настоятельно рекомендуем использовать другой порт. У вас в распоряжении более 60 тысяч портов, так что выбрать есть из чего.
|
||||
:::
|
||||
|
||||
6. Третье, что нужно сделать, — это сохранить изменения и выйти из редактора.
|
||||
|
||||
- Как вы уже могли заметить, для сохранения файла используется не `Ctrl+S`, как в большинстве программ.
|
||||
- Горячие клавиши: `Ctrl+O` — сохранить, `Ctrl+X` — выйти.
|
||||
|
||||
- Добавьте новое правило в брандмауэр, чтобы открыть новый порт SSH. В противном случае, после перезагрузки инстанса, подключение по SSH будет недоступно.
|
||||
|
||||
- **Пример для Ubuntu с использованием `ufw`:**
|
||||
|
||||
```shell
|
||||
sudo ufw allow 9753/tcp
|
||||
```
|
||||
```shell
|
||||
sudo ufw allow 9753/tcp
|
||||
```
|
||||
|
||||
7. И последнее, что нужно сделать, — это перезапустить SSH-сервер, чтобы изменения вступили в силу.
|
||||
|
||||
```shell
|
||||
systemctl restart ssh
|
||||
```
|
||||
Затем можно попробовать открыть новую сессию в SSH-клиенте и проверить подключение. Если возникнут проблемы, можно изменить конфигурацию в старой SSH-сессии (открытые SSH-соединения не будут разорваны при перезапуске службы SSHD).
|
||||
|
||||
Затем можно попробовать открыть новую сессию в SSH-клиенте и проверить подключение. Если возникнут проблемы, можно изменить конфигурацию в старой SSH-сессии (открытые SSH-соединения не будут разорваны при перезапуске службы SSHD).
|
||||
|
||||
8. Весь процесс показан на гифке ниже:
|
||||
|
||||
@@ -105,34 +108,34 @@
|
||||
|
||||
9. Изменение настроек PuTTY
|
||||
|
||||
Теперь, когда вы изменили порт SSH, вам нужно указать новый порт (`9753`) в настройках PuTTY. Вы ведь помните, где это делается? (Если нет, вернитесь и перечитайте предыдущие разделы!)
|
||||
Теперь, когда вы изменили порт SSH, вам нужно указать новый порт (`9753`) в настройках PuTTY. Вы ведь помните, где это делается? (Если нет, вернитесь и перечитайте предыдущие разделы!)
|
||||
|
||||
## 4.5 Создание нового пользователя
|
||||
|
||||
Перейдём ко второму шагу — избавлению от пользователя `root`.
|
||||
|
||||
Прежде всего, нужно понимать, что пользователь `root` в Linux — это не просто администратор. Это корень системы, её основа, верховный правитель. Если безопасность учётной записи `root` будет нарушена, под угрозой окажется вся система.
|
||||
Прежде всего, нужно понимать, что пользователь `root` в Linux — это не просто администратор. Это корень системы, её основа, верховный правитель. Если безопасность учётной записи `root` будет нарушена, под угрозой окажется вся система.
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :------------ | :---------------------------------- |
|
||||
| `cmd-05` | `adduser` | Добавление нового пользователя |
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :------------ | :--------------------------------- |
|
||||
| `cmd-05` | `adduser` | Добавление нового пользователя |
|
||||
| `cmd-06` | `apt install` | Установка программного обеспечения |
|
||||
| `cmd-07` | `visudo` | Редактор файла sudoers |
|
||||
| `cmd-07` | `visudo` | Редактор файла sudoers |
|
||||
|
||||
2. Первое, что нужно сделать, — это создать нового пользователя и установить для него пароль. Имя пользователя может быть любым, в этой статье мы будем использовать имя `vpsadmin`.
|
||||
2. Первое, что нужно сделать, — это создать нового пользователя и установить для него пароль. Имя пользователя может быть любым, в этой статье мы будем использовать имя `vpsadmin`.
|
||||
|
||||
```shell
|
||||
adduser vpsadmin
|
||||
```
|
||||
|
||||
Следуйте инструкциям на экране. Обязательно укажите пароль для нового пользователя (и не удивляйтесь, что при вводе пароля символы не отображаются). Далее система может запросить дополнительную информацию о пользователе. Можете пропустить эти пункты, нажав Enter.
|
||||
Следуйте инструкциям на экране. Обязательно укажите пароль для нового пользователя (и не удивляйтесь, что при вводе пароля символы не отображаются). Далее система может запросить дополнительную информацию о пользователе. Можете пропустить эти пункты, нажав Enter.
|
||||
|
||||

|
||||
|
||||
::: warning
|
||||
Использование имени пользователя `vpsadmin` в этой статье делает его менее безопасным, поскольку злоумышленники могут начать перебирать пароли для этого имени в первую очередь. Поэтому, как и в случае с портом, настоятельно рекомендуем использовать другое имя пользователя.
|
||||
Использование имени пользователя `vpsadmin` в этой статье делает его менее безопасным, поскольку злоумышленники могут начать перебирать пароли для этого имени в первую очередь. Поэтому, как и в случае с портом, настоятельно рекомендуем использовать другое имя пользователя.
|
||||
:::
|
||||
|
||||
3. Весь процесс показан на гифке ниже:
|
||||
@@ -145,7 +148,7 @@
|
||||
apt update && apt install sudo
|
||||
```
|
||||
|
||||
Вы, наверное, заметили, что эта строка содержит две команды. Первая команда, `apt update`, уже знакома вам — она обновляет информацию о доступных пакетах. Вторая команда, `apt install`, используется для установки программного обеспечения. В данном случае мы обновляем информацию о пакетах и устанавливаем последнюю версию `sudo`. Символы `&&` используются для объединения нескольких команд в одну строку.
|
||||
Вы, наверное, заметили, что эта строка содержит две команды. Первая команда, `apt update`, уже знакома вам — она обновляет информацию о доступных пакетах. Вторая команда, `apt install`, используется для установки программного обеспечения. В данном случае мы обновляем информацию о пакетах и устанавливаем последнюю версию `sudo`. Символы `&&` используются для объединения нескольких команд в одну строку.
|
||||
|
||||
5. Третье, что нужно сделать, — это добавить пользователя `vpsadmin` в группу `sudo`, чтобы он мог использовать команду `sudo`.
|
||||
|
||||
@@ -156,7 +159,7 @@
|
||||
Добавьте следующую строку в раздел `User Privilege Specification`: `vpsadmin ALL=(ALL) NOPASSWD: ALL`.
|
||||
|
||||
::: warning
|
||||
Обратите внимание на опцию `NOPASSWD`. Она означает, что пользователю `vpsadmin` не нужно будет вводить пароль при использовании команды `sudo`. **Это противоречит общепринятым рекомендациям по безопасности.** Однако я рекомендую сделать именно так, потому что многие новички используют учётную запись `root` именно потому, что им не нужно каждый раз вводить пароль. Я считаю, что **риски от использования учётной записи `root` гораздо выше**, чем риски от использования `sudo` без пароля.
|
||||
Обратите внимание на опцию `NOPASSWD`. Она означает, что пользователю `vpsadmin` не нужно будет вводить пароль при использовании команды `sudo`. **Это противоречит общепринятым рекомендациям по безопасности.** Однако я рекомендую сделать именно так, потому что многие новички используют учётную запись `root` именно потому, что им не нужно каждый раз вводить пароль. Я считаю, что **риски от использования учётной записи `root` гораздо выше**, чем риски от использования `sudo` без пароля.
|
||||
|
||||
Если вы всё же хотите, чтобы при каждом использовании `sudo` запрашивался пароль, используйте следующую строку: `vpsadmin ALL=(ALL:ALL) ALL`.
|
||||
:::
|
||||
@@ -167,23 +170,23 @@
|
||||
|
||||
## 4.6 Запрет удалённого подключения по SSH для пользователя root
|
||||
|
||||
1. Вы уже немного освоились в Linux, поэтому попробуйте сами догадаться, что нужно сделать в первую очередь. Правильно, нужно снова открыть файл настроек SSH-сервера (`/etc/ssh/sshd_config`) в редакторе `nano`. Не помните, как это сделать? Вернитесь и перечитайте предыдущие разделы! ... Правильный ответ:
|
||||
1. Вы уже немного освоились в Linux, поэтому попробуйте сами догадаться, что нужно сделать в первую очередь. Правильно, нужно снова открыть файл настроек SSH-сервера (`/etc/ssh/sshd_config`) в редакторе `nano`. Не помните, как это сделать? Вернитесь и перечитайте предыдущие разделы! ... Правильный ответ:
|
||||
|
||||
```shell
|
||||
nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
2. Найдите строку `PermitRootLogin Yes` и замените `yes` на `no`. Помните, как это сделать? ... Правильный ответ:
|
||||
2. Найдите строку `PermitRootLogin Yes` и замените `yes` на `no`. Помните, как это сделать? ... Правильный ответ:
|
||||
|
||||
- Нажмите `Ctrl+W`, чтобы открыть поиск, введите `PermitRootLogin` и нажмите Enter.
|
||||
- Замените `yes` на `no`.
|
||||
|
||||
3. Сохраните изменения и выйдите из редактора. Помните, как это сделать? ... Правильный ответ:
|
||||
3. Сохраните изменения и выйдите из редактора. Помните, как это сделать? ... Правильный ответ:
|
||||
|
||||
- `Ctrl+O` — сохранить, `Enter` — подтвердить сохранение.
|
||||
- `Ctrl+X` — выйти.
|
||||
|
||||
4. Перезапустите SSH-сервер, чтобы изменения вступили в силу. Помните... Ладно, вот правильный ответ:
|
||||
4. Перезапустите SSH-сервер, чтобы изменения вступили в силу. Помните... Ладно, вот правильный ответ:
|
||||
|
||||
```shell
|
||||
systemctl restart ssh
|
||||
@@ -193,7 +196,7 @@
|
||||
|
||||

|
||||
|
||||
6. Теперь при попытке подключения по SSH с помощью PuTTY под пользователем `root` вы получите ошибку. Используйте имя пользователя `vpsadmin` для подключения. Для удобства вы можете указать `vpsadmin` в качестве имени пользователя по умолчанию в настройках PuTTY (не забудьте сохранить сеанс!).
|
||||
6. Теперь при попытке подключения по SSH с помощью PuTTY под пользователем `root` вы получите ошибку. Используйте имя пользователя `vpsadmin` для подключения. Для удобства вы можете указать `vpsadmin` в качестве имени пользователя по умолчанию в настройках PuTTY (не забудьте сохранить сеанс!).
|
||||
|
||||

|
||||
|
||||
@@ -201,19 +204,19 @@
|
||||
|
||||
Перейдём к третьему шагу — защите от подбора пароля.
|
||||
|
||||
Как мы уже говорили, хакеры не будут подбирать ваш пароль вручную. Они используют специальные программы и базы данных с миллионами скомпрометированных паролей. Если вы не используете случайно сгенерированный пароль достаточной длины (например, с помощью менеджера паролей, такого как 1Password или Keychain в macOS), ваш пароль могут подобрать.
|
||||
Как мы уже говорили, хакеры не будут подбирать ваш пароль вручную. Они используют специальные программы и базы данных с миллионами скомпрометированных паролей. Если вы не используете случайно сгенерированный пароль достаточной длины (например, с помощью менеджера паролей, такого как 1Password или Keychain в macOS), ваш пароль могут подобрать.
|
||||
|
||||
Конечно, можно использовать длинный и сложный пароль, но такой пароль сложно запомнить и легко ввести неправильно. Чтобы решить эту проблему, можно вообще отказаться от аутентификации по паролю и использовать более безопасный способ — аутентификацию по SSH-ключам.
|
||||
Конечно, можно использовать длинный и сложный пароль, но такой пароль сложно запомнить и легко ввести неправильно. Чтобы решить эту проблему, можно вообще отказаться от аутентификации по паролю и использовать более безопасный способ — аутентификацию по SSH-ключам.
|
||||
|
||||
**Аутентификация по SSH-ключам** основана на использовании пары связанных ключей — **публичного** и **приватного**. Публичный ключ помещается на сервер, а приватный ключ хранится у вас на компьютере. При подключении по SSH клиент предъявляет серверу публичный ключ, а сервер, в свою очередь, шифрует с помощью него случайное сообщение и отправляет клиенту. Клиент расшифровывает сообщение с помощью приватного ключа и отправляет результат обратно на сервер. Если результат совпадает с ожидаемым, аутентификация считается успешной (таким образом, вам не нужно запоминать и вводить сложный пароль, достаточно лишь защитить свой приватный ключ от кражи).
|
||||
**Аутентификация по SSH-ключам** основана на использовании пары связанных ключей — **публичного** и **приватного**. Публичный ключ помещается на сервер, а приватный ключ хранится у вас на компьютере. При подключении по SSH клиент предъявляет серверу публичный ключ, а сервер, в свою очередь, шифрует с помощью него случайное сообщение и отправляет клиенту. Клиент расшифровывает сообщение с помощью приватного ключа и отправляет результат обратно на сервер. Если результат совпадает с ожидаемым, аутентификация считается успешной (таким образом, вам не нужно запоминать и вводить сложный пароль, достаточно лишь защитить свой приватный ключ от кражи).
|
||||
|
||||
::: warning
|
||||
В этой статье мы рассмотрим использование **RSA-ключей**, поскольку они поддерживаются практически всеми SSH-клиентами и до сих пор считаются достаточно надёжными. Однако это не единственный вариант.
|
||||
В этой статье мы рассмотрим использование **RSA-ключей**, поскольку они поддерживаются практически всеми SSH-клиентами и до сих пор считаются достаточно надёжными. Однако это не единственный вариант.
|
||||
|
||||
Существуют и другие алгоритмы:
|
||||
|
||||
- **DSA**: этот алгоритм считается небезопасным, поэтому использовать его не рекомендуется.
|
||||
- **ECDSA**: этот алгоритм обеспечивает высокий уровень безопасности при меньшем размере ключа, однако существуют подозрения, что в нём есть уязвимости, которые могут быть использованы АНБ. Поэтому, если вы храните на своём сервере что-то действительно важное, лучше не использовать этот алгоритм.
|
||||
- **ECDSA**: этот алгоритм обеспечивает высокий уровень безопасности при меньшем размере ключа, однако существуют подозрения, что в нём есть уязвимости, которые могут быть использованы АНБ. Поэтому, если вы храните на своём сервере что-то действительно важное, лучше не использовать этот алгоритм.
|
||||
- **Ed25519**: этот алгоритм похож на ECDSA, но считается более безопасным, поскольку его код открыт и доступен для изучения.
|
||||
|
||||
Поэтому, если ваше оборудование и программное обеспечение поддерживают этот алгоритм, рекомендуется использовать именно его.
|
||||
@@ -221,27 +224,27 @@
|
||||
|
||||
Итак, давайте настроим аутентификацию по SSH-ключам.
|
||||
|
||||
1. Запустите программу **PuTTYgen** (генератор ключей PuTTY). Она находится в меню «Пуск» --> «Все программы» --> «PuTTY (64-bit)» --> «PuTTYgen».
|
||||
1. Запустите программу **PuTTYgen** (генератор ключей PuTTY). Она находится в меню «Пуск» --> «Все программы» --> «PuTTY (64-bit)» --> «PuTTYgen».
|
||||
|
||||
1. Нажмите кнопку **Generate**, чтобы сгенерировать ключи (поводите курсором мыши по пустому пространству окна, чтобы добавить энтропии).
|
||||
|
||||

|
||||
|
||||
::: warning
|
||||
На скриншоте показан пример генерации 2048-битного RSA-ключа. Однако для достижения уровня безопасности, со comparableного с 256-битным ключом ECDSA/Ed25519, вам нужно сгенерировать 3072-битный RSA-ключ (т.е. ввести значение `3072` в поле «Number of bits in a generated key»).
|
||||
На скриншоте показан пример генерации 2048-битного RSA-ключа. Однако для достижения уровня безопасности, со comparableного с 256-битным ключом ECDSA/Ed25519, вам нужно сгенерировать 3072-битный RSA-ключ (т.е. ввести значение `3072` в поле «Number of bits in a generated key»).
|
||||
:::
|
||||
|
||||
2. Вы можете установить пароль для защиты приватного ключа.
|
||||
3. Нажмите кнопку **Save public key**, чтобы сохранить публичный ключ в файл `id_rsa.pub`.
|
||||
4. Нажмите кнопку **Save private key**, чтобы сохранить приватный ключ в файл `id_rsa` (приватные ключи PuTTY имеют расширение `.ppk`).
|
||||
5. **Важно!** Скопируйте содержимое поля, выделенного красной рамкой (не забудьте прокрутить текст до конца!), и сохраните его в файл `authorized_keys`. (Если вы будете использовать для этого VSCode, файл будет сохранён с расширением `.txt` — `authorized_keys.txt`. Это нормально, позже мы переименуем файл).
|
||||
5. **Важно!** Скопируйте содержимое поля, выделенного красной рамкой (не забудьте прокрутить текст до конца!), и сохраните его в файл `authorized_keys`. (Если вы будете использовать для этого VSCode, файл будет сохранён с расширением `.txt` — `authorized_keys.txt`. Это нормально, позже мы переименуем файл).
|
||||
|
||||

|
||||
|
||||
2. Скопируйте публичный ключ на VPS в домашний каталог пользователя `vpsadmin`.
|
||||
|
||||
1. Для этого используйте программу **WinSCP**, которую мы установили ранее.
|
||||
2. Скачайте и установите WinSCP с [официального сайта](https://winscp.net/eng/index.php). При первом запуске программа предложит импортировать настройки из PuTTY. Согласитесь на импорт.
|
||||
2. Скачайте и установите WinSCP с [официального сайта](https://winscp.net/eng/index.php). При первом запуске программа предложит импортировать настройки из PuTTY. Согласитесь на импорт.
|
||||
|
||||

|
||||
|
||||
@@ -249,9 +252,9 @@
|
||||
|
||||

|
||||
|
||||
4. В левой части окна WinSCP отображаются файлы и папки на вашем компьютере, а в правой — на VPS. Перейдите в папку с сохранёнными ключами на вашем компьютере.
|
||||
4. В левой части окна WinSCP отображаются файлы и папки на вашем компьютере, а в правой — на VPS. Перейдите в папку с сохранёнными ключами на вашем компьютере.
|
||||
|
||||
5. В правой части окна (VPS) по умолчанию открыт каталог `/home/vpsadmin/`. Нажмите кнопку «Show hidden files» (скрытые файлы), чтобы отобразить скрытые файлы и папки.
|
||||
5. В правой части окна (VPS) по умолчанию открыт каталог `/home/vpsadmin/`. Нажмите кнопку «Show hidden files» (скрытые файлы), чтобы отобразить скрытые файлы и папки.
|
||||
|
||||

|
||||
|
||||
@@ -274,10 +277,10 @@
|
||||
3. Настройте SSH-сервер на использование ключей и отключите аутентификацию по паролю.
|
||||
|
||||
1. Базовые команды Linux:
|
||||
| Номер | Команда | Описание |
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :------ | :--------------------------------------- |
|
||||
| `cmd-08` | `sudo` | Выполнение команды от имени root |
|
||||
| `cmd-09` | `chmod` | Изменение прав доступа к файлам и папкам |
|
||||
| `cmd-08` | `sudo` | Выполнение команды от имени root |
|
||||
| `cmd-09` | `chmod` | Изменение прав доступа к файлам и папкам |
|
||||
|
||||
2. Подключитесь к VPS по SSH (PuTTY).
|
||||
|
||||
@@ -287,7 +290,7 @@
|
||||
chmod 600 ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
4. Откройте файл настроек SSH. Мы уже делали это раньше, но теперь мы работаем не под пользователем `root`, а под пользователем `vpsadmin`. У этого пользователя нет прав на редактирование системных файлов, поэтому нужно использовать команду `sudo`:
|
||||
4. Откройте файл настроек SSH. Мы уже делали это раньше, но теперь мы работаем не под пользователем `root`, а под пользователем `vpsadmin`. У этого пользователя нет прав на редактирование системных файлов, поэтому нужно использовать команду `sudo`:
|
||||
|
||||
```shell
|
||||
sudo nano /etc/ssh/sshd_config
|
||||
@@ -295,7 +298,7 @@
|
||||
|
||||
5. Найдите (`Ctrl+W`) строку `PasswordAuthentication` и измените значение на `no`.
|
||||
|
||||
6. Найдите (`Ctrl+W`) строку `PubkeyAuthentication` и измените значение на `yes`. Сохраните изменения (`Ctrl+O`) и выйдите из редактора (`Ctrl+X`).
|
||||
6. Найдите (`Ctrl+W`) строку `PubkeyAuthentication` и измените значение на `yes`. Сохраните изменения (`Ctrl+O`) и выйдите из редактора (`Ctrl+X`).
|
||||
|
||||
7. Перезапустите SSH-сервер (не забудьте, что теперь вам нужно использовать команду `sudo`):
|
||||
|
||||
@@ -311,29 +314,24 @@
|
||||
|
||||

|
||||
|
||||
5. Готово! Теперь у вас настроена аутентификация по SSH-ключам, а аутентификация по паролю отключена. Кроме того, вы сохранили имя пользователя и путь к приватному ключу в сеансе PuTTY. Теперь для подключения к VPS достаточно будет выбрать сохранённый сеанс `VPS-SERVER` и нажать кнопку «Open».
|
||||
5. Готово! Теперь у вас настроена аутентификация по SSH-ключам, а аутентификация по паролю отключена. Кроме того, вы сохранили имя пользователя и путь к приватному ключу в сеансе PuTTY. Теперь для подключения к VPS достаточно будет выбрать сохранённый сеанс `VPS-SERVER` и нажать кнопку «Open».
|
||||
|
||||
Если вы установили пароль для защиты приватного ключа, вам нужно будет ввести его при подключении, как показано на скриншоте ниже:
|
||||
|
||||

|
||||
|
||||
6. Не забудьте настроить аутентификацию по ключам и в WinSCP. В противном случае вы не сможете подключаться к серверу для передачи файлов:
|
||||
6. Не забудьте настроить аутентификацию по ключам и в WinSCP. В противном случае вы не сможете подключаться к серверу для передачи файлов:
|
||||
|
||||

|
||||
|
||||
::: warning
|
||||
Теперь для подключения к вашему серверу по SSH требуется авторизация по ключам. Мы рассмотрели настройку PuTTY и WinSCP, но существует множество других программ, которые также используют SSH. Настройте их самостоятельно при необходимости.
|
||||
Теперь для подключения к вашему серверу по SSH требуется авторизация по ключам. Мы рассмотрели настройку PuTTY и WinSCP, но существует множество других программ, которые также используют SSH. Настройте их самостоятельно при необходимости.
|
||||
:::
|
||||
|
||||
## 4.8 Ваш прогресс
|
||||
|
||||
На этом этапе ваш VPS защищён базовыми мерами безопасности. Конечно, это не панацея, но большинство автоматизированных атак вам уже не страшны!
|
||||
На этом этапе ваш VPS защищён базовыми мерами безопасности. Конечно, это не панацея, но большинство автоматизированных атак вам уже не страшны!
|
||||
|
||||
Теперь у нас есть надёжный фундамент, и в следующей главе мы можем приступить к установке и настройке необходимых компонентов Xray (а именно, веб-сервера и SSL-сертификата).
|
||||
|
||||
> ⬛⬛⬛⬛⬜⬜⬜⬜ 50%
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
## 5.1 Зачем нужен веб-сайт?
|
||||
|
||||
Начинающие пользователи могут задаться вопросом: зачем создавать веб-сайт для обхода блокировок? Я не программист, это же сложно?
|
||||
Начинающие пользователи могут задаться вопросом: зачем создавать веб-сайт для обхода блокировок? Я не программист, это же сложно?
|
||||
|
||||
Начнём с первого вопроса. Веб-сайт нужен для того, чтобы:
|
||||
Начнём с первого вопроса. Веб-сайт нужен для того, чтобы:
|
||||
|
||||
1. Получить действующий SSL-сертификат (это очень важно).
|
||||
2. Обеспечить маскировку трафика (fallback) и защититься от атак, направленных на выявление VPN-серверов.
|
||||
@@ -12,29 +12,32 @@
|
||||
|
||||
Теперь ответим на второй вопрос:
|
||||
|
||||
1. В этой статье мы создадим максимально простой веб-сайт, состоящий из **одного HTML-файла** и работающий на веб-сервере **Nginx**, чтобы решить поставленные выше задачи. Это очень просто.
|
||||
2. Этот веб-сайт не обязательно должен быть просто прикрытием. Вы можете развивать его и превратить в полноценный проект. Всё зависит от ваших желаний и возможностей.
|
||||
3. Создание сайта-прикрытия и его продвижение — это отдельная большая тема, которая выходит за рамки этой статьи. Если вам интересно, вы можете найти информацию об этом в интернете.
|
||||
1. В этой статье мы создадим максимально простой веб-сайт, состоящий из **одного HTML-файла** и работающий на веб-сервере **Nginx**, чтобы решить поставленные выше задачи. Это очень просто.
|
||||
2. Этот веб-сайт не обязательно должен быть просто прикрытием. Вы можете развивать его и превратить в полноценный проект. Всё зависит от ваших желаний и возможностей.
|
||||
3. Создание сайта-прикрытия и его продвижение — это отдельная большая тема, которая выходит за рамки этой статьи. Если вам интересно, вы можете найти информацию об этом в интернете.
|
||||
|
||||
## 5.2 Подключение к VPS и установка Nginx
|
||||
|
||||
1. В этом разделе мы будем использовать команды, которые уже были подробно рассмотрены ранее. Если вы что-то не понимаете, вернитесь и перечитайте предыдущие главы.
|
||||
1. В этом разделе мы будем использовать команды, которые уже были подробно рассмотрены ранее. Если вы что-то не понимаете, вернитесь и перечитайте предыдущие главы.
|
||||
|
||||
```shell
|
||||
sudo apt update && sudo apt install nginx
|
||||
```
|
||||
|
||||
2. После завершения установки Nginx запустится автоматически. Откройте браузер на своём компьютере и введите адрес `http://100.200.300.400:80`. Если вы увидите страницу, как на скриншоте ниже, значит, Nginx работает.
|
||||
2. После завершения установки Nginx запустится автоматически. Откройте браузер на своём компьютере и введите адрес `http://100.200.300.400:80`. Если вы увидите страницу, как на скриншоте ниже, значит, Nginx работает.
|
||||
|
||||

|
||||
|
||||
3. Если вы не видите страницу Nginx, возможно, вам нужно настроить Uncomplicated Firewall (UFW), стандартный брандмауэр в Debian, чтобы разрешить трафик на портах HTTP (80) и HTTPS (443).
|
||||
|
||||
a. Чтобы проверить, введите:
|
||||
|
||||
```shell
|
||||
sudo ufw status
|
||||
```
|
||||
b. Если вывод команды такой, как показано ниже, это означает, что порты 80 и 443 закрыты. Выполните действия, описанные в пункте c.
|
||||
|
||||
b. Если вывод команды такой, как показано ниже, это означает, что порты 80 и 443 закрыты. Выполните действия, описанные в пункте c.
|
||||
|
||||
```shell
|
||||
Status: active
|
||||
To Action From
|
||||
@@ -42,11 +45,15 @@
|
||||
22/tcp ALLOW Anywhere
|
||||
22/tcp (v6) ALLOW Anywhere (v6)
|
||||
```
|
||||
|
||||
c. Чтобы открыть порты 80 и 443 для Nginx в UFW, выполните команду:
|
||||
|
||||
```shell
|
||||
sudo ufw allow 'Nginx Full'
|
||||
```
|
||||
d. Снова проверьте статус UFW, выполнив команду из пункта a. Если вы видите вывод, как показано ниже, значит, трафик для Nginx разрешён, и вы должны увидеть стандартную страницу Nginx.
|
||||
|
||||
d. Снова проверьте статус UFW, выполнив команду из пункта a. Если вы видите вывод, как показано ниже, значит, трафик для Nginx разрешён, и вы должны увидеть стандартную страницу Nginx.
|
||||
|
||||
```shell
|
||||
Status: active
|
||||
To Action From
|
||||
@@ -60,15 +67,15 @@
|
||||
## 5.3 Создание простой веб-страницы
|
||||
|
||||
1. Базовые команды Linux:
|
||||
| Номер | Команда | Описание |
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :-------- | :------------------------ |
|
||||
| `cmd-10` | `mkdir` | Создание папки |
|
||||
| `cmd-11` | `systemctl reload` | Перезагрузка службы |
|
||||
| `cmd-10` | `mkdir` | Создание папки |
|
||||
| `cmd-11` | `systemctl reload` | Перезагрузка службы |
|
||||
|
||||
2. Важные файлы конфигурации Linux:
|
||||
| Номер | Путь к файлу | Описание |
|
||||
| Номер | Путь к файлу | Описание |
|
||||
| :------ | :-------------------- | :------------------------- |
|
||||
| `conf-02` | `/etc/nginx/nginx.conf` | Настройки Nginx |
|
||||
| `conf-02` | `/etc/nginx/nginx.conf` | Настройки Nginx |
|
||||
|
||||
3. Создайте папку `/home/vpsadmin/www/webpage/` для вашего сайта и файл `index.html` внутри неё:
|
||||
```shell
|
||||
@@ -137,7 +144,7 @@
|
||||
sudo nano /etc/nginx/nginx.conf
|
||||
```
|
||||
|
||||
2. Добавьте следующий блок кода внутрь блока `http{}` и сохраните изменения (`Ctrl+O`, `Enter`), затем выйдите из редактора (`Ctrl+X`). (Не забудьте заменить доменное имя на ваше реальное доменное имя, включая поддомен).
|
||||
2. Добавьте следующий блок кода внутрь блока `http{}` и сохраните изменения (`Ctrl+O`, `Enter`), затем выйдите из редактора (`Ctrl+X`). (Не забудьте заменить доменное имя на ваше реальное доменное имя, включая поддомен).
|
||||
|
||||
```
|
||||
server {
|
||||
@@ -168,11 +175,11 @@
|
||||
|
||||
## 5.4 Распространённые ошибки
|
||||
|
||||
Вообще, если вы внимательно следовали инструкциям, ошибок быть не должно. Однако на этом этапе многие пользователи сталкиваются с проблемами. В чём же дело? Ответ прост: **невнимательность**. Здесь возможны только две ошибки, и обе они связаны с невнимательностью.
|
||||
Вообще, если вы внимательно следовали инструкциям, ошибок быть не должно. Однако на этом этапе многие пользователи сталкиваются с проблемами. В чём же дело? Ответ прост: **невнимательность**. Здесь возможны только две ошибки, и обе они связаны с невнимательностью.
|
||||
|
||||
**Ошибки:**
|
||||
|
||||
- Путь `/home/vpsadmin/www/webpage` в файле `nginx.conf` не соответствует реальному пути к файлу `index.html`. Nginx не может найти файл.
|
||||
- Путь `/home/vpsadmin/www/webpage` в файле `nginx.conf` не соответствует реальному пути к файлу `index.html`. Nginx не может найти файл.
|
||||
- Путь указан верно, но у Nginx нет прав на чтение файла.
|
||||
|
||||
**Причины:**
|
||||
@@ -183,13 +190,13 @@
|
||||
Если у вас возникли проблемы, вернитесь к разделу 5.3 и внимательно перечитайте пункты 3 и 6.2.
|
||||
|
||||
::: warning
|
||||
В предыдущих главах мы много говорили о важности использования пользователя, отличного от `root`, и вся статья написана с учётом этого. Поэтому проблемы, связанные с использованием `root`, не рассматриваются в рамках этой статьи.
|
||||
В предыдущих главах мы много говорили о важности использования пользователя, отличного от `root`, и вся статья написана с учётом этого. Поэтому проблемы, связанные с использованием `root`, не рассматриваются в рамках этой статьи.
|
||||
|
||||
Однако я уверен, что те, кто всё-таки работает под `root`, достаточно опытны и смогут решить эти проблемы самостоятельно.
|
||||
:::
|
||||
|
||||
## 5.5 Ваш прогресс
|
||||
|
||||
Первый компонент Xray — веб-сайт — готов. Давайте перейдём ко второму компоненту — SSL-сертификату!
|
||||
Первый компонент Xray — веб-сайт — готов. Давайте перейдём ко второму компоненту — SSL-сертификату!
|
||||
|
||||
> ⬛⬛⬛⬛⬛⬜⬜⬜ 62.5%
|
||||
> ⬛⬛⬛⬛⬛⬜⬜⬜ 62.5%
|
||||
|
||||
@@ -2,23 +2,23 @@
|
||||
|
||||
## 6.1 Получение SSL-сертификата
|
||||
|
||||
Теперь нам нужно получить действующий SSL-сертификат для нашего доменного имени, чтобы веб-сайт работал по протоколу HTTPS. Это важнейший инструмент для обеспечения безопасности трафика при использовании современных VPN-сервисов, таких как Xray.
|
||||
Теперь нам нужно получить действующий SSL-сертификат для нашего доменного имени, чтобы веб-сайт работал по протоколу HTTPS. Это важнейший инструмент для обеспечения безопасности трафика при использовании современных VPN-сервисов, таких как Xray.
|
||||
|
||||
::: warning
|
||||
Не используйте самоподписанные сертификаты. Это ненамного упростит задачу, но создаст дополнительные риски (например, возможность атак типа «человек посередине»).
|
||||
Не используйте самоподписанные сертификаты. Это ненамного упростит задачу, но создаст дополнительные риски (например, возможность атак типа «человек посередине»).
|
||||
:::
|
||||
|
||||
Мы будем использовать инструмент для управления сертификатами [`acme.sh`](https://github.com/acmesh-official/acme.sh). Он простой, лёгкий, эффективный и умеет автоматически обновлять сертификаты.
|
||||
Мы будем использовать инструмент для управления сертификатами [`acme.sh`](https://github.com/acmesh-official/acme.sh). Он простой, лёгкий, эффективный и умеет автоматически обновлять сертификаты.
|
||||
|
||||
Я уверен, что вы уже освоились с базовыми командами Linux, поэтому скриншоты с выводом команд, которые мы уже использовали ранее, будут опущены. Если вы забыли, как выполнять ту или иную команду, вернитесь и перечитайте предыдущие главы.
|
||||
Я уверен, что вы уже освоились с базовыми командами Linux, поэтому скриншоты с выводом команд, которые мы уже использовали ранее, будут опущены. Если вы забыли, как выполнять ту или иную команду, вернитесь и перечитайте предыдущие главы.
|
||||
|
||||
## 6.2 Установка `acme.sh`
|
||||
|
||||
1. Базовые команды Linux:
|
||||
| Номер | Команда | Описание |
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :---------- | :---------------------------- |
|
||||
| `cmd-12` | `wget` | Загрузка файла из интернета |
|
||||
| `cmd-13` | `acme.sh` | Управление сертификатами |
|
||||
| `cmd-12` | `wget` | Загрузка файла из интернета |
|
||||
| `cmd-13` | `acme.sh` | Управление сертификатами |
|
||||
|
||||
2. Запустите скрипт установки:
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
## 6.3 Тестовый запрос сертификата
|
||||
|
||||
Перед тем, как запросить настоящий сертификат, давайте сделаем тестовый запрос (`--issue --test`), чтобы убедиться, что всё настроено правильно. Это позволит избежать превышения лимита на количество запросов Let's Encrypt (например, не более 5 неудачных запросов в час для одного домена и одного аккаунта).
|
||||
Перед тем, как запросить настоящий сертификат, давайте сделаем тестовый запрос (`--issue --test`), чтобы убедиться, что всё настроено правильно. Это позволит избежать превышения лимита на количество запросов Let's Encrypt (например, не более 5 неудачных запросов в час для одного домена и одного аккаунта).
|
||||
|
||||
1. Команда для тестового запроса сертификата (в этой статье мы будем использовать сертификаты **ECC**, поскольку на сегодняшний день нет причин не использовать их):
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
```
|
||||
|
||||
::: warning Пояснение
|
||||
Главное преимущество **ECC-сертификатов** — это меньший размер ключа, что означает более высокий уровень безопасности при том же размере ключа, а также более высокую скорость шифрования и расшифровки. Например, ECC-256 обеспечивает уровень безопасности, примерно соответствующий RSA-3072, так зачем же отказываться от ECC? Некоторые утверждают, что рукопожатие TLS с ECC-сертификатами происходит заметно быстрее. Я считаю, что это преувеличение. RSA-рукопожатие и так достаточно быстрое, а разница в скорости, если она и есть, составляет всего несколько миллисекунд и практически незаметна.
|
||||
Главное преимущество **ECC-сертификатов** — это меньший размер ключа, что означает более высокий уровень безопасности при том же размере ключа, а также более высокую скорость шифрования и расшифровки. Например, ECC-256 обеспечивает уровень безопасности, примерно соответствующий RSA-3072, так зачем же отказываться от ECC? Некоторые утверждают, что рукопожатие TLS с ECC-сертификатами происходит заметно быстрее. Я считаю, что это преувеличение. RSA-рукопожатие и так достаточно быстрое, а разница в скорости, если она и есть, составляет всего несколько миллисекунд и практически незаметна.
|
||||
|
||||
Конечно, если вам нужно обеспечить совместимость с очень старыми устройствами, то можно использовать и RSA-сертификат.
|
||||
:::
|
||||
@@ -113,7 +113,7 @@
|
||||
[Wed 30 Dec 2022 15:21:52 AM EST] And the full chain certs is there: /home/vpsadmin/.acme.sh/поддомен.ваш_домен.com_ecc/fullchain.cer
|
||||
```
|
||||
|
||||
3. Обратите внимание, что мы запросили тестовый сертификат, который нельзя использовать в реальной среде. Он нужен только для проверки корректности настроек. Если вы посмотрите на вывод команды, то увидите, что сертификат был выпущен сервером `https://acme-staging-v02.api.letsencrypt.org`. Слово `staging` означает, что это тестовый сервер Let's Encrypt.
|
||||
3. Обратите внимание, что мы запросили тестовый сертификат, который нельзя использовать в реальной среде. Он нужен только для проверки корректности настроек. Если вы посмотрите на вывод команды, то увидите, что сертификат был выпущен сервером `https://acme-staging-v02.api.letsencrypt.org`. Слово `staging` означает, что это тестовый сервер Let's Encrypt.
|
||||
|
||||
4. Если на этом этапе возникли ошибки, выполните следующую команду, чтобы увидеть подробную информацию о процессе запроса сертификата:
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
```
|
||||
|
||||
::: warning Пояснение
|
||||
Параметр `--force` используется для принудительного обновления сертификата до истечения срока действия старого. В предыдущем шаге мы получили тестовый сертификат, который всё ещё действителен. Поэтому нам нужно использовать этот параметр.
|
||||
Параметр `--force` используется для принудительного обновления сертификата до истечения срока действия старого. В предыдущем шаге мы получили тестовый сертификат, который всё ещё действителен. Поэтому нам нужно использовать этот параметр.
|
||||
:::
|
||||
|
||||
2. В случае успеха вы увидите примерно такой же вывод, как и в предыдущем шаге:
|
||||
@@ -207,10 +207,6 @@
|
||||
|
||||
## 6.6 Ваш прогресс
|
||||
|
||||
Наконец-то все необходимые компоненты Xray готовы! Мы подошли к самому интересному — установке и настройке самого Xray!
|
||||
Наконец-то все необходимые компоненты Xray готовы! Мы подошли к самому интересному — установке и настройке самого Xray!
|
||||
|
||||
> ⬛⬛⬛⬛⬛⬛⬜⬜ 75%
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
## 7.2 Установка Xray
|
||||
|
||||
Xray основан на проекте с открытым исходным кодом [xray-core](https://github.com/XTLS/Xray-core) (лицензия `MPL 2.0`). Запущенный на сервере, скомпилированный бинарный файл этого проекта, работает как серверная часть Xray; запущенный на локальном компьютере, он становится клиентской частью. Основное различие заключается в **конфигурации**.
|
||||
Xray основан на проекте с открытым исходным кодом [xray-core](https://github.com/XTLS/Xray-core) (лицензия `MPL 2.0`). Запущенный на сервере, скомпилированный бинарный файл этого проекта, работает как серверная часть Xray; запущенный на локальном компьютере, он становится клиентской частью. Основное различие заключается в **конфигурации**.
|
||||
|
||||
Для установки воспользуемся официальным скриптом. Он предлагает несколько вариантов установки. Вы можете ознакомиться с ними в [репозитории скриптов](https://github.com/XTLS/Xray-install). **В данном руководстве мы будем использовать установку от имени непривилегированного пользователя**.
|
||||
|
||||
@@ -27,9 +27,9 @@ Xray основан на проекте с открытым исходным к
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :--------: | :-------------- |
|
||||
| `cmd-14` | `rm` | Удаление файлов |
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :-----: | :-------------- |
|
||||
| `cmd-14` | `rm` | Удаление файлов |
|
||||
|
||||
2. Скачиваем установочный скрипт:
|
||||
|
||||
@@ -89,8 +89,8 @@ Xray основан на проекте с открытым исходным к
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :----------: | :------------------------------------ |
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :----------: | :------------------------------------------- |
|
||||
| `cmd-15` | `crontab -e` | Редактирование crontab текущего пользователя |
|
||||
|
||||
2. Создаём файл скрипта (`xray-cert-renew.sh`):
|
||||
@@ -157,9 +157,9 @@ Xray основан на проекте с открытым исходным к
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :-----: | :---------------------- |
|
||||
| `cmd-16` | `touch` | Создание пустого файла |
|
||||
| Номер | Команда | Описание |
|
||||
| :------: | :-----: | :--------------------- |
|
||||
| `cmd-16` | `touch` | Создание пустого файла |
|
||||
|
||||
2. Создаём папку для логов в домашней директории пользователя `vpsadmin`:
|
||||
|
||||
@@ -571,4 +571,4 @@ Xray основан на проекте с открытым исходным к
|
||||
|
||||
Затронутые разделы:
|
||||
|
||||
- 7.8 Оптимизация сервера: автоматическое перенаправление HTTP на HTTPS - 4. Добавляем новый сервер, который будет прослушивать локальный порт и отдавать файлы сайта.
|
||||
- 7.8 Оптимизация сервера: автоматическое перенаправление HTTP на HTTPS - 4. Добавляем новый сервер, который будет прослушивать локальный порт и отдавать файлы сайта.
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
|
||||
2. Поступивший на клиент трафик обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`) клиента `Xray`, например:
|
||||
|
||||
- Трафик на китайские ресурсы — напрямую (`direct`)
|
||||
- Трафик на зарубежные ресурсы — через VPS (`proxy`)
|
||||
- Рекламный трафик — блокируется (`block`)
|
||||
- Трафик на китайские ресурсы — напрямую (`direct`)
|
||||
- Трафик на зарубежные ресурсы — через VPS (`proxy`)
|
||||
- Рекламный трафик — блокируется (`block`)
|
||||
|
||||
3. Трафик на зарубежные ресурсы, перенаправленный на VPS, проходит через Великий Китайский Файрвол и попадает на **входящее подключение** (`inbounds`) сервера `Xray`.
|
||||
|
||||
4. Как и на клиенте, трафик, поступивший на сервер, обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`):
|
||||
|
||||
- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (`direct`).
|
||||
- При необходимости можно настроить перенаправление трафика на другие VPS (`proxy`).
|
||||
- На сервере также можно блокировать нежелательный трафик, например, рекламу или торренты (`block`).
|
||||
- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (`direct`).
|
||||
- При необходимости можно настроить перенаправление трафика на другие VPS (`proxy`).
|
||||
- На сервере также можно блокировать нежелательный трафик, например, рекламу или торренты (`block`).
|
||||
|
||||
:::warning Внимание!
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
|
||||
Набор параметров подключения в `Xray` зависит от используемого [протокола](../../config/inbounds/). В главе 7 мы настроили сервер на использование протокола `VLESS` с шифрованием `XTLS`. Посмотрим на файл конфигурации сервера, чтобы узнать, какие параметры нужны для подключения:
|
||||
|
||||
- **Адрес сервера**: `sub.yourdomain.com`
|
||||
- **Порт сервера**: `443`
|
||||
- **Протокол**: `vless`
|
||||
- **Поток**: `xtls-rprx-vision` (режим `vision` подходит для всех платформ)
|
||||
- **Идентификатор**: `uuiduuid-uuid-uuid-uuid-uuiduuiduuid`
|
||||
- **Безопасность**: `"allowInsecure": false`
|
||||
- **Адрес сервера**: `sub.yourdomain.com`
|
||||
- **Порт сервера**: `443`
|
||||
- **Протокол**: `vless`
|
||||
- **Поток**: `xtls-rprx-vision` (режим `vision` подходит для всех платформ)
|
||||
- **Идентификатор**: `uuiduuid-uuid-uuid-uuid-uuiduuiduuid`
|
||||
- **Безопасность**: `"allowInsecure": false`
|
||||
|
||||
Ниже приведен список популярных клиентов Xray для мобильных и настольных устройств. Каждый клиент имеет свой собственный интерфейс, поэтому я не буду делать скриншоты для каждого из них. Внимательно изучите документацию к выбранному клиенту и укажите нужные параметры подключения.
|
||||
|
||||
@@ -53,33 +53,33 @@
|
||||
Многие клиенты поддерживают как `xray-core`, так и `v2fly-core`. Но по умолчанию может использоваться не тот, который вам нужен. Убедитесь, что вы выбрали нужный инструмент!
|
||||
:::
|
||||
|
||||
- **v2rayN - для Windows**
|
||||
- **v2rayN - для Windows**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayN/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayN/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **v2rayNG - для Android**
|
||||
- **v2rayNG - для Android**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayNG/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayNG/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **Shadowrocket - для iOS, macOS на базе Apple M1**
|
||||
- **Shadowrocket - для iOS, macOS на базе Apple M1**
|
||||
|
||||
- Создайте учётную запись iCloud **не** в китайском регионе
|
||||
- Купите приложение в App Store
|
||||
- Настройте клиент в соответствии с документацией
|
||||
- Создайте учётную запись iCloud **не** в китайском регионе
|
||||
- Купите приложение в App Store
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **Qv2ray - кроссплатформенный графический интерфейс для Linux, Windows, macOS**
|
||||
- **Qv2ray - кроссплатформенный графический интерфейс для Linux, Windows, macOS**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/Qv2ray/Qv2ray/releases) (или более новую версию из раздела [сборок на GitHub](https://github.com/Qv2ray/Qv2ray/actions))
|
||||
- Изучите документацию на [сайте проекта](https://qv2ray.net/)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/Qv2ray/Qv2ray/releases) (или более новую версию из раздела [сборок на GitHub](https://github.com/Qv2ray/Qv2ray/actions))
|
||||
- Изучите документацию на [сайте проекта](https://qv2ray.net/)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **V2RayXS - клиент для macOS, основанный на V2RayX и использующий xray-core**
|
||||
- **V2RayXS - клиент для macOS, основанный на V2RayX и использующий xray-core**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/tzmax/v2rayXS/releases)
|
||||
- Поддерживает импорт ссылок на конфигурации VLESS / VMessAEAD по стандарту, предложенному в [этой задаче](https://github.com/XTLS/Xray-core/issues/91)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/tzmax/v2rayXS/releases)
|
||||
- Поддерживает импорт ссылок на конфигурации VLESS / VMessAEAD по стандарту, предложенному в [этой задаче](https://github.com/XTLS/Xray-core/issues/91)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
На этом этапе ваша система готова к работе!
|
||||
|
||||
@@ -89,9 +89,9 @@
|
||||
|
||||
Чтобы ответить на этот вопрос, я добавил этот раздел с дополнительным заданием. Оно немного выходит за рамки основного материала и может показаться сложным, но у него есть свои преимущества:
|
||||
|
||||
- Вы всегда будете использовать самую последнюю версию `xray-core`, не дожидаясь, пока разработчики клиентов выпустят обновления.
|
||||
- Вы получите максимальную гибкость в настройке маршрутизации (хотя стоит отметить, что Qv2ray имеет мощный редактор маршрутизации, который позволяет настраивать все функции `xray-core`).
|
||||
- Вы сэкономите системные ресурсы (графические клиенты всегда потребляют больше ресурсов, чем консольные).
|
||||
- Вы всегда будете использовать самую последнюю версию `xray-core`, не дожидаясь, пока разработчики клиентов выпустят обновления.
|
||||
- Вы получите максимальную гибкость в настройке маршрутизации (хотя стоит отметить, что Qv2ray имеет мощный редактор маршрутизации, который позволяет настраивать все функции `xray-core`).
|
||||
- Вы сэкономите системные ресурсы (графические клиенты всегда потребляют больше ресурсов, чем консольные).
|
||||
|
||||
Недостаток этого способа заключается в том, что вам придётся **настраивать клиент вручную, редактируя файл конфигурации**. Но ведь на сервере вы уже делали это, так что ничего сложного здесь нет. Давайте разберёмся по шагам:
|
||||
|
||||
@@ -100,11 +100,11 @@
|
||||
3. Что значит "удобное место"? Это зависит от платформы.
|
||||
4. Заполните файл конфигурации.
|
||||
|
||||
- Я написал пример конфигурации, основанный на схеме из раздела 8.1 (прямое подключение к китайским ресурсам, проксирование трафика на зарубежные ресурсы через VPS, блокировка рекламы) и параметрах подключения из раздела 8.2.
|
||||
- Замените `uuid` на идентификатор из вашей конфигурации сервера.
|
||||
- Замените `address` на доменное имя вашего сервера.
|
||||
- Замените `serverName` на доменное имя вашего сервера.
|
||||
- Я добавил подробные комментарии к каждому разделу конфигурации.
|
||||
- Я написал пример конфигурации, основанный на схеме из раздела 8.1 (прямое подключение к китайским ресурсам, проксирование трафика на зарубежные ресурсы через VPS, блокировка рекламы) и параметрах подключения из раздела 8.2.
|
||||
- Замените `uuid` на идентификатор из вашей конфигурации сервера.
|
||||
- Замените `address` на доменное имя вашего сервера.
|
||||
- Замените `serverName` на доменное имя вашего сервера.
|
||||
- Я добавил подробные комментарии к каждому разделу конфигурации.
|
||||
|
||||
```json
|
||||
// ССЫЛКИ:
|
||||
|
||||
@@ -2,45 +2,45 @@
|
||||
|
||||
## 1. Индекс основных команд Linux для начинающих
|
||||
|
||||
| Номер | Название команды | Описание команды | Глава |
|
||||
| :------: | :------------------ | :--------------------------- | :----------------------------------------: |
|
||||
| `cmd-01` | `apt update` | Обновление списка пакетов | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `cmd-02` | `apt upgrade` | Обновление пакетов системы | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `cmd-03` | `nano` | Текстовый редактор | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-04` | `systemctl restart` | Перезапуск сервиса | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-05` | `adduser` | Добавление пользователя | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-06` | `apt install` | Установка пакета | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-07` | `visudo` | Редактор для настройки sudo | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-08` | `sudo` | Выполнение команды от имени root | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-09` | `chmod` | Изменение прав доступа к файлу/папке | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-10` | `mkdir` | Создание папки | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `cmd-11` | `systemctl reload` | Перезагрузка конфигурации сервиса | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `cmd-12` | `wget` | Загрузка файла/страницы из сети | [Глава об управлении сертификатами](./ch06-certificates.md) |
|
||||
| `cmd-13` | `acme.sh` | Управление сертификатами с помощью acme.sh | [Глава об управлении сертификатами](./ch06-certificates.md) |
|
||||
| `cmd-14` | `rm` | Удаление файлов/папок | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-15` | `crontab -e` | Редактирование crontab текущего пользователя | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-16` | `touch` | Создание пустого файла | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-17` | `systemctl` | Базовые команды управления сервисами systemd | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-18` | `reboot` | Перезагрузка Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| Номер | Название команды | Описание команды | Глава |
|
||||
| :------: | :------------------ | :------------------------------------------- | :---------------------------------------------------------: |
|
||||
| `cmd-01` | `apt update` | Обновление списка пакетов | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `cmd-02` | `apt upgrade` | Обновление пакетов системы | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `cmd-03` | `nano` | Текстовый редактор | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-04` | `systemctl restart` | Перезапуск сервиса | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-05` | `adduser` | Добавление пользователя | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-06` | `apt install` | Установка пакета | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-07` | `visudo` | Редактор для настройки sudo | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-08` | `sudo` | Выполнение команды от имени root | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-09` | `chmod` | Изменение прав доступа к файлу/папке | [Глава о безопасности](./ch04-security.md) |
|
||||
| `cmd-10` | `mkdir` | Создание папки | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `cmd-11` | `systemctl reload` | Перезагрузка конфигурации сервиса | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `cmd-12` | `wget` | Загрузка файла/страницы из сети | [Глава об управлении сертификатами](./ch06-certificates.md) |
|
||||
| `cmd-13` | `acme.sh` | Управление сертификатами с помощью acme.sh | [Глава об управлении сертификатами](./ch06-certificates.md) |
|
||||
| `cmd-14` | `rm` | Удаление файлов/папок | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-15` | `crontab -e` | Редактирование crontab текущего пользователя | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-16` | `touch` | Создание пустого файла | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-17` | `systemctl` | Базовые команды управления сервисами systemd | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `cmd-18` | `reboot` | Перезагрузка Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
|
||||
## 2. Индекс важных конфигурационных файлов Linux
|
||||
|
||||
| Номер | Расположение файла | Описание файла | Глава |
|
||||
| :-------: | :-------------------------------------- | :----------------------------- | :----------------------------------------: |
|
||||
| `conf-01` | `/etc/ssh/sshd_config` | Конфигурация SSH сервера | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `conf-02` | `/etc/nginx/nginx.conf` | Конфигурация Nginx | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `conf-03` | `/etc/apt/sources.list` | Список репозиториев APT | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-04` | `/etc/apt/sources.list.d/vpsadmin.list` | Список пользовательских репозиториев APT | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-05` | `crontab -e` | Crontab текущего пользователя | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-06` | `/etc/sysctl.conf` | Настройки ядра Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-07` | `/etc/sysctl.d/vpsadmin.conf` | Пользовательские настройки ядра Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| Номер | Расположение файла | Описание файла | Глава |
|
||||
| :-------: | :-------------------------------------- | :--------------------------------------- | :--------------------------------------------: |
|
||||
| `conf-01` | `/etc/ssh/sshd_config` | Конфигурация SSH сервера | [Глава о удаленном подключении](./ch03-ssh.md) |
|
||||
| `conf-02` | `/etc/nginx/nginx.conf` | Конфигурация Nginx | [Глава о создании сайта](./ch05-webpage.md) |
|
||||
| `conf-03` | `/etc/apt/sources.list` | Список репозиториев APT | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-04` | `/etc/apt/sources.list.d/vpsadmin.list` | Список пользовательских репозиториев APT | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-05` | `crontab -e` | Crontab текущего пользователя | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-06` | `/etc/sysctl.conf` | Настройки ядра Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `conf-07` | `/etc/sysctl.d/vpsadmin.conf` | Пользовательские настройки ядра Linux | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
|
||||
## 3. Индекс важных файлов Xray
|
||||
|
||||
| Номер | Расположение файла | Описание файла | Глава |
|
||||
| :-------: | :----------------------------------- | :------------ | :----------------------------------------: |
|
||||
| `xray-01` | `/usr/local/etc/xray/config.json` | Конфигурация Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-02` | `/home/vpsadmin/xray_cert/xray.cert` | TLS сертификат | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-03` | `/home/vpsadmin/xray_cert/xray.key` | TLS ключ | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-04` | `/home/vpsadmin/xray_log/access.log` | Лог доступа Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-05` | `/home/vpsadmin/xray_log/error.log` | Лог ошибок Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| Номер | Расположение файла | Описание файла | Глава |
|
||||
| :-------: | :----------------------------------- | :---------------- | :-------------------------------------------: |
|
||||
| `xray-01` | `/usr/local/etc/xray/config.json` | Конфигурация Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-02` | `/home/vpsadmin/xray_cert/xray.cert` | TLS сертификат | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-03` | `/home/vpsadmin/xray_cert/xray.key` | TLS ключ | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-04` | `/home/vpsadmin/xray_log/access.log` | Лог доступа Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
| `xray-05` | `/home/vpsadmin/xray_log/error.log` | Лог ошибок Xray | [Глава о Xray сервере](./ch07-xray-server.md) |
|
||||
|
||||
@@ -33,33 +33,33 @@
|
||||
|
||||
Как объяснить этот фрагмент конфигурации простыми словами?
|
||||
|
||||
1. **`Xray` прослушивает порт `[inbound port]` `443`**
|
||||
1. **`Xray` прослушивает порт `[inbound port]` `443`**
|
||||
|
||||
Это означает, что `Xray` отвечает за прослушивание трафика `HTTPS` на порту `443`.
|
||||
Это означает, что `Xray` отвечает за прослушивание трафика `HTTPS` на порту `443`.
|
||||
|
||||
2. **`Xray` использует протокол `[inbound protocol]` `vless`**
|
||||
2. **`Xray` использует протокол `[inbound protocol]` `vless`**
|
||||
|
||||
Только трафик протокола `vless` будет обрабатываться `Xray` и перенаправляться на исходящие модули.
|
||||
Только трафик протокола `vless` будет обрабатываться `Xray` и перенаправляться на исходящие модули.
|
||||
|
||||
::: warning
|
||||
**Примечание:** Легковесный протокол `VLESS` был разработан с целью добавления функции fallback в `xray`, `v2fly` и другие ядра, а также для уменьшения избыточных проверок/шифрования. (Конечно, на данный момент протокол `trojan` в `xray` также полностью поддерживает функцию fallback.)
|
||||
:::
|
||||
::: warning
|
||||
**Примечание:** Легковесный протокол `VLESS` был разработан с целью добавления функции fallback в `xray`, `v2fly` и другие ядра, а также для уменьшения избыточных проверок/шифрования. (Конечно, на данный момент протокол `trojan` в `xray` также полностью поддерживает функцию fallback.)
|
||||
:::
|
||||
|
||||
3. **Целевой порт fallback `[fallback dest]` - `8080`**
|
||||
3. **Целевой порт fallback `[fallback dest]` - `8080`**
|
||||
|
||||
После того, как `Xray` получает входящий трафик на порт `443`, трафик протокола `vless` обрабатывается внутренне и перенаправляется на исходящий модуль. Другой трафик, не относящийся к протоколу `vless`, перенаправляется на порт `8080`.
|
||||
После того, как `Xray` получает входящий трафик на порт `443`, трафик протокола `vless` обрабатывается внутренне и перенаправляется на исходящий модуль. Другой трафик, не относящийся к протоколу `vless`, перенаправляется на порт `8080`.
|
||||
|
||||
::: warning
|
||||
**Вопрос:** Использовать единственное или множественное число?
|
||||
::: warning
|
||||
**Вопрос:** Использовать единственное или множественное число?
|
||||
|
||||
Ответ: Внимательные читатели, должно быть, заметили, что в файле конфигурации используются множественные числа `inbounds`, `fallbacks`, но почему я использую единственное число: `inbound`, `fallback`?
|
||||
Ответ: Внимательные читатели, должно быть, заметили, что в файле конфигурации используются множественные числа `inbounds`, `fallbacks`, но почему я использую единственное число: `inbound`, `fallback`?
|
||||
|
||||
Потому что множественное число в файле конфигурации означает, что `xray` поддерживает N элементов одного уровня (т.е. N входящих, M резервных и т.д.), а в приведенном выше примере анализа используется только один, поэтому я использовал единственное число.
|
||||
:::
|
||||
Потому что множественное число в файле конфигурации означает, что `xray` поддерживает N элементов одного уровня (т.е. N входящих, M резервных и т.д.), а в приведенном выше примере анализа используется только один, поэтому я использовал единственное число.
|
||||
:::
|
||||
|
||||
4. **Трафик, перенаправляемый на порт `8080`, обрабатывается последующей программой**
|
||||
|
||||
В нашем примере порт `8080` обрабатывается `Nginx`, который находит и отображает страницу с маленькой пандой в соответствии с конфигурацией.
|
||||
В нашем примере порт `8080` обрабатывается `Nginx`, который находит и отображает страницу с маленькой пандой в соответствии с конфигурацией.
|
||||
|
||||
5. **В итоге, полный маршрут данных в нашем примере выглядит следующим образом:**
|
||||
|
||||
@@ -101,29 +101,29 @@
|
||||
Интерпретировать ответы сервера можно потому, что полный запрос данных на самом деле состоит из множества этапов обмена данными, и на каждом этапе генерируются определенные характеристики программного обеспечения. Проще говоря:
|
||||
|
||||
- Ответ обычного сайта **обязательно будет** содержать характеристики таких инструментов веб-сервиса и базы данных, как `Nginx`, `Apache`, `MySQL` и т.д.
|
||||
- Ответ обычного сайта **не будет** содержать характеристики таких прокси-инструментов, как `xray`, `v2fly`, `shadowsocks` и т.д.
|
||||
- Ответ обычного сайта **не будет** содержать характеристики таких прокси-инструментов, как `xray`, `v2fly`, `shadowsocks` и т.д.
|
||||
|
||||
Таким образом, когда мы предоставляем `Xray` функцию **"fallback"** (как в приведенном выше примере, fallback на `Nginx`), любой запрос, используемый для зондирования, приводит к следующему:
|
||||
Таким образом, когда мы предоставляем `Xray` функцию **"fallback"** (как в приведенном выше примере, fallback на `Nginx`), любой запрос, используемый для зондирования, приводит к следующему:
|
||||
|
||||
- Зондирующий трафик не может получить доступ к вашим параметрам `VLESS` и поэтому будет перенаправлен на `Nginx`.
|
||||
- Зондирующий трафик не может получить доступ к вашим параметрам `VLESS` и поэтому будет перенаправлен на `Nginx`.
|
||||
- Весь зондирующий трафик перенаправляется на `Nginx`, поэтому ответ VPS-сервера **обязательно будет** содержать характеристики `Nginx`.
|
||||
- Поскольку сам `Xray` не отвечает на зондирующий трафик, ответ VPS **не будет** содержать характеристики `Xray`.
|
||||
- Поскольку сам `Xray` не отвечает на зондирующий трафик, ответ VPS **не будет** содержать характеристики `Xray`.
|
||||
|
||||
Таким образом, функция **"fallback"** решает проблему безопасности **активного зондирования** сервера с точки зрения логики взаимодействия данных.
|
||||
Таким образом, функция **"fallback"** решает проблему безопасности **активного зондирования** сервера с точки зрения логики взаимодействия данных.
|
||||
|
||||
## 4. Полное понимание Fallback (ЧТО, ЗАЧЕМ, КАК `v2`)
|
||||
|
||||
Почему нужно снова говорить о fallback? Потому что выше мы рассмотрели только первую версию fallback, основанную на "протоколе" и защите от **активного зондирования**.
|
||||
|
||||
В процессе постоянного развития и обновления протокола `VLESS` и функции `fallback` командой [RPRX](https://github.com/rprx) постепенно выяснилось, что fallback может быть более гибким и мощным. При условии обеспечения защиты от **активного зондирования** можно в полной мере использовать информацию, содержащуюся в первом пакете данных, для реализации многоэлементного и многоуровневого fallback (например, `path`, `alpn` и т.д.).
|
||||
В процессе постоянного развития и обновления протокола `VLESS` и функции `fallback` командой [RPRX](https://github.com/rprx) постепенно выяснилось, что fallback может быть более гибким и мощным. При условии обеспечения защиты от **активного зондирования** можно в полной мере использовать информацию, содержащуюся в первом пакете данных, для реализации многоэлементного и многоуровневого fallback (например, `path`, `alpn` и т.д.).
|
||||
|
||||
Основываясь на этой концепции разработки, функция **"fallback"** постепенно превратилась в то, чем она является сейчас, - в механизм, реализующий **полную маскировку --> ws-разделение --> многопротокольное и многопараметрическое разделение**. Финальная версия даже полностью заменила функцию разделения, которую раньше выполняли веб-серверы и другие инструменты. А поскольку описанная выше обработка **"fallback/разделения"** выполняется на этапе определения первого пакета за миллисекунды и не связана с какими-либо операциями с данными, она практически не приводит к потерям производительности.
|
||||
Основываясь на этой концепции разработки, функция **"fallback"** постепенно превратилась в то, чем она является сейчас, - в механизм, реализующий **полную маскировку --> ws-разделение --> многопротокольное и многопараметрическое разделение**. Финальная версия даже полностью заменила функцию разделения, которую раньше выполняли веб-серверы и другие инструменты. А поскольку описанная выше обработка **"fallback/разделения"** выполняется на этапе определения первого пакета за миллисекунды и не связана с какими-либо операциями с данными, она практически не приводит к потерям производительности.
|
||||
|
||||
**Таким образом, сейчас **полноценная функция "fallback" в `Xray`** обладает следующими свойствами:**
|
||||
|
||||
- **Безопасность:** полная защита от атак активного зондирования.
|
||||
- **Эффективность:** практически полное отсутствие потерь производительности.
|
||||
- **Гибкость:** гибкое разделение данных, повторное использование часто используемых портов (например, 443).
|
||||
- **Безопасность:** полная защита от атак активного зондирования.
|
||||
- **Эффективность:** практически полное отсутствие потерь производительности.
|
||||
- **Гибкость:** гибкое разделение данных, повторное использование часто используемых портов (например, 443).
|
||||
|
||||
::: tip
|
||||
Хотя такой подробный подход может показаться несколько утомительным, только он позволяет в полной мере раскрыть уникальные преимущества **полноценного "fallback"**.
|
||||
@@ -189,22 +189,22 @@
|
||||
|
||||
Как объяснить этот фрагмент конфигурации простыми словами?
|
||||
|
||||
1. **`Xray` прослушивает порт (`inbound port`) `443`**
|
||||
1. **`Xray` прослушивает порт (`inbound port`) `443`**
|
||||
|
||||
Это означает, что `Xray` отвечает за прослушивание трафика `HTTPS` на порту `443` и использует сертификат `TLS`, указанный в `certificates`, для аутентификации.
|
||||
Это означает, что `Xray` отвечает за прослушивание трафика `HTTPS` на порту `443` и использует сертификат `TLS`, указанный в `certificates`, для аутентификации.
|
||||
|
||||
2. **`Xray` использует протокол (`inbound protocol`) `vless`**
|
||||
2. **`Xray` использует протокол (`inbound protocol`) `vless`**
|
||||
|
||||
Трафик протокола `vless` напрямую передается в `Xray` для дальнейшей обработки.
|
||||
Трафик протокола `vless` напрямую передается в `Xray` для дальнейшей обработки.
|
||||
|
||||
3. **Трафик, не относящийся к протоколу `VLESS`, перенаправляется на 4 различных порта fallback:**
|
||||
|
||||
1. Трафик с `path`, равным `websocket`, перенаправляется на порт `1234` для дальнейшей обработки.
|
||||
2. Трафик с `path`, равным `vmesstcp`, перенаправляется на порт `2345` для дальнейшей обработки.
|
||||
3. Трафик с `path`, равным `vmessws`, перенаправляется на порт `3456` для дальнейшей обработки.
|
||||
4. Весь остальной трафик перенаправляется на порт `1310` для дальнейшей обработки.
|
||||
1. Трафик с `path`, равным `websocket`, перенаправляется на порт `1234` для дальнейшей обработки.
|
||||
2. Трафик с `path`, равным `vmesstcp`, перенаправляется на порт `2345` для дальнейшей обработки.
|
||||
3. Трафик с `path`, равным `vmessws`, перенаправляется на порт `3456` для дальнейшей обработки.
|
||||
4. Весь остальной трафик перенаправляется на порт `1310` для дальнейшей обработки.
|
||||
|
||||
4. **`xver`, равный `1`, означает, что функция `proxy protocol` включена, и реальный IP-адрес источника будет передан дальше.**
|
||||
4. **`xver`, равный `1`, означает, что функция `proxy protocol` включена, и реальный IP-адрес источника будет передан дальше.**
|
||||
|
||||
5. **Структура fallback показана на рисунке ниже:**
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
6. **Куда делся fallback на веб-страницу?**
|
||||
|
||||
Верно, внимательные читатели должны были заметить, что `fallback на nginx`, защищающий от **активного зондирования**, исчез!!! Почему? Не опасно ли это? Не волнуйтесь, давайте разбираться дальше:
|
||||
Верно, внимательные читатели должны были заметить, что `fallback на nginx`, защищающий от **активного зондирования**, исчез!!! Почему? Не опасно ли это? Не волнуйтесь, давайте разбираться дальше:
|
||||
|
||||
### 5.2 Фрагмент конфигурации, отвечающий за обработку fallback:
|
||||
|
||||
@@ -259,10 +259,10 @@
|
||||
}
|
||||
```
|
||||
|
||||
Смотрите, произошло чудо, в протоколе `trojan` появился новый `fallbacks`. Как уже говорилось ранее, протокол `trojan` в `xray` также обладает полной функциональностью fallback, поэтому на этом этапе протокол `trojan` может снова выполнять проверку и fallback (это и есть легендарный "fallback в fallback"):
|
||||
Смотрите, произошло чудо, в протоколе `trojan` появился новый `fallbacks`. Как уже говорилось ранее, протокол `trojan` в `xray` также обладает полной функциональностью fallback, поэтому на этом этапе протокол `trojan` может снова выполнять проверку и fallback (это и есть легендарный "fallback в fallback"):
|
||||
|
||||
- Весь трафик протокола `trojan` передается в `Xray` для дальнейшей обработки.
|
||||
- Весь остальной трафик перенаправляется на порт `80`. **Защита от активного зондирования** реализована!
|
||||
- Весь трафик протокола `trojan` передается в `Xray` для дальнейшей обработки.
|
||||
- Весь остальной трафик перенаправляется на порт `80`. **Защита от активного зондирования** реализована!
|
||||
|
||||
2. Трафик, перенаправляемый на порт `1234`, на самом деле является `vless+ws`:
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
|
||||
## 6. Заключение
|
||||
|
||||
На этом обзор функции **"fallback"** в `Xray` завершен. Надеемся, что эта статья поможет вам лучше понять возможности `Xray`.
|
||||
На этом обзор функции **"fallback"** в `Xray` завершен. Надеемся, что эта статья поможет вам лучше понять возможности `Xray`.
|
||||
|
||||
## 7. Дополнительное задание
|
||||
|
||||
|
||||
@@ -329,5 +329,3 @@ http://blog.example.com:5002 {
|
||||
[^2]: [Proxy Protocol - HAProxy Technologies](https://www.haproxy.com/blog/haproxy/proxy-protocol/)
|
||||
[^3]: [proxy protocol 介绍及 nginx 配置 - 简书](https://www.jianshu.com/p/cc8d592582c9)
|
||||
[^4]: [v2fly-github-io/vless.md at master · rprx/v2fly-github-io](https://github.com/rprx/v2fly-github-io/blob/master/docs/config/protocols/vless.md)
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
Поскольку маршрутизация очень гибкая, чтение только технической документации может вас запутать, поэтому в этой статье мы будем использовать конкретные примеры, чтобы объяснить все пошагово.
|
||||
|
||||
::: warning
|
||||
::: warning
|
||||
Функция маршрутизации настолько гибкая, что примеры в этой статье приведены только для объяснения соответствующих концепций. На практике, пожалуйста, корректируйте их в соответствии с вашими потребностями.
|
||||
:::
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
**Входящий трафик (inbound):** это то, как трафик попадает в `Xray`.
|
||||
:::
|
||||
|
||||
Пример конфигурации входящего трафика ниже означает, что данные поступают в `Xray` по протоколу `socks` через порт `10808` с локального адреса `127.0.0.1`. `Xray` присваивает этому входящему трафику имя `inbound-10808` с помощью `[tag]`.
|
||||
Пример конфигурации входящего трафика ниже означает, что данные поступают в `Xray` по протоколу `socks` через порт `10808` с локального адреса `127.0.0.1`. `Xray` присваивает этому входящему трафику имя `inbound-10808` с помощью `[tag]`.
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -73,7 +73,7 @@
|
||||
**Исходящий трафик (outbound):** это то, как трафик выходит из `Xray`.
|
||||
:::
|
||||
|
||||
Пример конфигурации исходящего трафика ниже означает, что данные отправляются на соответствующий VPS по протоколу `VLESS` с использованием `tcp + xtls` и других параметров. `Xray` присваивает этому исходящему трафику имя `proxy-out-vless` с помощью `[tag]`.
|
||||
Пример конфигурации исходящего трафика ниже означает, что данные отправляются на соответствующий VPS по протоколу `VLESS` с использованием `tcp + xtls` и других параметров. `Xray` присваивает этому исходящему трафику имя `proxy-out-vless` с помощью `[tag]`.
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -117,7 +117,7 @@
|
||||
**Маршрутизация (routing):** это соединение канала между **входящим** и **исходящим** трафиком с помощью определенного **условия**.
|
||||
:::
|
||||
|
||||
Пример конфигурации маршрутизации ниже означает, что весь трафик, поступающий в `Xray` через входящий трафик с `[tag]="inbound-10808"`, **на 100%** перенаправляется на исходящий трафик с `[tag]="proxy-out-vless"` без разделения или каких-либо других действий.
|
||||
Пример конфигурации маршрутизации ниже означает, что весь трафик, поступающий в `Xray` через входящий трафик с `[tag]="inbound-10808"`, **на 100%** перенаправляется на исходящий трафик с `[tag]="proxy-out-vless"` без разделения или каких-либо других действий.
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -134,7 +134,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
Таким образом, мы реализовали очень простое правило, описанное в начале: **входящий трафик от приложения поступает на `Xray` на клиенте, маршрутизируется на исходящий трафик и отправляется на VPS**.
|
||||
Таким образом, мы реализовали очень простое правило, описанное в начале: **входящий трафик от приложения поступает на `Xray` на клиенте, маршрутизируется на исходящий трафик и отправляется на VPS**.
|
||||
|
||||
### 2.4 Анализ параметров конфигурации маршрутизации: критерии фильтрации трафика
|
||||
|
||||
@@ -146,16 +146,16 @@
|
||||
4. `"inboundTag": ["inbound-10808"]`
|
||||
5. `"outboundTag": "proxy-out-vless"`
|
||||
|
||||
Пока оставим `domainStrategy` в стороне и кратко объясним остальные:
|
||||
Пока оставим `domainStrategy` в стороне и кратко объясним остальные:
|
||||
|
||||
| Название параметра | Значение параметра | Описание параметра |
|
||||
| :---------------- | :----------------- | :------------------ |
|
||||
| `“rules”` | | Внутри этого параметра находятся подробные настройки **правил маршрутизации**. |
|
||||
| `"type"` | `"field"` | На данный момент этот параметр не имеет особого значения, но его нельзя опускать, поэтому просто укажите его. |
|
||||
| `"inboundTag"` | `["inbound-10808"]` | **Критерий** фильтрации трафика - это **тег входящего трафика**, а **условие** сейчас только одно: **источник входящего трафика - `inbound-10808`**. |
|
||||
| `"outboundTag"` | `"proxy-out-vless"` | Если указанное выше условие фильтрации выполняется (т.е. входящий трафик имеет `[tag]="inbound-10808"`), `Xray` направит трафик на исходящий трафик с `[tag]="proxy-out-vless"`. |
|
||||
| Название параметра | Значение параметра | Описание параметра |
|
||||
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `“rules”` | | Внутри этого параметра находятся подробные настройки **правил маршрутизации**. |
|
||||
| `"type"` | `"field"` | На данный момент этот параметр не имеет особого значения, но его нельзя опускать, поэтому просто укажите его. |
|
||||
| `"inboundTag"` | `["inbound-10808"]` | **Критерий** фильтрации трафика - это **тег входящего трафика**, а **условие** сейчас только одно: **источник входящего трафика - `inbound-10808`**. |
|
||||
| `"outboundTag"` | `"proxy-out-vless"` | Если указанное выше условие фильтрации выполняется (т.е. входящий трафик имеет `[tag]="inbound-10808"`), `Xray` направит трафик на исходящий трафик с `[tag]="proxy-out-vless"`. |
|
||||
|
||||
В этом примере у нас есть только один входящий трафик с `"inboundTag" = "inbound-10808"` и один исходящий трафик с `[tag]="proxy-out-vless"`. Поэтому, согласно приведенному выше правилу маршрутизации, весь трафик, поступающий в `Xray` через порт `10808`, **на 100%** соответствует условиям фильтрации, выбирается модулем маршрутизации и перенаправляется на единственный исходящий трафик.
|
||||
В этом примере у нас есть только один входящий трафик с `"inboundTag" = "inbound-10808"` и один исходящий трафик с `[tag]="proxy-out-vless"`. Поэтому, согласно приведенному выше правилу маршрутизации, весь трафик, поступающий в `Xray` через порт `10808`, **на 100%** соответствует условиям фильтрации, выбирается модулем маршрутизации и перенаправляется на единственный исходящий трафик.
|
||||
|
||||
Таким образом, **входящий трафик**, **маршрутизация** и **исходящий трафик** уже могут работать вместе. Конечно, в данном случае 100% перенаправление не имеет особого смысла. Давайте посмотрим, какие преимущества может дать такой механизм разделения труда.
|
||||
|
||||
@@ -229,8 +229,8 @@
|
||||
Приведенная выше конфигурация означает:
|
||||
|
||||
1. Конфигурация исходящего трафика `[proxy-out-vless]` из предыдущего примера остается без изменений.
|
||||
2. Добавлен протокол **`blackhole` (черная дыра)**. Трафик, отправляемый через этот протокол, попадает в "черную дыру" внутри `Xray` и не может выйти наружу, что фактически блокирует его (`[block]`).
|
||||
3. Добавлен протокол **`freedom` (свобода)**. Трафик, отправляемый через этот протокол, свободно покидает `Xray` и следует к своему первоначальному адресу, как будто его и не было, что фактически означает прямое подключение (`[direct]`). (Здесь я назвал его `[direct-out]`, чтобы подчеркнуть, что это исходящий трафик).
|
||||
2. Добавлен протокол **`blackhole` (черная дыра)**. Трафик, отправляемый через этот протокол, попадает в "черную дыру" внутри `Xray` и не может выйти наружу, что фактически блокирует его (`[block]`).
|
||||
3. Добавлен протокол **`freedom` (свобода)**. Трафик, отправляемый через этот протокол, свободно покидает `Xray` и следует к своему первоначальному адресу, как будто его и не было, что фактически означает прямое подключение (`[direct]`). (Здесь я назвал его `[direct-out]`, чтобы подчеркнуть, что это исходящий трафик).
|
||||
|
||||
### 3.3 Маршрутизация
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
На самом деле, вы, вероятно, уже догадались по названиям этих параметров:
|
||||
|
||||
- `"domain"`: **критерий** фильтрации трафика в этот раз - это **доменное имя** (а не тег входящего трафика).
|
||||
- `"geosite"`: `Xray` будет искать **соответствующие доменные имена** в файле `geosite.dat`.
|
||||
- `"geosite"`: `Xray` будет искать **соответствующие доменные имена** в файле `geosite.dat`.
|
||||
- `"category-ads-all"`: **все рекламные домены**, указанные в этом файле.
|
||||
- `"cn"`: **китайские домены**, указанные в этом файле.
|
||||
- `"geolocation-!cn"`: **не китайские домены**, указанные в этом файле.
|
||||
@@ -296,14 +296,14 @@
|
||||
Такая модульная структура обеспечивает гораздо большую гибкость, чем традиционный список заблокированных доменов [`GFWList`](https://github.com/gfwlist/gfwlist). Например, вы можете указать, что домены Apple (`geosite:apple`) и домены, связанные с iCloud (`geosite:icloud`), должны проксироваться (`[proxy]`), а домены обновлений Apple (`geosite:apple-update`) должны подключаться напрямую (`[direct]`) для максимальной скорости загрузки.
|
||||
|
||||
::: warning
|
||||
**Внимание:** на данный момент существует несколько вариантов файла `geosite.dat`:
|
||||
**Внимание:** на данный момент существует несколько вариантов файла `geosite.dat`:
|
||||
|
||||
- Изначально, когда `Victoria Raymond` активно занималась проектом `Project V`, она предоставляла соответствующий проект [`domain-list-community`](https://github.com/v2ray/domain-list-community), который использовался для сбора, хранения и классификации часто используемых типов доменов.
|
||||
- После того, как Виктория внезапно исчезла, и разработка `Project V` приостановилась, сообщество `v2fly` продолжило поддерживать и обновлять свою версию [`domain-list-community`](https://github.com/v2fly/domain-list-community).
|
||||
- Изначально, когда `Victoria Raymond` активно занималась проектом `Project V`, она предоставляла соответствующий проект [`domain-list-community`](https://github.com/v2ray/domain-list-community), который использовался для сбора, хранения и классификации часто используемых типов доменов.
|
||||
- После того, как Виктория внезапно исчезла, и разработка `Project V` приостановилась, сообщество `v2fly` продолжило поддерживать и обновлять свою версию [`domain-list-community`](https://github.com/v2fly/domain-list-community).
|
||||
- В то же время [@Loyalsoldier](Loyalsoldier) ведет свой собственный, модифицированный и расширенный файл правил маршрутизации [v2ray-rules-dat](https://github.com/Loyalsoldier/v2ray-rules-dat), который предлагает множество различных вариантов и логики классификации.
|
||||
- Кроме того, команда `Project X` планирует в будущем создать и поддерживать файл правил маршрутизации [Xray-rules-dat](https://github.com/XTLS/Xray-rules-dat), который будет лучше подходить для использования с `Xray`. ~~(Как видите, папка уже создана, так что это дело времени)~~
|
||||
- Кроме того, команда `Project X` планирует в будущем создать и поддерживать файл правил маршрутизации [Xray-rules-dat](https://github.com/XTLS/Xray-rules-dat), который будет лучше подходить для использования с `Xray`. ~~(Как видите, папка уже создана, так что это дело времени)~~
|
||||
|
||||
Вы даже можете создать свой собственный файл `geosite` и подключить его к `Xray`, но это выходит за рамки данной статьи, поэтому мы не будем на этом останавливаться.
|
||||
Вы даже можете создать свой собственный файл `geosite` и подключить его к `Xray`, но это выходит за рамки данной статьи, поэтому мы не будем на этом останавливаться.
|
||||
|
||||
Если вы обнаружите, что некоторые домены не классифицированы должным образом, пожалуйста, создайте issue или отправьте pull request в один из перечисленных выше проектов! Поддерживайте сообщество - каждый за всех, и все за одного!
|
||||
|
||||
@@ -311,19 +311,19 @@
|
||||
|
||||
### 3.6 Секретное оружие: скрытое правило маршрутизации
|
||||
|
||||
На самом деле, если вы внимательно посмотрите на приведенные выше правила, то заметите одну проблему: все наши правила определяют только то, **куда** следует перенаправлять входящий трафик, **если он соответствует определенному условию**. Но что произойдет, если файл `geosite.dat` неполный, и наш входящий трафик **не соответствует ни одному условию**? Как поступит `Xray`?
|
||||
На самом деле, если вы внимательно посмотрите на приведенные выше правила, то заметите одну проблему: все наши правила определяют только то, **куда** следует перенаправлять входящий трафик, **если он соответствует определенному условию**. Но что произойдет, если файл `geosite.dat` неполный, и наш входящий трафик **не соответствует ни одному условию**? Как поступит `Xray`?
|
||||
|
||||
::: warning Внимание
|
||||
Если вы думаете, что **если условие не выполняется, то соединение не будет установлено**, то вам нужно подумать еще раз. Соединение будет разорвано только в том случае, если указано правило `[block]`, которое перенаправляет трафик в "черную дыру" (`blackhole`).
|
||||
:::
|
||||
|
||||
На самом деле, чтобы избежать путаницы из-за неполных правил маршрутизации, `Xray` предоставляет скрытое правило: **если входящий трафик не соответствует ни одному условию, он перенаправляется на первый исходящий трафик**.
|
||||
На самом деле, чтобы избежать путаницы из-за неполных правил маршрутизации, `Xray` предоставляет скрытое правило: **если входящий трафик не соответствует ни одному условию, он перенаправляется на первый исходящий трафик**.
|
||||
|
||||
Таким образом, ни один трафик не будет потерян. Поэтому важно поместить ваш самый надежный исходящий трафик на **первое место**, чтобы он служил вам верным стражем.
|
||||
|
||||
### 3.7 Снова смотрим на карту "трех царств"
|
||||
|
||||
Поскольку в предыдущем примере мы поместили `[proxy-out-vless]` на первое место в списке исходящего трафика, при срабатывании скрытого правила трафик будет перенаправляться на удаленный VPS по протоколу `VLESS`. Таким образом, полная логика работы `Xray` выглядит следующим образом:
|
||||
Поскольку в предыдущем примере мы поместили `[proxy-out-vless]` на первое место в списке исходящего трафика, при срабатывании скрытого правила трафик будет перенаправляться на удаленный VPS по протоколу `VLESS`. Таким образом, полная логика работы `Xray` выглядит следующим образом:
|
||||
|
||||
```mermaid
|
||||
graph LR;
|
||||
@@ -359,7 +359,7 @@
|
||||
|
||||
Теперь, когда вы знаете о скрытом правиле маршрутизации по умолчанию (**"если входящий трафик не соответствует ни одному условию, он перенаправляется на первый исходящий трафик"**), вы должны понимать, что то, будет ли **проксирование** или **прямое подключение** основным режимом работы, зависит от того, какой исходящий трафик стоит на первом месте!
|
||||
|
||||
На предыдущем шаге мы настроили правило **"проксирование по умолчанию, прямой доступ к внутренним сайтам по белому списку"**. Теперь, чтобы получить правило **"прямое подключение по умолчанию, проксирование иностранных сайтов по белому списку"**, нам просто нужно **поместить правило прямого подключения на первое место**.
|
||||
На предыдущем шаге мы настроили правило **"проксирование по умолчанию, прямой доступ к внутренним сайтам по белому списку"**. Теперь, чтобы получить правило **"прямое подключение по умолчанию, проксирование иностранных сайтов по белому списку"**, нам просто нужно **поместить правило прямого подключения на первое место**.
|
||||
|
||||
Это очень просто, не правда ли?
|
||||
|
||||
@@ -413,7 +413,7 @@
|
||||
|
||||
В этом и заключается гибкость функции маршрутизации - вы можете свободно менять порядок правил для достижения различных результатов.
|
||||
|
||||
На этом мы закончили объяснение того, **как использовать файл `geosite.dat` для разделения сетевого трафика по доменному имени с помощью правил маршрутизации**.
|
||||
На этом мы закончили объяснение того, **как использовать файл `geosite.dat` для разделения сетевого трафика по доменному имени с помощью правил маршрутизации**.
|
||||
|
||||
## 5. Покорение новых высот - Различные условия сопоставления маршрутов
|
||||
|
||||
|
||||
@@ -25,28 +25,28 @@
|
||||
9. Как настроить принудительное прямое подключение для торрент-трафика, который, хотя и поступает извне, может привести к блокировке VPS при проксировании?
|
||||
10. ......
|
||||
|
||||
Я говорю, что разделение по домену имеет много недостатков, потому что файл `geosite.dat` содержит только ограниченный набор часто используемых доменов. Другими словами, полагаясь только на него, мы:
|
||||
Я говорю, что разделение по домену имеет много недостатков, потому что файл `geosite.dat` содержит только ограниченный набор часто используемых доменов. Другими словами, полагаясь только на него, мы:
|
||||
|
||||
- не сможем сопоставить новые домены, которых нет в файле;
|
||||
- не сможем сопоставить правила на основе IP-адресов;
|
||||
- не сможем сопоставить правила на основе сетевых протоколов.
|
||||
|
||||
::: warning
|
||||
Давайте вспомним, что происходит, когда эти условия не выполняются? Верно, срабатывает скрытое правило маршрутизации: **трафик перенаправляется на первый исходящий трафик**. Это означает, что:
|
||||
::: warning
|
||||
Давайте вспомним, что происходит, когда эти условия не выполняются? Верно, срабатывает скрытое правило маршрутизации: **трафик перенаправляется на первый исходящий трафик**. Это означает, что:
|
||||
|
||||
- если вашим первым исходящим трафиком является `[direct-out]`: **все, что должно идти напрямую, будет работать правильно, а все, что должно проксироваться, будет работать неправильно**;
|
||||
- если вашим первым исходящим трафиком является `[proxy-out-vless]`: **все, что должно проксироваться, будет работать правильно, а все, что должно идти напрямую, будет работать неправильно**.
|
||||
:::
|
||||
:::
|
||||
|
||||
Поэтому нам нужен способ, который позволит нам получить и то, и другое. Существует ли такой способ? **Конечно, существует!** Нам просто нужны дополнительные **критерии сопоставления** помимо **домена**.
|
||||
|
||||
### 5.1 Разделение по определенному домену: `[domain], [full]` и т. д.
|
||||
### 5.1 Разделение по определенному домену: `[domain], [full]` и т. д.
|
||||
|
||||
1. Для сопоставления поддомена, например `a-name.yourdomain.com`, мы используем `full: "a-name.yourdomain.com"`.
|
||||
2. **Проблемы 1** и **2**, описанные выше, можно решить, указав исходящий трафик `[proxy-out-vless]` для `proxy.yourdomain.com` и исходящий трафик `[direct-out]` для `direct.yourdomain.com`.
|
||||
3. Для сопоставления всех поддоменов `yourdomain.com` мы используем `domain: "yourdomain.com"`.
|
||||
1. Для сопоставления поддомена, например `a-name.yourdomain.com`, мы используем `full: "a-name.yourdomain.com"`.
|
||||
2. **Проблемы 1** и **2**, описанные выше, можно решить, указав исходящий трафик `[proxy-out-vless]` для `proxy.yourdomain.com` и исходящий трафик `[direct-out]` для `direct.yourdomain.com`.
|
||||
3. Для сопоставления всех поддоменов `yourdomain.com` мы используем `domain: "yourdomain.com"`.
|
||||
4. Эти два правила могут быть независимыми, чтобы настроить прямое подключение для одних поддоменов и проксирование для других.
|
||||
5. Кроме того, `[domain]` поддерживает сопоставление с помощью регулярных выражений. Подробнее см. [документацию по модулю маршрутизации](../../../config/base/routing/).
|
||||
5. Кроме того, `[domain]` поддерживает сопоставление с помощью регулярных выражений. Подробнее см. [документацию по модулю маршрутизации](../../../config/base/routing/).
|
||||
|
||||
Конфигурация выглядит следующим образом:
|
||||
|
||||
@@ -80,12 +80,11 @@
|
||||
|
||||
### 5.2 Разделение по IP-адресам из файла: `geoip.dat`
|
||||
|
||||
Подобно файлу правил `geosite.dat`, у нас есть файл правил `geoip.dat`, который предоставляет **готовый к использованию список категорий IP-адресов**, чтобы удовлетворить Ваши различные потребности.
|
||||
Подобно файлу правил `geosite.dat`, у нас есть файл правил `geoip.dat`, который предоставляет **готовый к использованию список категорий IP-адресов**, чтобы удовлетворить Ваши различные потребности.
|
||||
|
||||
|
||||
1. Чтобы решить **проблемы 3** и **4**, описанные выше, мы используем категорию `geoip:private` и указываем исходящий трафик `[direct-out]`.
|
||||
2. Чтобы решить **проблему 7**, мы используем категорию `geoip:cn` и указываем исходящий трафик `[direct-out]`.
|
||||
3. Чтобы решить **проблему 8**, мы используем скрытое правило маршрутизации, поскольку в `geoip` нет категории "не китайские IP-адреса" (потому что это равносильно сбору всех IP-адресов в мире). Другими словами, мы размещаем `[proxy-out-vless]` на первом месте в списке исходящего трафика.
|
||||
1. Чтобы решить **проблемы 3** и **4**, описанные выше, мы используем категорию `geoip:private` и указываем исходящий трафик `[direct-out]`.
|
||||
2. Чтобы решить **проблему 7**, мы используем категорию `geoip:cn` и указываем исходящий трафик `[direct-out]`.
|
||||
3. Чтобы решить **проблему 8**, мы используем скрытое правило маршрутизации, поскольку в `geoip` нет категории "не китайские IP-адреса" (потому что это равносильно сбору всех IP-адресов в мире). Другими словами, мы размещаем `[proxy-out-vless]` на первом месте в списке исходящего трафика.
|
||||
|
||||
Конфигурация выглядит следующим образом:
|
||||
|
||||
@@ -113,8 +112,8 @@
|
||||
|
||||
### 5.3 Разделение по определенному IP-адресу
|
||||
|
||||
1. Чтобы решить **проблему 5**, мы используем `ip: "223.5.5.5"` и указываем исходящий трафик `[direct-out]`.
|
||||
2. Чтобы решить **проблему 6**, мы используем `ip: "1.1.1.1"` и указываем исходящий трафик `[proxy-out-vless]`.
|
||||
1. Чтобы решить **проблему 5**, мы используем `ip: "223.5.5.5"` и указываем исходящий трафик `[direct-out]`.
|
||||
2. Чтобы решить **проблему 6**, мы используем `ip: "1.1.1.1"` и указываем исходящий трафик `[proxy-out-vless]`.
|
||||
|
||||
Конфигурация выглядит следующим образом:
|
||||
|
||||
@@ -140,12 +139,12 @@
|
||||
}
|
||||
```
|
||||
|
||||
### 5.4 Разделение по типу протокола: `[protocol]` и т. д.
|
||||
### 5.4 Разделение по типу протокола: `[protocol]` и т. д.
|
||||
|
||||
1. Чтобы решить **проблему 9**, мы используем `"protocol": ["bittorrent"]` и указываем исходящий трафик `[direct-out]`.
|
||||
1. Чтобы решить **проблему 9**, мы используем `"protocol": ["bittorrent"]` и указываем исходящий трафик `[direct-out]`.
|
||||
|
||||
::: tip
|
||||
Вам нужно включить `sniffing` во входящем прокси, чтобы использовать этот метод разделения.
|
||||
Вам нужно включить `sniffing` во входящем прокси, чтобы использовать этот метод разделения.
|
||||
:::
|
||||
|
||||
```json
|
||||
@@ -166,7 +165,7 @@
|
||||
|
||||
### 5.5 Разделение по другим критериям
|
||||
|
||||
На данный момент мы рассмотрели лишь малую часть возможностей разделения трафика **функции маршрутизации**! Она поддерживает множество других критериев сопоставления! Я перечислю их здесь:
|
||||
На данный момент мы рассмотрели лишь малую часть возможностей разделения трафика **функции маршрутизации**! Она поддерживает множество других критериев сопоставления! Я перечислю их здесь:
|
||||
|
||||
Критерии, которые мы уже рассмотрели:
|
||||
|
||||
@@ -184,7 +183,7 @@
|
||||
- `user`
|
||||
- `attrs`
|
||||
|
||||
Однако, это слишком много информации для уровня 1, поэтому, если вам нужны эти сложные критерии, пожалуйста, внимательно изучите [документацию по модулю маршрутизации](../../config/base/routing/) самостоятельно! Если у вас возникнут вопросы, задавайте их в Telegram-группе!
|
||||
Однако, это слишком много информации для уровня 1, поэтому, если вам нужны эти сложные критерии, пожалуйста, внимательно изучите [документацию по модулю маршрутизации](../../config/base/routing/) самостоятельно! Если у вас возникнут вопросы, задавайте их в Telegram-группе!
|
||||
|
||||
## 6. "Начало новой эры": обзор правил маршрутизации
|
||||
|
||||
@@ -290,11 +289,11 @@
|
||||
|
||||
```
|
||||
|
||||
Будет ли первым исходящим трафиком `[direct-out]` или `[proxy-out-vless]`, зависит от ваших потребностей.
|
||||
Будет ли первым исходящим трафиком `[direct-out]` или `[proxy-out-vless]`, зависит от ваших потребностей.
|
||||
|
||||
## 7. Распространенные ошибки в конфигурации маршрутизации
|
||||
|
||||
Обратите внимание, что каждое правило маршрутизации, которое я привел выше, имеет **только один критерий сопоставления**. Это необходимо для того, чтобы правило работало корректно. Частая ошибка новичков при настройке маршрутизации заключается в том, что они **указывют несколько критериев сопоставления в одном правиле, что делает его недействительным**.
|
||||
Обратите внимание, что каждое правило маршрутизации, которое я привел выше, имеет **только один критерий сопоставления**. Это необходимо для того, чтобы правило работало корректно. Частая ошибка новичков при настройке маршрутизации заключается в том, что они **указывют несколько критериев сопоставления в одном правиле, что делает его недействительным**.
|
||||
|
||||
Например, предположим, что нужно настроить следующее:
|
||||
|
||||
@@ -327,7 +326,7 @@
|
||||
**В одном правиле все критерии должны выполняться одновременно**, чтобы правило сработало. Логическое отношение — "**И**", а не "**ИЛИ**".
|
||||
:::
|
||||
|
||||
Другими словами, это правило означает: **`Xray` направит трафик на исходящий трафик `[direct-out]` только в том случае, если целевой адрес равен `direct.yourdomain.com` **и** `223.5.5.5` одновременно**.
|
||||
Другими словами, это правило означает: **`Xray` направит трафик на исходящий трафик `[direct-out]` только в том случае, если целевой адрес равен `direct.yourdomain.com` **и** `223.5.5.5` одновременно**.
|
||||
|
||||
Очевидно, что один адрес не может быть равен двум разным значениям одновременно, поэтому это не только невыполнимое правило, но и не имеет ничего общего с нашей первоначальной целью.
|
||||
|
||||
@@ -361,11 +360,11 @@
|
||||
|
||||
> Секретный проход для преобразования `[domain]` в `[ip]`: `domainStrategy`
|
||||
|
||||
В пункте 5.4 мы рассмотрели различные **критерии** для сопоставления трафика, среди которых были **домен** `[domain]` и **IP-адрес** `[IP]`.
|
||||
В пункте 5.4 мы рассмотрели различные **критерии** для сопоставления трафика, среди которых были **домен** `[domain]` и **IP-адрес** `[IP]`.
|
||||
|
||||
Если вы знакомы с принципами работы DNS, то знаете, что при обращении к домену `[domain]` сначала нужно отправить запрос на DNS-сервер, чтобы получить IP-адрес `[IP]`, соответствующий домену, а затем отправить фактический запрос на этот IP-адрес.
|
||||
Если вы знакомы с принципами работы DNS, то знаете, что при обращении к домену `[domain]` сначала нужно отправить запрос на DNS-сервер, чтобы получить IP-адрес `[IP]`, соответствующий домену, а затем отправить фактический запрос на этот IP-адрес.
|
||||
|
||||
Поэтому у `Xray` есть два шанса определить тип входящего запроса к домену. Использовать ли эти два шанса, решает параметр `domainStrategy`. Он имеет три значения:
|
||||
Поэтому у `Xray` есть два шанса определить тип входящего запроса к домену. Использовать ли эти два шанса, решает параметр `domainStrategy`. Он имеет три значения:
|
||||
|
||||
- `AsIs`
|
||||
- `IPIfNonMatch`
|
||||
@@ -380,10 +379,10 @@
|
||||
Проще говоря, **"сопоставлять только по домену"**.
|
||||
|
||||
::: tip
|
||||
`AsIs` на самом деле означает **"как есть, без изменений"**. Описание 🍉-sensei не совсем точное.
|
||||
`AsIs` на самом деле означает **"как есть, без изменений"**. Описание 🍉-sensei не совсем точное.
|
||||
:::
|
||||
|
||||
В этом режиме вся обработка выполняется внутри `Xray` без обмена данными с внешним миром, поэтому скорость максимальна. Стратегия обработки несопоставимых доменов также ясна: как уже говорилось ранее, они автоматически перенаправляются на первый исходящий трафик. Поэтому это **наиболее рекомендуемая стратегия** для обычного использования функции маршрутизации.
|
||||
В этом режиме вся обработка выполняется внутри `Xray` без обмена данными с внешним миром, поэтому скорость максимальна. Стратегия обработки несопоставимых доменов также ясна: как уже говорилось ранее, они автоматически перенаправляются на первый исходящий трафик. Поэтому это **наиболее рекомендуемая стратегия** для обычного использования функции маршрутизации.
|
||||
|
||||
### 8.2 Стратегия домена: `"IPIfNonMatch"`
|
||||
|
||||
@@ -391,45 +390,42 @@
|
||||
|
||||
Проще говоря, **"сначала сопоставить целевой адрес со всеми правилами, а если совпадений не найдено, то получить IP-адрес через DNS и снова сопоставить его со всеми правилами"**.
|
||||
|
||||
В этом режиме домены, не сопоставленные ни с одним правилом, будут проходить через DNS-запрос и второй этап сопоставления правил, что займет больше времени, чем в режиме `AsIs`. Поэтому это **не самая рекомендуемая стратегия**.
|
||||
В этом режиме домены, не сопоставленные ни с одним правилом, будут проходить через DNS-запрос и второй этап сопоставления правил, что займет больше времени, чем в режиме `AsIs`. Поэтому это **не самая рекомендуемая стратегия**.
|
||||
|
||||
### 8.3 Стратегия домена: `"IPOnDemand"`
|
||||
|
||||
"Demand IP" означает **"запрашивать IP-адрес"**.
|
||||
|
||||
Проще говоря, **"если в правилах маршрутизации есть правила на основе IP-адреса, то все запросы на основе домена `[domain]` будут преобразованы в IP-адреса `[IP]` и сопоставлены с правилами на основе IP-адреса"**.
|
||||
Проще говоря, **"если в правилах маршрутизации есть правила на основе IP-адреса, то все запросы на основе домена `[domain]` будут преобразованы в IP-адреса `[IP]` и сопоставлены с правилами на основе IP-адреса"**.
|
||||
|
||||
В этом режиме все запросы к доменам будут проходить через DNS-запрос, поэтому первый запрос будет медленным. Хотя благодаря механизму кэширования DNS в `Xray` последующие запросы к тому же домену будут быстрыми, в целом это **не самая рекомендуемая стратегия**.
|
||||
В этом режиме все запросы к доменам будут проходить через DNS-запрос, поэтому первый запрос будет медленным. Хотя благодаря механизму кэширования DNS в `Xray` последующие запросы к тому же домену будут быстрыми, в целом это **не самая рекомендуемая стратегия**.
|
||||
|
||||
::: warning
|
||||
`domainStrategy` действует **только для доменов**, не путайте!
|
||||
::: warning
|
||||
`domainStrategy` действует **только для доменов**, не путайте!
|
||||
:::
|
||||
|
||||
## 9. Задание для размышления
|
||||
|
||||
До сих пор мы рассматривали логику конфигурации **маршрутизации** на основе **одного входящего** и **одного исходящего** трафика.
|
||||
|
||||
Но, как вы знаете, `Xray` поддерживает несколько портов и протоколов. Что, если я спрошу вас:
|
||||
Но, как вы знаете, `Xray` поддерживает несколько портов и протоколов. Что, если я спрошу вас:
|
||||
|
||||
1. Я хочу, чтобы протокол `VLESS` перенаправлял мой обычный веб-трафик и трафик приложений на высокоскоростной сервер в США.
|
||||
2. Я хочу, чтобы протокол `trojan` перенаправлял весь мой трафик Netflix на сервер в Японии, чтобы разблокировать все аниме.
|
||||
3. Я хочу, чтобы протокол `shadowsocks` перенаправлял весь мой игровой трафик на сервер в Гонконге для минимальной задержки.
|
||||
4. Я хочу, чтобы был отдельный порт, который перенаправлял бы весь трафик `telegram` на VPS.
|
||||
1. Я хочу, чтобы протокол `VLESS` перенаправлял мой обычный веб-трафик и трафик приложений на высокоскоростной сервер в США.
|
||||
2. Я хочу, чтобы протокол `trojan` перенаправлял весь мой трафик Netflix на сервер в Японии, чтобы разблокировать все аниме.
|
||||
3. Я хочу, чтобы протокол `shadowsocks` перенаправлял весь мой игровой трафик на сервер в Гонконге для минимальной задержки.
|
||||
4. Я хочу, чтобы был отдельный порт, который перенаправлял бы весь трафик `telegram` на VPS.
|
||||
5. Я хочу, чтобы был отдельный порт, который перенаправлял бы весь торрент-трафик на мощный сервер в Европе.
|
||||
6. Я хочу......
|
||||
|
||||
Можно ли реализовать эти сценарии с помощью **функции маршрутизации**?
|
||||
|
||||
Ответ, конечно же, **да**! Однако, это выходит за рамки уровня 1, поэтому я оставлю это вам для самостоятельного изучения!
|
||||
Ответ, конечно же, **да**! Однако, это выходит за рамки уровня 1, поэтому я оставлю это вам для самостоятельного изучения!
|
||||
|
||||
## 10. Заключение
|
||||
|
||||
На этом обзор **функции маршрутизации** в `Xray` завершен. Надеюсь, эта статья помогла вам лучше понять гибкость `Xray`.
|
||||
На этом обзор **функции маршрутизации** в `Xray` завершен. Надеюсь, эта статья помогла вам лучше понять гибкость `Xray`.
|
||||
|
||||
## 11. Примечания
|
||||
|
||||
- Теперь вы можете перечитать раздел [Маршрутизация](../../config/routing.md) и посмотреть, стало ли вам что-то понятнее.
|
||||
- 🍉🍉🍉🍉🍉 :D
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ D --> F(Внутренний сайт);
|
||||
|
||||
## Принцип работы
|
||||
|
||||
Перед настройкой Xray давайте рассмотрим, как он работает. Ниже представлена схема внутреннего устройства одного процесса Xray. Несколько процессов Xray работают независимо друг от друга.
|
||||
Перед настройкой Xray давайте рассмотрим, как он работает. Ниже представлена схема внутреннего устройства одного процесса Xray. Несколько процессов Xray работают независимо друг от друга.
|
||||
|
||||
```mermaid
|
||||
graph LR;
|
||||
@@ -52,5 +52,3 @@ D --> B4(outbound);
|
||||
- Исходящее соединение отвечает за отправку данных на сервер, например, на другой Xray, работающий на другом хосте.
|
||||
- При наличии нескольких исходящих соединений можно настроить маршрутизацию (Routing) для указания, какое исходящее соединение должно использоваться для определенного типа трафика.
|
||||
- При необходимости маршрутизатор обращается к DNS для получения дополнительной информации для принятия решения.
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Продвинутая документация
|
||||
# Продвинутая документация
|
||||
|
||||
**В этом разделе представлены советы и рекомендации по использованию Xray для продвинутых пользователей. Если вы уже знакомы с Xray, то информация, представленная здесь, поможет вам использовать Xray по максимуму.**
|
||||
|
||||
@@ -33,5 +33,3 @@
|
||||
[Статистика трафика Xray](./traffic_stats.md) от <img src="https://avatars.githubusercontent.com/u/1588741?s=32" width="32" height="32" alt="a"/> [@yuhan6665](https://github.com/yuhan6665)
|
||||
|
||||
Статистика трафика и скрипты для Xray.
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: GID Прозрачное проксирование
|
||||
|
||||
# Прозрачное проксирование: Исключение трафика Xray с помощью GID
|
||||
|
||||
В существующих русскоязычных руководствах по прозрачному проксированию с использованием iptables (**[Новое руководство по V2Ray на русском языке - Прозрачное проксирование](https://guide.v2fly.org/app/transparent_proxy.html)**, **[Новое руководство по V2Ray на русском языке - Прозрачное проксирование (TPROXY)](https://guide.v2fly.org/app/tproxy.html)**, **[Руководство по настройке прозрачного проксирования (TProxy)](./tproxy)**) исключение трафика Xray осуществляется с помощью меток. Исходящий трафик Xray помечается, а затем с помощью правил iptables трафик с соответствующей меткой направляется напрямую, минуя Xray и предотвращая зацикливание.
|
||||
В существующих русскоязычных руководствах по прозрачному проксированию с использованием iptables (**[Новое руководство по V2Ray на русском языке - Прозрачное проксирование](https://guide.v2fly.org/app/transparent_proxy.html)**, **[Новое руководство по V2Ray на русском языке - Прозрачное проксирование (TPROXY)](https://guide.v2fly.org/app/tproxy.html)**, **[Руководство по настройке прозрачного проксирования (TProxy)](./tproxy)**) исключение трафика Xray осуществляется с помощью меток. Исходящий трафик Xray помечается, а затем с помощью правил iptables трафик с соответствующей меткой направляется напрямую, минуя Xray и предотвращая зацикливание.
|
||||
|
||||
У такого подхода есть несколько недостатков:
|
||||
|
||||
@@ -237,4 +237,3 @@ ip6tables -t mangle -A XRAY6_MASK -j MARK --set-mark 1
|
||||
ip6tables -t mangle -A OUTPUT -p tcp -j XRAY6_MASK
|
||||
ip6tables -t mangle -A OUTPUT -p udp -j XRAY6_MASK
|
||||
```
|
||||
|
||||
|
||||
@@ -126,10 +126,7 @@ WantedBy=multi-user.target
|
||||
},
|
||||
"sniffing": {
|
||||
"enabled": true,
|
||||
"destOverride": [
|
||||
"http",
|
||||
"tls"
|
||||
]
|
||||
"destOverride": ["http", "tls"]
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -153,12 +150,8 @@ WantedBy=multi-user.target
|
||||
"1.1.1.1",
|
||||
{
|
||||
"address": "119.29.29.29",
|
||||
"domains": [
|
||||
"geosite:cn"
|
||||
],
|
||||
"expectIP": [
|
||||
"geoip:cn"
|
||||
]
|
||||
"domains": ["geosite:cn"],
|
||||
"expectIP": ["geoip:cn"]
|
||||
}
|
||||
],
|
||||
"disableFallback": true,
|
||||
@@ -175,10 +168,7 @@ WantedBy=multi-user.target
|
||||
},
|
||||
"sniffing": {
|
||||
"enabled": true,
|
||||
"destOverride": [
|
||||
"http",
|
||||
"tls"
|
||||
]
|
||||
"destOverride": ["http", "tls"]
|
||||
},
|
||||
"streamSettings": {
|
||||
"sockopt": {
|
||||
@@ -194,10 +184,7 @@ WantedBy=multi-user.target
|
||||
"protocol": "http",
|
||||
"sniffing": {
|
||||
"enabled": true,
|
||||
"destOverride": [
|
||||
"http",
|
||||
"tls"
|
||||
]
|
||||
"destOverride": ["http", "tls"]
|
||||
}
|
||||
}
|
||||
],
|
||||
@@ -251,9 +238,7 @@ WantedBy=multi-user.target
|
||||
"rules": [
|
||||
{
|
||||
"type": "field",
|
||||
"domain": [
|
||||
"geosite:category-ads-all"
|
||||
],
|
||||
"domain": ["geosite:category-ads-all"],
|
||||
"outboundTag": "block"
|
||||
},
|
||||
{
|
||||
@@ -264,37 +249,27 @@ WantedBy=multi-user.target
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"ip": [
|
||||
"1.1.1.1"
|
||||
],
|
||||
"ip": ["1.1.1.1"],
|
||||
"outboundTag": "proxy"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"domain": [
|
||||
"geosite:cn"
|
||||
],
|
||||
"domain": ["geosite:cn"],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"protocol": [
|
||||
"bittorrent"
|
||||
],
|
||||
"protocol": ["bittorrent"],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"ip": ["geoip:private"],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"inboundTag": [
|
||||
"tproxy-in"
|
||||
],
|
||||
"inboundTag": ["tproxy-in"],
|
||||
"outboundTag": "nginxtls"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -8,11 +8,11 @@ title: Перенаправление исходящего трафика
|
||||
|
||||
## Введение
|
||||
|
||||
Я видел много прокси-серверов или VPN, которые перехватывают весь трафик, что приводит к неработоспособности Xray, если он установлен одновременно с ними. Многие руководства, которые я находил, предлагали решать эту проблему путем разделения трафика на основе таблиц маршрутизации CIDR. Это не очень элегантно, и если я хочу иметь возможность гибко переключаться между маршрутами и реализовывать разделение трафика по требованию, то есть ли лучший способ? Да, есть!
|
||||
Я видел много прокси-серверов или VPN, которые перехватывают весь трафик, что приводит к неработоспособности Xray, если он установлен одновременно с ними. Многие руководства, которые я находил, предлагали решать эту проблему путем разделения трафика на основе таблиц маршрутизации CIDR. Это не очень элегантно, и если я хочу иметь возможность гибко переключаться между маршрутами и реализовывать разделение трафика по требованию, то есть ли лучший способ? Да, есть!
|
||||
|
||||
С помощью fwmark или sendThrough/sockopt.interface в Xray и простой настройки таблицы маршрутизации можно добиться следующего:
|
||||
|
||||
1. Xray может направлять трафик с определенным тегом, доменным именем и т.д. через определенный интерфейс. Если ваш интерфейс поддерживает dual-stack, вы можете указать IPv4 или IPv6.
|
||||
1. Xray может направлять трафик с определенным тегом, доменным именем и т.д. через определенный интерфейс. Если ваш интерфейс поддерживает dual-stack, вы можете указать IPv4 или IPv6.
|
||||
2. Остальной трафик будет идти через исходный интерфейс IPv4 или IPv6.
|
||||
|
||||
Вот как это настроить (на примере Debian 10):
|
||||
@@ -40,6 +40,7 @@ Endpoint = <EndpointIP>:<Port>
|
||||
```
|
||||
|
||||
Добавьте следующие строки в раздел `[Interface]`:
|
||||
|
||||
```ini
|
||||
Table = <table>
|
||||
### fwmark
|
||||
@@ -58,13 +59,14 @@ PostDown = ip rule del oif %i lookup <table>
|
||||
PreUp = ip -6 rule add oif %i lookup <table>
|
||||
PostDown = ip -6 rule del oif %i lookup <table>
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
||||
- В этом конфигурационном файле объединены `fwmark`, `sendThrough` и `sockopt.interface`.
|
||||
- Подключения, поступающие на этот интерфейс `%i`, с этого IP-адреса `<IPv4/6>` или помеченные `fwmark` как `<mark>`,
|
||||
- Подключения, поступающие на этот интерфейс `%i`, с этого IP-адреса `<IPv4/6>` или помеченные `fwmark` как `<mark>`,
|
||||
- будут перенаправлены через WireGuard.
|
||||
- `%i` - это заполнитель в конфигурационном файле WireGuard, который будет заменен на имя интерфейса во время запуска.
|
||||
:::
|
||||
|
||||
:::
|
||||
|
||||
Сохраните файл.
|
||||
|
||||
@@ -238,9 +240,8 @@ systemctl start wg-quick@wg0
|
||||
|
||||
## Послесловие
|
||||
|
||||
Цель этой статьи - показать, как избежать ненужных затрат трафика, переложив функции маршрутизации и разделения трафика на Xray. Это позволяет избежать утомительной работы по обслуживанию таблиц маршрутизации и повышает технический уровень.
|
||||
Цель этой статьи - показать, как избежать ненужных затрат трафика, переложив функции маршрутизации и разделения трафика на Xray. Это позволяет избежать утомительной работы по обслуживанию таблиц маршрутизации и повышает технический уровень.
|
||||
|
||||
## Благодарности
|
||||
|
||||
[XTLS/Xray-core](https://github.com/XTLS/Xray-core); [v2fly/v2ray-core](https://github.com/v2fly/v2ray-core); [WireGuard](https://www.wireguard.com/); [@p3terx](https://p3terx.com/); @w; @Hiram; @Luminous; @Ln; @JackChou;
|
||||
|
||||
|
||||
@@ -6,16 +6,16 @@ title: Прозрачное проксирование TProxy
|
||||
|
||||
Эта конфигурация основана на [Новом руководстве по V2Ray на русском языке - Прозрачное проксирование (TPROXY)](https://guide.v2fly.org/app/tproxy.html) с добавлением новых функций Xray, использованием схемы VLESS + XTLS Vision и изменением режима разделения трафика с проксирования по умолчанию на прямое подключение по умолчанию. Пользователи должны настроить конфигурацию в соответствии со своими потребностями.
|
||||
|
||||
Все конфигурации, представленные в этой статье, были успешно протестированы в средах Raspberry Pi 2B и Ubuntu 20.04. При использовании в других средах вам может потребоваться изменить конфигурацию.
|
||||
Все конфигурации, представленные в этой статье, были успешно протестированы в средах Raspberry Pi 2B и Ubuntu 20.04. При использовании в других средах вам может потребоваться изменить конфигурацию.
|
||||
|
||||
## Перед началом работы
|
||||
|
||||
Убедитесь, что на вашем устройстве есть доступное сетевое подключение, сервер настроен, а клиент установлен.
|
||||
|
||||
Обратите внимание, что многие руководства по настройке прозрачного проксирования предлагают включить переадресацию IP в системе Linux, но это может привести к снижению производительности Splice. Дополнительную информацию см. в статье [Расследование снижения производительности Splice до уровня ниже, чем Direct](https://github.com/XTLS/Xray-core/discussions/59).
|
||||
Обратите внимание, что многие руководства по настройке прозрачного проксирования предлагают включить переадресацию IP в системе Linux, но это может привести к снижению производительности Splice. Дополнительную информацию см. в статье [Расследование снижения производительности Splice до уровня ниже, чем Direct](https://github.com/XTLS/Xray-core/discussions/59).
|
||||
|
||||
Хочу добавить, что многие руководства по настройке прозрачного проксирования используют Netfilter для разделения трафика, отправляя прямой трафик напрямую, минуя Xray. В этом случае необходимо включить переадресацию IP.
|
||||
Другие руководства, например это, направляют весь трафик через Xray, где он разделяется модулем маршрутизации Xray. В этом случае переадресацию IP включать не нужно.
|
||||
Хочу добавить, что многие руководства по настройке прозрачного проксирования используют Netfilter для разделения трафика, отправляя прямой трафик напрямую, минуя Xray. В этом случае необходимо включить переадресацию IP.
|
||||
Другие руководства, например это, направляют весь трафик через Xray, где он разделяется модулем маршрутизации Xray. В этом случае переадресацию IP включать не нужно.
|
||||
|
||||
## Настройка Xray
|
||||
|
||||
@@ -280,7 +280,7 @@ iptables -t mangle -A OUTPUT -j XRAY_SELF
|
||||
|
||||
</Tabs>
|
||||
|
||||
После завершения настройки измените шлюз по умолчанию на других устройствах в локальной сети на IP-адрес этого устройства, и они смогут использовать VPN. После того, как вы проверите, что все работает правильно на других хостах и на самом устройстве, перейдите к следующему шагу.
|
||||
После завершения настройки измените шлюз по умолчанию на других устройствах в локальной сети на IP-адрес этого устройства, и они смогут использовать VPN. После того, как вы проверите, что все работает правильно на других хостах и на самом устройстве, перейдите к следующему шагу.
|
||||
|
||||
## Настройка автозагрузки и сохранения конфигурации
|
||||
|
||||
@@ -353,5 +353,3 @@ WantedBy=multi-user.target
|
||||
</Tab>
|
||||
|
||||
</Tabs>
|
||||
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ title: Прозрачное проксирование TProxy (ipv4 и ipv6)
|
||||
|
||||
В данной статье используется сетевая структура с пограничным маршрутизатором с одним интерфейсом.
|
||||
|
||||
Все конфигурации, представленные в этой статье, были успешно протестированы в среде Arch Linux (Kernel: 6.0.10). В других средах настройка аналогична.
|
||||
Все конфигурации, представленные в этой статье, были успешно протестированы в среде Arch Linux (Kernel: 6.0.10). В других средах настройка аналогична.
|
||||
|
||||
Убедитесь, что установлены необходимые программы: `# sudo apt install iptables ip6tables` или `# sudo apt install nftables`.
|
||||
|
||||
Если на пограничном маршрутизаторе не установлена программа Xray, можно вручную скачать соответствующую версию Xray, например [Xray-linux-64.zip](https://github.com/XTLS/Xray-core/releases/download/v1.7.0/Xray-linux-64.zip), а затем скопировать файл [install-release.sh](https://github.com/XTLS/Xray-install/blob/main/install-release.sh) на пограничный маршрутизатор. Предоставьте файлу права на выполнение `# chmod 700 install-release.sh` и запустите его с помощью команды `# ./install-release.sh --local Xray-linux-64.zip`. Следуйте инструкциям для локальной установки.
|
||||
Если на пограничном маршрутизаторе не установлена программа Xray, можно вручную скачать соответствующую версию Xray, например [Xray-linux-64.zip](https://github.com/XTLS/Xray-core/releases/download/v1.7.0/Xray-linux-64.zip), а затем скопировать файл [install-release.sh](https://github.com/XTLS/Xray-install/blob/main/install-release.sh) на пограничный маршрутизатор. Предоставьте файлу права на выполнение `# chmod 700 install-release.sh` и запустите его с помощью команды `# ./install-release.sh --local Xray-linux-64.zip`. Следуйте инструкциям для локальной установки.
|
||||
|
||||
## Настройка Xray
|
||||
|
||||
@@ -68,8 +68,8 @@ title: Прозрачное проксирование TProxy (ipv4 и ipv6)
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
// Это исходящее подключение по умолчанию. Если модуль маршрутизации (routing) не найдет подходящего правила, трафик будет направлен через этот выходной узел proxy.
|
||||
// Если вы хотите, чтобы трафик в Китай направлялся напрямую, переместите исходящее подключение direct на первое место в списке outbound.
|
||||
// Это исходящее подключение по умолчанию. Если модуль маршрутизации (routing) не найдет подходящего правила, трафик будет направлен через этот выходной узел proxy.
|
||||
// Если вы хотите, чтобы трафик в Китай направлялся напрямую, переместите исходящее подключение direct на первое место в списке outbound.
|
||||
// Если вы не понимаете, что это значит, просто пропустите этот комментарий.
|
||||
"tag": "proxy",
|
||||
"protocol": "vless",
|
||||
@@ -80,7 +80,7 @@ title: Прозрачное проксирование TProxy (ipv4 и ipv6)
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "uuid", // Введите UUID, который можно сгенерировать, выполнив команду xray uuid в терминале.
|
||||
"id": "uuid", // Введите UUID, который можно сгенерировать, выполнив команду xray uuid в терминале.
|
||||
// Также поддерживаются произвольные строки (https://xtls.github.io/config/inbounds/vless.html#clientobject).
|
||||
"encryption": "none",
|
||||
"flow": "xtls-rprx-vision"
|
||||
@@ -138,8 +138,8 @@ title: Прозрачное проксирование TProxy (ipv4 и ipv6)
|
||||
"hosts": {
|
||||
"domain:googleapis.cn": "googleapis.com",
|
||||
"dns.google": "8.8.8.8",
|
||||
"yourdomain.domain": "your VPS IP" // Если в разделе address исходящего подключения proxy указано доменное имя:
|
||||
// для проксирования через IPv4 укажите IPv4-адрес VPS, для проксирования через IPv6 укажите IPv6-адрес VPS.
|
||||
"yourdomain.domain": "your VPS IP" // Если в разделе address исходящего подключения proxy указано доменное имя:
|
||||
// для проксирования через IPv4 укажите IPv4-адрес VPS, для проксирования через IPv6 укажите IPv6-адрес VPS.
|
||||
// Если в разделе address исходящего подключения proxy указан IP-адрес, эту строку можно удалить.
|
||||
},
|
||||
"servers": [
|
||||
@@ -227,7 +227,7 @@ title: Прозрачное проксирование TProxy (ipv4 и ipv6)
|
||||
"domainStrategy": "IPIfNonMatch",
|
||||
"rules": [
|
||||
{
|
||||
// Блокировка китайских IP-адресов для повышения безопасности.
|
||||
// Блокировка китайских IP-адресов для повышения безопасности.
|
||||
// Также можно направить китайский трафик через Warp, см. https://xtls.github.io/document/level-2/warp.html
|
||||
"type": "field",
|
||||
"ip": ["geoip:cn"],
|
||||
@@ -298,9 +298,9 @@ ip -6 rule add fwmark 1 table 106
|
||||
ip -6 route add local ::/0 dev lo table 106
|
||||
|
||||
# Прямое подключение через основной маршрутизатор
|
||||
ip route add default via 192.168.31.1 # Укажите IPv4-адрес основного маршрутизатора.
|
||||
ip route add default via 192.168.31.1 # Укажите IPv4-адрес основного маршрутизатора.
|
||||
# Если используется метод 1 для настройки доступа к интернету на устройствах локальной сети, эту команду можно не выполнять.
|
||||
ip -6 route add default via fd00:6868:6868::1 # Укажите IPv6-адрес основного маршрутизатора.
|
||||
ip -6 route add default via fd00:6868:6868::1 # Укажите IPv6-адрес основного маршрутизатора.
|
||||
# Если используется метод 1 для настройки доступа к интернету на устройствах локальной сети, эту команду можно не выполнять.
|
||||
|
||||
```
|
||||
@@ -312,13 +312,13 @@ ip -6 route add default via fd00:6868:6868::1 # Укажите IPv6-адрес
|
||||
|
||||
::: tip О прямом подключении через основной маршрутизатор
|
||||
|
||||
Выполните команду `ip route show` на пограничном маршрутизаторе. Если используется метод 1, то после `default via` должен быть указан IP-адрес основного маршрутизатора, ничего менять не нужно.
|
||||
Если используется метод 2, то после `default via` должен быть указан IP-адрес пограничного маршрутизатора. В этом случае DNS-запросы для сайтов, к которым должно быть установлено прямое подключение, будут зацикливаться, что приведет к невозможности доступа к этим сайтам. Поэтому необходимо указать IP-адрес основного маршрутизатора.
|
||||
Выполните команду `ip route show` на пограничном маршрутизаторе. Если используется метод 1, то после `default via` должен быть указан IP-адрес основного маршрутизатора, ничего менять не нужно.
|
||||
Если используется метод 2, то после `default via` должен быть указан IP-адрес пограничного маршрутизатора. В этом случае DNS-запросы для сайтов, к которым должно быть установлено прямое подключение, будут зацикливаться, что приведет к невозможности доступа к этим сайтам. Поэтому необходимо указать IP-адрес основного маршрутизатора.
|
||||
:::
|
||||
|
||||
Если в настройках маршрутизатора указан пограничный маршрутизатор в качестве шлюза по умолчанию (то есть используется метод 2 для настройки доступа к интернету на устройствах локальной сети), то необходимо выполнить команду `# Прямое подключение через основной маршрутизатор`.
|
||||
Кроме настройки через командную строку iproute2, можно использовать dhcpcd или systemctl-network для настройки статического IP-адреса.
|
||||
В качестве примера рассмотрим dhcpcd. Отредактируйте файл `/etc/dhcpcd.conf` и добавьте следующие строки в конец файла. Измените IP-адреса в соответствии с вашей конфигурацией.
|
||||
В качестве примера рассмотрим dhcpcd. Отредактируйте файл `/etc/dhcpcd.conf` и добавьте следующие строки в конец файла. Измените IP-адреса в соответствии с вашей конфигурацией.
|
||||
`interface` - это имя сетевого интерфейса или беспроводного устройства, которое можно узнать с помощью команды `# ip link show`.
|
||||
|
||||
```
|
||||
@@ -546,7 +546,7 @@ WantedBy=multi-user.target
|
||||
|
||||
Обратите внимание на IP-адрес основного маршрутизатора и измените его в соответствии с вашей конфигурацией.
|
||||
|
||||
Команда `ExecStartPre=/bin/sh -c 'until ping -c1 192.168.31.1; do sleep 1; done;'` гарантирует, что команды будут выполнены только после получения IP-адреса, иначе могут возникнуть странные ошибки. IP-адрес - это адрес основного маршрутизатора, измените его в соответствии с вашей конфигурацией.
|
||||
Команда `ExecStartPre=/bin/sh -c 'until ping -c1 192.168.31.1; do sleep 1; done;'` гарантирует, что команды будут выполнены только после получения IP-адреса, иначе могут возникнуть странные ошибки. IP-адрес - это адрес основного маршрутизатора, измените его в соответствии с вашей конфигурацией.
|
||||
:::
|
||||
|
||||
::: warning Внимание
|
||||
@@ -556,7 +556,7 @@ WantedBy=multi-user.target
|
||||
|
||||
## Настройка доступа к интернету на устройствах локальной сети
|
||||
|
||||
Предположим, что IPv4- и IPv6-адреса пограничного маршрутизатора - `192.168.31.100` и `fd00:6868:6868::8866` соответственно.
|
||||
Предположим, что IPv4- и IPv6-адреса пограничного маршрутизатора - `192.168.31.100` и `fd00:6868:6868::8866` соответственно.
|
||||
IP-адреса пограничного маршрутизатора можно узнать с помощью команды `ip add`.
|
||||
|
||||
### Метод 1
|
||||
@@ -594,4 +594,4 @@ IP-адреса пограничного маршрутизатора можно
|
||||
## Заключение
|
||||
|
||||
В настоящее время IPv6 еще не получил широкого распространения, и 99% трафика, к которому мы обращаемся, по-прежнему приходится на IPv4.
|
||||
Многие провайдеры VPS
|
||||
Многие провайдеры VPS
|
||||
|
||||
@@ -10,7 +10,7 @@ title: Статистика трафика
|
||||
## Просмотр статистики трафика
|
||||
|
||||
Способ настройки такой же, как и для v2fly.
|
||||
Просмотр статистики трафика - одна из функций командной строки Xray. Порт api dokodemo-door, указанный в конфигурации, - это порт, используемый в параметре `--server`.
|
||||
Просмотр статистики трафика - одна из функций командной строки Xray. Порт api dokodemo-door, указанный в конфигурации, - это порт, используемый в параметре `--server`.
|
||||
|
||||
```bash
|
||||
xray api statsquery --server=127.0.0.1:10085 # Просмотр всей статистики трафика
|
||||
@@ -118,5 +118,3 @@ echo "-------------User------------"
|
||||
print_sum "$DATA" "user"
|
||||
echo "-----------------------------"
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ Linux использует `Netfilter` для управления сетью,
|
||||
4. Умение писать конфигурационные файлы клиента в формате json или, по крайней мере, понимать их.
|
||||
|
||||
### Предварительная подготовка
|
||||
|
||||
::: warning
|
||||
Перед началом работы не забудьте включить пересылку пакетов ipv4 в Linux с помощью команды `sysctl -w net.ipv4.ip_forward=1`
|
||||
:::
|
||||
|
||||
@@ -4,23 +4,25 @@ title: Повышение безопасности проксирования с
|
||||
|
||||
# Повышение безопасности проксирования с помощью Cloudflare Warp
|
||||
|
||||
В Xray (1.6.5+) добавлен исходящий WireGuard. Хотя это увеличивает размер ядра из-за дополнительных кода и зависимостей, мы считаем, что это важная новая функция по трем причинам:
|
||||
В Xray (1.6.5+) добавлен исходящий WireGuard. Хотя это увеличивает размер ядра из-за дополнительных кода и зависимостей, мы считаем, что это важная новая функция по трем причинам:
|
||||
|
||||
1. Из недавних обсуждений и [экспериментов](https://github.com/net4people/bbs/issues/129#issuecomment-1308102504) мы знаем, что проксирование трафика в Китай небезопасно.
|
||||
Одним из способов решения этой проблемы является перенаправление трафика в Китай в черный дыры.
|
||||
Недостаток этого метода заключается в том, что geosite и geoip обновляются нерегулярно, и новички могут не знать, как правильно настроить разделение трафика на клиенте, в результате чего трафик попадает в черный дыры, что снижает удобство использования.
|
||||
В этом случае мы можем просто перенаправить трафик в Китай через Cloudflare Warp, что обеспечит такую же безопасность без ущерба для удобства использования.
|
||||
Одним из способов решения этой проблемы является перенаправление трафика в Китай в черный дыры.
|
||||
Недостаток этого метода заключается в том, что geosite и geoip обновляются нерегулярно, и новички могут не знать, как правильно настроить разделение трафика на клиенте, в результате чего трафик попадает в черный дыры, что снижает удобство использования.
|
||||
В этом случае мы можем просто перенаправить трафик в Китай через Cloudflare Warp, что обеспечит такую же безопасность без ущерба для удобства использования.
|
||||
2. Как известно, большинство VPN-провайдеров ведут журналы посещенных пользователями доменов, а некоторые даже проверяют и блокируют определенный трафик.
|
||||
Один из способов защиты конфиденциальности пользователей - использовать цепочку прокси-серверов на клиенте.
|
||||
Warp использует легкий VPN-протокол WireGuard, который добавляет дополнительный уровень шифрования.
|
||||
Для VPN-провайдера весь трафик пользователя будет направляться на Warp, что обеспечивает максимальную защиту конфиденциальности.
|
||||
Один из способов защиты конфиденциальности пользователей - использовать цепочку прокси-серверов на клиенте.
|
||||
Warp использует легкий VPN-протокол WireGuard, который добавляет дополнительный уровень шифрования.
|
||||
Для VPN-провайдера весь трафик пользователя будет направляться на Warp, что обеспечивает максимальную защиту конфиденциальности.
|
||||
3. Простота использования.
|
||||
Для настройки разделения трафика, WireGuard-туннеля и цепочки прокси-серверов достаточно одного ядра.
|
||||
Для настройки разделения трафика, WireGuard-туннеля и цепочки прокси-серверов достаточно одного ядра.
|
||||
|
||||
## Создание аккаунта Warp
|
||||
|
||||
### Спасибо Cloudflare за содействие свободному интернету! Теперь вы можете бесплатно пользоваться услугами Warp. При подключении автоматически выбирается ближайший сервер.
|
||||
### Спасибо Cloudflare за содействие свободному интернету! Теперь вы можете бесплатно пользоваться услугами Warp. При подключении автоматически выбирается ближайший сервер.
|
||||
|
||||
#### Метод 1:
|
||||
|
||||
1. Используйте VPS и загрузите [wgcf](https://github.com/ViRb3/wgcf/releases).
|
||||
2. Запустите `wgcf register`, чтобы создать файл `wgcf-account.toml`.
|
||||
3. Запустите `wgcf generate`, чтобы создать файл `wgcf-profile.conf`. Скопируйте его содержимое:
|
||||
@@ -38,35 +40,45 @@ AllowedIPs = 0.0.0.0/0
|
||||
AllowedIPs = ::/0
|
||||
Endpoint = engage.cloudflareclient.com:2408
|
||||
```
|
||||
|
||||
#### Метод 2:
|
||||
|
||||
1. Используйте [warp-reg.sh](https://github.com/chise0713/warp-reg.sh). Запустите:
|
||||
|
||||
```
|
||||
bash -c "$(curl -L warp-reg.vercel.app)"
|
||||
```
|
||||
|
||||
- Вывод:
|
||||
|
||||
```json
|
||||
{
|
||||
"endpoint":{
|
||||
"v4": "162.159.192.7",
|
||||
"v6": "[2606:4700:d0::a29f:c007]"
|
||||
},
|
||||
"reserved_dec": [35, 74, 190],
|
||||
"reserved_hex": "0x234abe",
|
||||
"reserved_str": "I0q+",
|
||||
"private_key": "yL0kApRiZW4VFfNkKAQ/nYxnMFT3AH0dfVkj1GAlr1k=",
|
||||
"public_key": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
|
||||
"v4": "172.16.0.2",
|
||||
"v6": "2606:4700:110:81f3:2a5b:3cad:9d4:9ea6"
|
||||
"endpoint": {
|
||||
"v4": "162.159.192.7",
|
||||
"v6": "[2606:4700:d0::a29f:c007]"
|
||||
},
|
||||
"reserved_dec": [35, 74, 190],
|
||||
"reserved_hex": "0x234abe",
|
||||
"reserved_str": "I0q+",
|
||||
"private_key": "yL0kApRiZW4VFfNkKAQ/nYxnMFT3AH0dfVkj1GAlr1k=",
|
||||
"public_key": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
|
||||
"v4": "172.16.0.2",
|
||||
"v6": "2606:4700:110:81f3:2a5b:3cad:9d4:9ea6"
|
||||
}
|
||||
```
|
||||
|
||||
2. Скопируйте вывод.
|
||||
|
||||
#### Метод 3:
|
||||
1. Используйте [wgcf-cli](https://github.com/ArchiveNetwork/wgcf-cli). Запустите следующие команды для установки:
|
||||
|
||||
1. Используйте [wgcf-cli](https://github.com/ArchiveNetwork/wgcf-cli). Запустите следующие команды для установки:
|
||||
|
||||
```
|
||||
bash -c "$(curl -L wgcf-cli.vercel.app)"
|
||||
```
|
||||
|
||||
2. Запустите `wgcf-cli register` для регистрации. Вывод:
|
||||
|
||||
```json
|
||||
❯ wgcf-cli register
|
||||
{
|
||||
@@ -89,39 +101,34 @@ bash -c "$(curl -L wgcf-cli.vercel.app)"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Полный файл будет сохранен в файле `wgcf.json` в рабочем каталоге.
|
||||
|
||||
3. Запустите `wgcf-cli generate --xray`, чтобы создать исходящий WireGuard.
|
||||
Содержимое будет сохранено в файле `wgcf.json.xray.json`.
|
||||
|
||||
- Пример файла:
|
||||
|
||||
```json
|
||||
{
|
||||
"protocol": "wireguard",
|
||||
"settings": {
|
||||
"secretKey": "6CRVRLgFwGajnikoVOPTDNZnDhx3EydhPsMgpxHfBCY=",
|
||||
"address": [
|
||||
"172.16.0.2/32",
|
||||
"2606:4700:110:857a:6a95:fe27:1870:2a9d/128"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"publicKey": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
|
||||
"allowedIPs": [
|
||||
"0.0.0.0/0",
|
||||
"::/0"
|
||||
],
|
||||
"endpoint": "162.159.192.1:2408"
|
||||
}
|
||||
],
|
||||
"reserved": [
|
||||
240,
|
||||
25,
|
||||
146
|
||||
],
|
||||
"mtu": 1280
|
||||
},
|
||||
"tag": "wireguard"
|
||||
"protocol": "wireguard",
|
||||
"settings": {
|
||||
"secretKey": "6CRVRLgFwGajnikoVOPTDNZnDhx3EydhPsMgpxHfBCY=",
|
||||
"address": ["172.16.0.2/32", "2606:4700:110:857a:6a95:fe27:1870:2a9d/128"],
|
||||
"peers": [
|
||||
{
|
||||
"publicKey": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
|
||||
"allowedIPs": ["0.0.0.0/0", "::/0"],
|
||||
"endpoint": "162.159.192.1:2408"
|
||||
}
|
||||
],
|
||||
"reserved": [240, 25, 146],
|
||||
"mtu": 1280
|
||||
},
|
||||
"tag": "wireguard"
|
||||
}
|
||||
```
|
||||
|
||||
## Перенаправление трафика в Китай через Warp на сервере
|
||||
|
||||
Добавьте исходящий WireGuard к существующим исходящим подключениям:
|
||||
@@ -138,7 +145,7 @@ bash -c "$(curl -L wgcf-cli.vercel.app)"
|
||||
"endpoint": "engage.cloudflareclient.com:2408"
|
||||
}
|
||||
],
|
||||
"reserved":[0, 0, 0] // Вставьте reserved, если у вас есть.
|
||||
"reserved": [0, 0, 0] // Вставьте reserved, если у вас есть.
|
||||
},
|
||||
"tag": "wireguard-1"
|
||||
}
|
||||
@@ -213,5 +220,3 @@ bash -c "$(curl -L wgcf-cli.vercel.app)"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user