1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Velocity - прокси сервер нового поколения! | Гайд по Velocity

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Overwrite, 3 апр 2022.

  1. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Как мы все, вероятно, знаем, BungeeCord более не является перспективным и развивающемя прокси сервером. Его форки поддерживаются с куда более меньшей активностью, а Paper перешел на поддержку более развитого в этом плане прокси сервера - Velocity.
    По этому настало время создать гайд по Velocity и его настройке, в котором будут описаны все основные правила его использования, а также будет рассказано, как подключить к нему антибот систему, которая встроена во всеми известный форк банжи - BotFilter, а также о важных аспектах при работе с данным прокси сервером.​

    ⦁ Пункт 1 - устанавливаем и запускаем

    Тут проблем возникнуть не должно, т.к. тут процесс схож с установкой обычного ядра сервера или банжи.
    1) Качаем Velocity с сайта PaperMc (разработчиков), или же с официального сайта velocitypowered.
    2) Положите скачанный вами .jar файл в определенную папку, после чего создайте в ней файл start.txt, в котором напишите следующее:
    java -Xmx2G -Xms2G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar
    (Учтите, что ваш jar файл должен называться именно velocity! А также вам потребуется Java версии 11 или выше!)
    3) Переименуйте start.txt в start.bat и запустите его. После этого дождитесь, когда все папки и файлы будут созданы и после сообщения по типу "Done (2,2s)!" закрывайте открывшееся окно консоли. Запустите его вновь уже после полной настройки.

    ⦁ Пункт 2 - настройка Velocity

    Velocity имеет один файл конфигурации - velocity.toml. Его можно открыть при помощи любого текстового редактора, но я рекомендую Notepad++.

    Специально для вас я перевел данный файл. Ознакомиться со всеми его значениями можете ниже:
    Код:
    # Версия конфига. Не трогайте данное значение
    config-version = "2.0"
    # Какой порт должен быть у прокси сервера? По умолчанию прокси работает на порту 25577.
    bind = "0.0.0.0:25577"
    # Какой должен быть MOTD? Это видят игроки, которые добавляют сервер в
    # свой список серверов. Устаревшие цветовые кода и новые поддерживаются.
    motd = ""
    # Скролько должно отображаться максимально игроков? (У велосити нет лимита
    # на колличество игроков онлайн.)
    show-max-players = 500
    # Нужно ли авторизовывать игроков по системе Mojang? (заход только с лицензии) По умолчанию отключено.
    online-mode = true
    # Должен ли прокси-сервер применять новый стандарт безопасности с открытым ключом? По умолчанию этот параметр включен.
    force-key-authentication = true
    # Запрет на использование Proxy. По умолчанию отключено
    prevent-client-proxy-connections = false
    # Должны ли мы пересылать IP-адреса и другие данные на внутренние серверы?
    # Доступные опции:
    # - "none":   Пересылки не будет. Все игроки будут подключаться
    #                через прокси-сервер и будут иметь не-лицензионные UUID.
    # - "legacy": Перенаправлять IP-адреса и UUID игроков в формате, совместимом с BungeeCord.
    #               Используйте, если вы имеете сервер на версии 1.12 или ниже.
    # - "bungeeguard":  Перенаправлять IP-адреса и UUID игроков в формате, поддерживаемом плагином
    #                 BungeeGuard Используйте это, если вы запускаете серверы, использующие Minecraft 1.12
    #                 или ниже, и не можете закрыть порты.
    # - "modern":  Перенаправляйте IP-адреса и UUID игроков как часть процесса входа в систему,
    #              используя встроенную переадресацию Velocity. Применимо только для Minecraft 1.13 и выше.
    player-info-forwarding-mode = "NONE"
    # Если вы используете переадресацию IP-адресов modern или BungeeGuard, настройте здесь файл, содержащий уникальный секрет.
    # Ожидается, что файл будет закодирован в формате UTF-8 и не будет пустым.
    forwarding-secret-file = "forwarding.secret"
    # Сообщите, поддерживает ли ваш сервер Forge или нет. Если вы используете модифицированный
    # сервер, мы предлагаем включить это.
    #
    # Если в вашей сети постоянно запускается один пакет модов, рассмотрите возможность использования ping-passsthrough = "mods"
    # вместо этого для более удобного отображения в списке серверов.
    announce-forge = false
    # Если включено (по умолчанию значение false) и прокси-сервер находится в онлайн-режиме, Velocity удалит
    # любого существующего игрока, который находится в Сети, если будет предпринята повторная попытка подключения.
    kick-existing-players = false
    # Должен ли Velocity передавать запросы ping-запроса на серверный сервер? (перевод выполняля машина, претензии к ней)
    # Доступные опции:
    # - "disabled":   Никакого прохода не будет сделано. Velocity.toml и server-icon.png будут
    #                  определять первоначальный ответ на запрос списка серверов.
    # - "mods":     Передает в ответ только список модов с вашего внутреннего сервера.
    #                 Будет использоваться первый сервер в вашем списке попыток (или принудительный хост)
    #                  со списком модов. Если связаться с внутренними серверами невозможно,
    #                  Velocity не будет отображать никакой информации о модах.
    # - "description" Использует описание и список модов с внутреннего сервера. Первый сервер в
    #                  списке попыток (или принудительный хост), который отвечает,
    #                  используется для описания и списка модов.
    # - "all":      Использует ответ внутреннего сервера в качестве ответа прокси-сервера.
    #    Конфигурация Velocity используется, если не удалось связаться ни с одним сервером.
    ping-passthrough = "DISABLED"
    # Если не включено (значение по умолчанию равно true), IP-адреса игроков будут заменены на <ip-адрес не указан> в логах
    enable-player-address-logging = true
    
    [servers]
    # Настройте свои серверы здесь. Каждый ключ представляет имя сервера,
    # а значение представляет IP-адрес сервера, к которому необходимо подключиться.
    lobby = "127.0.0.1:30066"
    
    # В каком порядке мы должны пробовать серверы, когда игрок входит на сервер или его кикнули с сервера.
    try = [
      "lobby"
    ]
    [forced-hosts]
    # Настройте свои принудительные хосты здесь.
    "lobby.example.com" = [
      "lobby"
    ]
    [advanced]
        # Насколько большим должен быть пакет Minecraft, прежде чем мы его сожмем. Установка этого значения на ноль приведет к
        # сжатию всех пакетов, а установка значения -1 полностью отключит сжатие.
        compression-threshold = 256
        # Какая степень сжатия должна быть выполнена (от 0 до 9). Значение по умолчанию равно -1, при котором используется
        # значение по умолчанию равно 6.
        compression-level = -1
        # Как быстро (в миллисекундах) клиентам разрешается подключаться после последнего подключения?
        # По умолчанию это составляет три секунды. Отключите это, установив значение 0.
        login-ratelimit = 3000
        # Укажите здесь настраиваемый тайм-аут для тайм-аутов подключения. Значение по умолчанию - пять секунд.
        connection-timeout = 5000
        # Укажите здесь тайм-аут чтения для подключений. Значение по умолчанию равно 30 секундам.
        read-timeout = 30000
        # Обеспечивает совместимость с ПРОКСИ-протоколом HAProxy.
        # Если вы не знаете, для чего это нужно, то не включайте его.
        haproxy-protocol = false
        # Включает поддержку быстрого открытия TCP на прокси-сервере. Требуется, чтобы прокси-сервер работал в Linux.
        tcp-fast-open = false
        # Включает поддержку канала обмена сообщениями плагина BungeeCord на Velocity.
        bungee-plugin-message-channel = true
        # Показывает запросы ping к прокси-серверу от клиентов.
        show-ping-requests = false
    # По умолчанию Velocity попытается корректно обрабатывать ситуации, когда пользователь
    # неожиданно теряет соединение с сервером без явного сообщения об отключении, пытаясь
    # вернуть пользователя обратно, за исключением случаев тайм-аутов чтения. Вместо этого 
    # BungeeCord отключит пользователя. Вы можете отключить этот параметр, чтобы использовать
    # поведение BungeeCord.
        failover-on-unexpected-server-disconnect = true
        # Объявляет команды прокси для клиентов 1.13+.
        announce-proxy-commands = true
        # Позволяет вести лог команд
        log-command-executions = false
    
    [query]
        # Следует ли включать ответы на запросы GameSpy 4 или нет.
        enabled = false
        # Если запрос включен, на каком порту должен прослушиваться протокол запроса?
        port = 25577
        # Это имя карты, которое сообщается службам запросов.
        map = "Velocity"
        show-plugins = false
    

    Теперь перейдем непосредственно к настройке.

    В первую очередь давайте определимся с типом "пересылки IP адресов"
    Если вы держите сервер на версиях 1.13+ - то как и указано, используйте режим player-info-forwarding-mode = "modern".
    Если же вы держите сервер на версиях 1.12 и ниже - вам НАСТОЯТЕЛЬНО рекомендуется использовать режим player-info-forwarding-mode = "bungeeguard".
    Указываем это значение соответственно тому, что для вас подходит.
    Далее нам нужно придумать ключ и указать его в файле, который указан в графе forwarding-secret = "forvarding.secret"
    (по умолчанию там уже будет сгенерирован ключ, но я рекомендую ставить свой)

    Если вы выбрали режим modern, то данный ключ нужно будет выставить в paper.yml (paper-global.yml для новых версий), найдя поле velocity-support, после чего активировав его, поставив enabled: true, после чего найти поле secret:, в нем поле default: '' и вставить в кавычки придуманный вами ключ.
    Если вы выбрали режим bungeeguard - вам необходимо будет скачать плагин BungeeGuard, установить его на игровые сервера и вставить придуманный вами код в его конфиг в поле allowed-tokens:

    Важное примечание:
    В файле spigot.yml есть строка bungeecord: false
    Если вы настроили player-info-forwarding-mode = "modern" и в paper.yml (paper-global.yml для новых версий) включили поддержку велосити - данное поле должно оставаться false.
    Если же вы имеете значение bungeeguard - оно должно стоять на true!

    Далее нам нужно настроить сервера. Тут всё просто. В разделе servers у вас есть примеры настроенных серверов. Вам лишь нужно подставить свои значения и при необходимости переименовать сервера под себя. Просто укажите имя_сервера = "IP сервера:порт сервера" (порт сервера находится в server.properties и его можно менять).
    После того как добавили все нужные вам сервера - укажите сервер, на который будет подключать игрока сразу после захода в графе try =

    Теперь разберемся с некоторыми настройками, которые вы вероятно будете менять.
    1) tcp-fast-open = false - поставьте на true, если вы запускаете сервер на Lunix, тоесть на VDS/VPS сервере.
    2) announce-proxy-commands = true - поставьте на false, если не хотите, чтобы табкомплит выдавал игрокам команды вашего прокси.
    3) ping-passthrough = "description" - поставьте значение на DISABLED, если хотите увидеть зеленую галочку совместимости с модами на клиенте. Я не знаю как это точно работает, но у меня работает.
    4) force-key-authentication = true - поставьте его на false если ваш сервер на оффлайн моде (тоесть без лицензии).

    Пункт 3 - Команды Velocity.

    По умолчанию Velocity имеет 4 команды:
    /velocity (version|plugins|reload|dump) - показывает версию велосити|плагины велосити|перезагружает прокси|выгружает дамп с информацией о прокси соответственно
    /end - выключает прокси
    /glist - показывает, сколько игроков находится на прокси. /glist all - показывает, сколько игроков где находятся
    /server - позволяет перемещаться между серверами

    Права можете посмотреть тут:
    https://docs.papermc.io/velocity/built-in-commands

    Пункт 4 - Полезные утилиты:

    Тут я хочу рассказать о том какие утилиты вам практически необходимы при работе с Velocity и зачем они вам нужны.

    1) Наверное самой важной частью является защита от ботов. Данную функцию может взять на себя такой плагин как Sonar.
    Там имеется как и стандартная капча, так и продвинутые проверки, коих нет в других анти-ботах, что поможет для защиты от ботов, способных обходить капчи.

    2) Важно задуматься об ограничении игроков в использовании команд прокси сервера, т.к. если вы будете невнимательны - ваша авторизация будет пройдена а вы взломаны!
    Всем игрокам по умолчанию на Velocity доступна команда /server. Заблокировать её так просто не получится, по этому вам нужно будет снять права с игроков на её использование. С этим справляется плагин LuckPermsVelocity. Как только установите его на прокси сервер - Пропишите /lpv group default permission set velocity.command.server false. Эта команда выдаст отрицательное право на команду /server всем игрокам и тем самым запретит её использование.

    3) Довольно полезным может оказаться для вас плагин CommandSync. С недавних пор в него добавили поддержку велосити, что сделало его вновь актуальным. Если кратко - он нужен для того, чтобы выполнять с прокси команды на серверах. Очень удобно, если вы не можете использовать базу данных, но у вас есть несколько игровых режимов.

    4) Также стоит задуматься о блокировке команд. Если вам необходимо ограничить прочие команды на прокси сервере - вам рекомендуется использовать плагин CommandWhitelist. По названию, как я думаю, ясно, что он делает.

    Пункт 5 - Полезные ссылки.

    https://docs.papermc.io/velocity - оф. вики велосити

    ⦁ Видео-гайд. Спасибо _MrJaycob_



    ⦁ Заключение.

    Думаю теперь вам стало понятно, как настроить велосити и про то как с ним работать. Если вы решаете, что выбрать - Bungee или Velocity - я без сомнений отвечу - Velocity. Именно он имеет большой потенциал и будет поддерживаться в будущем, когда Bungee уже давно не развивается и поддерживается лишь энтузиастами.
     
    Последнее редактирование: 11 дек 2023
  2. kefavova

    kefavova Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Afek
    Неплохо:good:, пункт 3 раздел 2 про настройку прав нужно прям жирным шрифтом выделить
     
  3. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    О хороший гайд. А можешь рассказать кто такой этот ваш forced hosts?
     
  4. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Я предпочел это не трогать когда настраивал себе. На самом деле это не особо нужная часть
     
  5. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
  6. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Ачо
     
  7. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Насколько я понял он позволяет сделать так, что если ты заходишь с определённого поддомена, то тебя кидает на определённый сервер. Т. е. например:
    "test.example.com" = ["test"]
    При заходе на test.example.com кинет на серв test.
    Как-то так
     
  8. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Хороший гайд. Видел твои статьи про защиту серверу и мусорные плагины, ожидал когда напишешь про Велосити) А то самому разбираться как-то лень было... Но пора бы уже, ведь появились всякие LimboFilter / LimboAuth и т. д.
    Хотя и непривычно чуток. Но пора переходить со старого на новое, ведь оно лучше. Со Спигота на Пейпер и его форки, с Сашка на Гравит и теперь с Банджи на Велосити...
     
    Последнее редактирование: 7 апр 2022
  9. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    о. это же отличная замена плагину на промокоды чтобы оценивать эффективность опередеденной рекламы
     
  10. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Это ещё на банджи было как бы...
     
  11. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    да, знаю. но меня там смущал поддомен pvp
     
  12. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    просто пример
     
  13. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
    Сорян, не тот смайлик отправил :good::good::good::good::good:
     
  14. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Бывает :creeper:
     
  15. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
    Серьёзно без обид)
     
  16. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    > В новом Dev билде Velocity была исправлена значительная уязвимость связанная с пакетами, что позволяла без труда крашнуть прокси. Настоятельно рекомендую обновиться.
    > Добавил инфу про VelocityTools, добавляющий на прокси команды /send /find /alert и прочая.
    > Переместил пункт 4 и 3 местами
     
  17. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
  18. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Добавлена информация про CommandSync. Наконец-то поддержка велосити!
     
  19. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Обновил данные статьи (еще вчера). Велосити.томл обновилось, так что теперь, если хотите обновиться, вам придется пересоздавать файлик.
     
  20. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Важное замечание по поводу данной настройки.
    Как оказалась она отвечает не просто за какие-то там лицензионные фишки, а за отправку на сервер вашего ключа моджанг, для проверки отправки сообщений (я не знаю как это сказать павильнее). Это нужно для функционирования функции репортов.
    Если эта функция включена - игроки смогут репортить сообщение в чате от других игроков, а уже моджанги решат, что с этим делать.
    За это дают реальные баны в самой игре (что равняется бану на всех серверах сразу, как лицензионных, так и пиратских, если конечно вы авторизуетесь как лицензионный игрок). При том навечно. И скорее всего без возможности разбана.
    Теперь это даже не просто рекомендуется, а черт возьми обязательно отключать, если вы не хотите лишить своих игроков лицензий.
     

Поделиться этой страницей