Настройка подключений на одном порту
С помощью этого руководства Вы сможете установить все соединения с вашим сервером (панель, TLS-конфигурация и REALITY) через один порт. Целью этого, является задача сделать подключения к серверу более естественным и обойти ограничения на одном порту.
В этом руководстве мы используем инструмент HAProxy для достижения нашей цели.
Итак, в этом руководстве мы сначала установим и настроим HAProxy, а затем внесем необходимые изменения в конфигурации и панель, чтобы принимать весь трафик на один порт.
Установка и настройка HAProxy
Сначала выполните следующие команды для установки:
После установки файл конфигурации HAProxy будет находиться по адресу /etc/haproxy/haproxy.cfg
.
Откройте этот файл с помощью редактора nano для редактирования.
Настройки HAProxy включают один или несколько фронтендов и один или несколько бэкендов. Каждый фронтенд направляет трафик к одному из бэкендов на основе определенных в нем правил. Понимание этих двух принципов в конфигурации HAProxy помогает нам настроить его более эффективно.
При внимательном рассмотрении этой конфигурации вы заметите, что с ее помощью HAProxy прослушивает порт 443 и принимает весь трафик. Затем, в зависимости от SNI (Server Name Indication) полученного трафика, он перенаправляет его на «локальный» порт сервера, что позволяет нам различать разные виды трафика.
Теперь добавьте следующую конфигурацию в конец файла, внесите необходимые изменения в соответствии с инструкциями и сохраните его.
После замены своих доменов и размещения этой конфигурации в конце указанного файла, выполните следующую команду для перезапуска HAProxy и завершения данного этапа настройки.
Подготовка конфигураций
Подготовка конфигурации REALITY
Предположим, что вы хотите иметь несколько разных инбаундов для каждого своего узла или несколько разных инбаундов с разными SNI. Если вы просто разместите эти инбаунды один под другим и установите для них одинаковые порты, возникнут проблемы соединения и фактически связь будет невозможна.
Единый порт для конфигураций решает эту проблему. Для этого вам нужно изменить настройки своих конфигураций следующим образом
С этими изменениями ваши инбаунды будут слушать не на 0.0.0.0, а на 127.0.0.1, и вы сможете создавать любое количество инбаундов с разными локальными портами и разделять их в HAProxy на основе SNI.
Подготовка конфигураций с TLS
Чтобы иметь все типы конфигураций с TLS, например для CDN, на одном порту, мы используем fallback xray-core.
Сначала нам понадобится fallback инбаунд. Для этого вы можете использовать следующий пример инбаунда:
Для лучшего использования этой возможности полезно понять ее концепцию и работу.
fallback работает следующим образом: если входящий трафик соответствует этому инбаунду, он принимается, а если нет, он перенаправляется на другие инбаунды в соответствии с путем (path). Поэтому, после размещения этого инбаунда с fallback, мы определяем несколько других инбаундов, каждый с указанным путем (если у вас уже есть такие инбаунды, достаточно изменить значение listen на предопределенные значения (@vless-ws
, @vmess-ws
и @trojan-ws
) и добавить их путь в инбаунд с fallback.
Итак, инбаунд с fallback отправляет трафик на другие инбаунды в зависимости от пути каждого из входящих трафиков:
- path = /lw -> listen: “@vless-ws”
- path = /mw -> listen: “@vmess-ws”
- path = /tw -> listen: “@trojan-ws”
Итак, в соответствии с приведенным выше примером, вам просто нужно сделать разделы listen и path ваших конфигураций входящих соответствующими конфигурации fallback, чтобы все конфигурации выполнялись на одном порту.
Пример таких конфигураций:
Теперь, если вы использовали этот метод для объединения ваших входящих с помощью fallback, откройте файл .env
и установите следующую переменную равной вашему тегу входящего fallback:
Подготовка панели управления
Как уже упоминалось, нашей целью является наличие всех коммуникаций, включая панель управления (ссылку на подписку), на одном порту.
Ранее мы настроили параметры, относящиеся к панели управления, в конфигурации HAProxy, и в этом этапе достаточно сделать порт, на котором слушает панель, согласованным с HAProxy. Для этого вам просто нужно внести изменения в файл .env
и установить переменные, указанные ниже, равными определенному значению (или тому, что вы ввели в HAProxy):
Теперь перезапустите Marzban:
Подготовка хоста
Поскольку порт, указанный в inbound, является локальным портом, и фактически весь трафик идет на ваш сервер через порт 443, необходимо изменить порт на 443 в разделе хоста для созданных вами конфигураций, иначе порты по умолчанию устанавливаются для локальных конфигураций.
Так же Вы должны настроить свои TLS конфигурации