Узлы VPN и IPv6-прокси
Где в панели: Infrastructure › VPN & Proxy nodes › Agents & external nodes (
/agents), VPN IP pools (/vpn/pool), IPv6 Proxy nodes (/vpn/proxy6/nodes). Сами услуги находятся в Services › VPN и Services › IPv6 Proxy. Оба модуля включаются в System › Admin › License & updates.
Назначение
NexCMP позволяет продавать доступ к VPN и прокси с выходом через принадлежащие вам IP-адреса на ваших серверах. Поддерживаются два типа узлов:
- VPN-узел. Небольшая программа на Go,
cmp-agent, запускается на вашем Linux-хосте. Она определяет публичные IPv4-адреса на хосте, открывает слушатели SOCKS5, HTTP и UDP на каждом проданном адресе и направляет исходящий трафик с того же IP, к которому подключился клиент (same-IP egress). Узел отправляет отчеты в панель каждые несколько секунд. - Узел IPv6-прокси. Прокси-сервис, выделяющий клиентам адреса из префикса IPv6, маршрутизируемого на хост. Панель устанавливает его автоматически по SSH.
Используйте их для перепродажи чистых IP-адресов в странах, где расположены ваши серверы.
Требования
VPN-узел
| Параметр | Требование |
|---|---|
| Операционная система | Дистрибутив Linux с systemd и ядром версии 4.15 или новее (поддержка IPv6 free-bind). Входящий в комплект бинарный файл агента собран только для x86_64 (amd64). |
| Права доступа | root для установки. Служба сохраняет только CAP_NET_ADMIN, CAP_NET_RAW и CAP_DAC_READ_SEARCH. |
| Инструменты | curl или wget, а также sha256sum (установщик прерывает работу без проверки файла). |
| Публичные адреса | Публичные IPv4-адреса, назначенные на интерфейсе хоста (по одному /32 на каждый), или маршрутизируемый на хост префикс, добавленный как дополнительная подсеть (IPv4 от /16 до /32, IPv6 от /48 до /128). Приватные диапазоны, CGNAT и диапазоны документации игнорируются. |
| Сеть, входящий трафик | Клиенты подключаются к каждому проданному публичному IP по портам 65001-65535 (TCP для SOCKS5 и HTTP, UDP для UDP associate). Каждая конечная точка использует набор из трех последовательных портов. |
| Сеть, исходящий трафик | HTTPS (443) к домену вашей панели. Агент также определяет свою страну через ip-api.com (HTTP) и ipinfo.io (HTTPS) с лимитом в 3.5 секунды. |
| Почта | Исходящие подключения к порту 25 всегда заблокированы; настройки для его открытия нет. |
| Docker, VPN и виртуальные интерфейсы | Интерфейсы с именами docker*, veth*, br-*, cni*, flannel*, virbr*, cali*, tun*, tap*, wg* и tailscale* не предоставляют адреса. |
| Зависимости | Модуль VPN, зона (создается автоматически по стране хоста) и панель NexCMP, доступная по HTTPS. |
Узел IPv6-прокси
| Параметр | Требование |
|---|---|
| Операционная система | Linux с systemd на x86_64. Команды systemctl, nft, ip, ss, sysctl и useradd должны присутствовать; в противном случае установка останавливается и сообщает имя отсутствующей команды. |
| Доступ для установки | Публичный IPv4-адрес (приватные, loopback и CGNAT-адреса отклоняются), порт SSH, учетная запись с правами root или sudo и ее пароль. Пароль используется только для установки и не сохраняется. |
| Свободные порты | Порты 80, 443 и все порты выше 60000 должны быть свободны. Установщик не останавливает и не изменяет уже запущенные службы; он сообщает о занятых портах и прекращает работу. |
| IPv6 | Публичный префикс от /32 до /64 внутри 2000::/3, который хост может использовать в качестве источника исходящего трафика, предоставленный как routed на хост или on-link с NDP proxy (см. ниже). |
| Сеть | Клиенты подключаются к IPv4 ноды по порту 80 (HTTP-прокси), порту 443 (SOCKS5) и портам 60001-65535 (один порт на каждый статический IP). У ноды нет сертификата, поэтому HTTPS-прокси отсутствует. Трафик уходит только по IPv6 и только на адреса назначения, имеющие IPv6-адрес. Нода запрашивает свою конфигурацию у панели по HTTPS. |
| ПО ноды на сервере панели | Демон ноды и его сетевой скрипт входят в релизный пакет NexCMP. Панель копирует их из папки установки (/opt/nexcmp/releases/<version>/bin или /opt/nexcmp/bin в кастомной сборке) на каждую ноду во время установки. Серверу панели также требуются sshpass и SSH-клиент; установщик добавляет sshpass, а на сервере, установленном до версии 1.4.2, его можно добавить с помощью sudo apt-get install -y sshpass. |
| Зависимости | Модуль IPv6 Proxy и URL панели, к которому обращаются ноды (IPv6 Proxy › Settings › Panel URL for nodes, по умолчанию https://<your license domain>). |
Подготовка инфраструктуры
VPN-узел
Подготовьте хост с поддерживаемой версией Linux и публичными IPv4-адресами для продажи, настроенными на сетевом интерфейсе или маршрутизируемыми на хост.
Если вы продаете маршрутизируемый блок, запланируйте указать его как Extra subnet при добавлении ноды. Агент устанавливает маршрут
local <block> dev lo, чтобы хост принимал трафик для каждого адреса в блоке, а затем сообщает найденные адреса. Агент также считывает реальную таблицу маршрутизации хоста и никогда не продает и не захватывает адрес шлюза: если блок содержит next-hop одного из маршрутов хоста (например, адрес маршрутизатора прямо подключенного блока on-link), агент устанавливает маршрутыlocalтолько для частей блока вокруг него, сообщает шлюз панели, а панель исключает этот адрес из пула и всех выделений. Он удаляет установленные маршруты при изменении дополнительной подсети или остановке агента.Откройте порты в брандмауэре. Разрешите входящий TCP и UDP 65001-65535 на публичных адресах и исходящий HTTPS к панели.
Необязательно: учет байтов по IP. Conntrack accounting (
net.netfilter.nf_conntrack_acct = 1) позволяет роли мониторинга подсчитывать байты на каждый IP. Панель может включить его, отправив агенту командуacct, которая также записывает/etc/sysctl.d/99-cmp-agent.conf. Самой роли VPN это не требуется.Проверьте доступность панели с ноды:
bashcurl -fsS -o /dev/null -w '%{http_code}\n' https://cloud.example.com/install.sh
Узел IPv6-прокси
Префикс IPv6 передается на ноду одним из двух способов. Установщик тестирует оба с помощью реальных исходящих соединений и сохраняет работающий вариант.
| Тип | Что это значит | Что вы настраиваете |
|---|---|---|
| Routed | Ваш апстрим-провайдер маршрутизирует префикс (например, /48 или /56) на собственный адрес ноды. Исходящие пакеты могут использовать любой адрес из префикса в качестве источника, а ответы возвращаются на ноду. | Запросите у провайдера маршрутизируемый префикс со следующим хопом (next hop) на ноду. На самой ноде ничего настраивать не нужно: сервис прокси использует transparent sockets, фиксированную таблицу policy-routing и nft. |
| On-link | Префикс /64 находится в той же локальной сети (LAN), что и нода. Ответные пакеты приходят только в том случае, если нода отвечает на запросы neighbour discovery для каждого используемого адреса (NDP proxy). | Сервис задает (только на этом интерфейсе) net.ipv6.conf.<if>.accept_ra=2, forwarding=1 и proxy_ndp=1, сохраняет прежние значения, восстанавливает их при остановке и блокирует форвардинг адресов пула, чтобы нода не становилась маршрутизатором для этого пула. |
Как работает проверка: нода пытается установить TCP-соединение с публичным IPv6-адресом (порт 443) со случайного адреса проверяемого префикса в течение 6 секунд. Кандидатами являются глобальные адреса на интерфейсах с префиксом /64 или короче, а также маршруты типа local, unreachable или blackhole от /16 до /64. Префикс короче /64 считается маршрутизируемым (routed), если случайный /64 внутри него работает.
Не используйте один и тот же префикс повторно
Префикс не должен пересекаться с префиксом другой ноды и не может быть шире префикса, уже входящего в собственный IPv6-пул панели. Подсеть /64 внутри пула панели разрешена. Пересечения отображаются в результате установки как «assign range … (node …)», и такой префикс пропускается.
Ограничения, применяемые самой нодой: клиенты не могут отправлять почту (порты 25, 465, 587, 2525) с адресов пула, а собственный IPv4-трафик демона ограничен ответами, обменом с панелью и DNS.
Подключение в NexCMP
VPN-узел
В System › Admin › License & updates включите переключатель VPN. См. Modules.

Перейдите в Infrastructure › VPN & Proxy nodes › Agents & external nodes. Добавить ноду можно двумя способами.
а. Установка по SSH. Нажмите + Add server (SSH) и заполните поля:
Поле Пример значения Server IPv4 address 192.0.2.50SSH port 22SSH user rootSSH password XXXXDisplay name node-ny-1(если пусто: по умолчанию имя формируется из IP)Server role External VPN / Proxy Node Zone assignment Auto by GeoIP (create / assign Zone) или существующая зона Extra subnet (optional) оставьте пустым для автосканирования интерфейсов или укажите маршрутизируемый блок, например 203.0.113.0/24Включить продажу после установки включите, чтобы сделать все обнаруженные адреса доступными для продажи Нажмите Connect & install. Панель подключится по SSH, запустит на ноде однострочный скрипт установки с одноразовым тикетом и отобразит имя ноды, GeoIP-локацию и обнаруженные диапазоны.

b. Ручная установка. Нажмите Generate manual install token. Команда отображается один раз; скопируйте ее и выполните на ноде:
bashcurl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --token XXXX --name node-ny-1Установка по токену регистрирует машину только для мониторинга: в целях безопасности панель не позволяет машине с общим токеном самостоятельно назначить себе роль VPN (добавление
--roles vpnк команде не имеет эффекта). После того как машина появится в списке, откройте ее и назначьте роль VPN вручную. Установка по SSH (вариант a) сразу назначает ноде роль VPN. Новый токен аннулирует старый; уже зарегистрированные хосты продолжают работать, так как используют собственный ключ.
Что делает установщик: скачивает
cmp-agent-linux-amd64из вашей панели, проверяет SHA-256, устанавливает его в/usr/local/bin/cmp-agent, регистрируется с помощью токена, записывает/etc/cmp-agent/agent.jsonи запускает службу systemdcmp-agent. Для удаления:curl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --uninstall.После первого heartbeat узел появляется в списке. Его страна определяется через GeoIP (сначала собственный опрос узла, затем база данных панели); если zone для этой страны еще не существует, она создается и становится общедоступной, а обнаруженные на хосте адреса превращаются в диапазоны пула.
Откройте Infrastructure › VPN & Proxy nodes › VPN IP pools, чтобы просмотреть диапазоны, их зону и узел, а также изменить зону, узел или переключатель Sellable для каждого диапазона. Действие Enable range позволяет использовать свободные IP диапазона для новых заказов; Disable range лишь останавливает новые выделения, а уже арендованные IP продолжают работать.

Перейдите в Services › VPN, настройте прайс-лист и включите продажи. Переключатель Sell VPN на вкладке Subscriptions аналогичен переключателю модуля VPN в License & updates.
Необязательно: переименуйте сервис. В Settings › Branding параметр VPN service display name изменяет отображение названия VPN-сервиса в клиентском меню, на странице заказа, странице сведений и в списке развертывания (например,
IPv4 Proxy,Datacenter ProxyилиStatic Residential Proxy; до 40 символов, если оставить пустым — сохраняетсяVPN). Это влияет только на надписи: маршруты, данные и API не изменяются.
Узел IPv6-прокси
В разделе System › Admin › License & updates включите переключатель IPv6 Proxy.
Откройте Infrastructure › VPN & Proxy nodes › IPv6 Proxy nodes и нажмите Add node (SSH). Введите IPv4-адрес узла, порт SSH, пользователя, пароль, необязательное имя и Reason (заносится в журнал аудита), затем нажмите Install.

Затем панель поочередно выполняет следующие действия: проверяет машину и порты, копирует демон, сетевой скрипт, service unit и файл окружения узла (токен узла и ключ подписи паролей), запускает probe для поиска доступных префиксов, сохраняет префиксы в пуле, запускает службу и ожидает первого отчета до 90 секунд. В Install log отображается каждый шаг.
Новый узел создает свою зону в состоянии off (на основе GeoIP IPv4-адреса узла). Включите зону в Infrastructure › Datacenter › Zone, чтобы клиенты могли ее выбрать.
Задайте общий Mbps cap для каждого узла (от 10 до 100000 для каждого направления). В разделе Services › IPv6 Proxy настройте прайс-лист и включите продажи.
Проверьте IPv6 Proxy › Settings › Panel URL for nodes. Ноды обращаются по этому адресу (
https://host, без пути), чтобы получать свою конфигурацию и отправлять отчеты. Пустое поле означаетhttps://<your license domain>. Это должен быть хост, адрес которого указывает напрямую на панель, чтобы собственный IPv4 ноды достигал ее без изменений.
Расписание ротации
Клиенты могут настроить интервал автоматической ротации от 30 до 600 секунд. В NexCMP это расписание (а также ежечасную очистку журналов подключений) выполняет панель; ноды применяют новый адрес примерно в течение 5 секунд.
Как узел отправляет отчеты
VPN-узел (cmp-agent) | Узел IPv6-прокси | |
|---|---|---|
| Регистрация | Одноразовый тикет или токен по HTTPS, затем собственный ключ | Однократная установка по SSH, затем токен узла |
| Heartbeat | Каждые 5 секунд (10 с для агента только мониторинга); панель может задавать от 3 до 300 с. После сбоя интервал увеличивается с шагом 5 с вплоть до 60 с | Узел отправляет отчет примерно каждые 60 секунд и запрашивает конфигурацию |
| Отображение в сети | Heartbeat в течение последних 60 секунд | alive в течение последних 120 секунд, иначе missed heartbeat |
| Изменение конфигурации | Применяется при следующем heartbeat | Применяется примерно в течение 5 секунд |
| Обновления | Панель может отправить команду upgrade с новой версией, URL и SHA-256 | Переустановка из строки узла |
Лимит трафика на VPN-ноде
Начиная с NexCMP 1.5.1 агент VPN-ноды отправляет объем переданного трафика с каждым heartbeat, а панель добавляет его к расходу по тарифу за текущий период. Это же число отображается клиенту (вкладки Overview и Bandwidth) и вам (VPN › Subscriptions, колонка Used и строка ноды).
- Отключение. Когда тариф исчерпывает свой объем ГБ за период, панель прекращает отправлять эндпоинты этого тарифа агенту, поэтому новые подключения отклоняются, а активные закрываются. Отключение происходит в течение одного heartbeat-интервала, поэтому тариф может незначительно превысить лимит. Тарифы с уровнем Unlimited никогда не отключаются.
- Возобновление. Обслуживание тарифа возобновляется в течение одного heartbeat-интервала после того, как клиент докупит трафик или когда начнется следующий период.
- Not measured. Узел, агент которого не передал данные об использовании (например, устаревший агент), отображается как Not measured, и его тарифы никогда не отключаются по объему GB.
- Обновите агент. Используйте агент 1.5.1 на узлах. Старые агенты по-прежнему учитываются, но они могут терять байты при сбое heartbeat, остановке endpoint или перезапуске, а также не закрывают открытые соединения при отключении тарифа. Выполните обновление из строки узла (Reinstall) или с помощью команды
upgrade. - Учитывается полезная нагрузка, проходящая через прокси, поэтому значение немного ниже (примерно на 1 %), чем фактический объем переданных по сети байтов.
Устаревшие дополнения VPN
Опции High IP Reputation, High Concurrency и High Priority Network больше не предлагаются при оформлении новых заказов. В действующих подписках выбранные дополнения сохраняются, но при продлении плата за эти архивные опции больше не взимается. Возврат средств за ранее оплаченные периоды не производится. Для перерасчета используется текущая цена дополнения в каталоге; если вы изменили эту цену или удалили дополнение, проверьте сумму продления подписки до даты следующего продления.
Проверка
В строке узла отображается статус онлайн. Для VPN-узла в Agents & external nodes показаны его зона, страна, роль и обнаруженные диапазоны.
В VPN IP pools перечислены диапазоны со свободными IP; на странице сведений о зоне отображается инфраструктура VPN.
Закажите тестовый тарифный план VPN или прокси. Клиент получает эндпоинт
ip:port, имя пользователя и пароль; подключитесь через него и проверьте, что видимый публичный IP совпадает с IP узла (например,curl --proxy socks5h://USER:XXXX@IP:PORT https://ifconfig.me).На узле IPv6 выполните на хосте:
bashsystemctl is-active <node service> nft list tables | grep proxy6 ss -ltn | grep -E ':(80|443|6[0-9]{4})\b'
Ограничения и примечания
- Хосты Windows могут запускать агент мониторинга, но не поддерживают роль VPN.
- Лимит трафика (ГБ за период) для VPN-тарифа: начиная с NexCMP 1.5.1 панель суммирует трафик, о котором сообщает агент VPN-узла, и отключает прокси тарифа при исчерпании лимита ГБ за период (см. «Лимит трафика на VPN-узле» ниже). Тарифы IPv6 Proxy не имеют лимита в ГБ; в них ограничивается скорость в Мбит/с на тариф.
- IPv4-адреса в тарифе VPN не ротируются. Клиент сообщает о попадании IP в черный список; вы или реселлер одобряете замену из той же зоны. Ротируются только IPv6 Proxy.
- За один heartbeat передается не более 64 диапазонов.
- Набор эндпоинтов VPN использует три порта на каждый проданный IP. В диапазоне портов 65001-65535 каждый IP обслуживает ограниченное число эндпоинтов (178 наборов портов); панель пропускает наборы, которые использовались ранее.
- Удаление прокси-ноды IPv6 разрешено только тогда, когда ни один тариф не содержит IP на ней. При этом удаляются диапазоны и токен ноды; ПО на хосте не деинсталлируется.
- Перепродажа диапазона, в котором также размещены ваши собственные виртуальные машины, возможна: VPN использует только порты 65001-65535 и может делить IP с другими сервисами.
Устранение неполадок
| Симптом | Причина | Решение |
|---|---|---|
| «ошибка регистрации (недействительный токен или сервер недоступен)» | Неверный или уже использованный токен, либо панель недоступна | Сгенерируйте новый токен или повторите установку через SSH. |
| «несоответствие подписи файла — STOP» | Загруженный агент не совпадает с опубликованной контрольной суммой SHA-256 | Проверьте папку панели /dl/ и убедитесь, что загружаемый файл не модифицируется в процессе передачи. |
| «установщик предназначен только для Linux» / «архитектура … пока не поддерживается» | Windows или архитектура, отличная от x86_64 (в релиз входит агент только для x86_64) | Используйте хост под управлением Linux на архитектуре x86_64. |
| Нода не появляется | Нода не может связаться с панелью по HTTPS | Проверьте curl https://<domain>/install.sh с ноды; проверьте DNS и брандмауэр. |
| Нода отображается с неверной страной | Определение страны завершилось сбоем, поэтому использовалась база адресов панели | Разрешите исходящий доступ к ip-api.com и ipinfo.io или явно выберите зону в форме SSH. |
| Диапазоны не обнаружены | Отсутствует публичный IPv4 на невиртуальном интерфейсе | Добавьте публичный адрес или укажите маршрутизируемый блок в поле Extra subnet. |
| VPN работает, но трафик выходит с другого IP | Проданный IP не назначен или не маршрутизируется на хост | Убедитесь, что IP настроен на интерфейсе или охвачен local … dev lo. |
| «на сервере панели отсутствует sshpass» | Хост панели не может авторизоваться на узлах по паролю | Выполните sudo apt-get install -y sshpass openssh-client на сервере панели, затем установите узел повторно. |
| "not found in the installed package" при установке IPv6-узла | Версия панели ниже 1.4.2 или кастомная сборка без файлов узла | Обновите NexCMP до версии 1.4.2 или новее; для кастомной сборки используйте build.sh, которая теперь упаковывает brandy-proxy6d и brandy-proxy6-net. |
| "SSH: …" в начале установки IPv6 или "SSH to internal/loopback addresses is not allowed" | Неверный порт, пользователь или пароль, SSH заблокирован либо адрес является приватным | Используйте публичный IPv4 ноды и проверьте доступ вручную с помощью ssh -p PORT USER@IP. |
| «архитектура … не поддерживается (только x86_64)» | Архитектура ноды не x86_64 | Используйте хост с архитектурой x86_64. |
| «на узле отсутствует команда: …» | Не установлены nft, ip, ss, sysctl, systemctl или useradd | Установите пакеты и запустите установку повторно. |
| «порты на узле заняты другой службой: … — 80, 443, 60001-65535 должны быть свободны» | Порт 80, 443 или порт выше 60000 занят | Перенесите другой сервис; установщик не останавливает его автоматически. |
| «на узле не найден префикс IPv6 с доступом в Интернет (сбой проверки исходящего трафика)» | Нет маршрутизируемого префикса, NDP-прокси невозможен или отсутствует исходящий IPv6 | Убедитесь, что префикс маршрутизируется на ноду, на интерфейсе есть связность IPv6 и ничто не фильтрует исходящий трафик. |
| «все обнаруженные диапазоны уже принадлежат другому узлу» | Префикс уже используется другой нодой | Удалите его с другой ноды или выберите другой префикс. |
| Установка завершается ошибкой "no initial report received from node" | Служба запустилась, но не связалась с панелью в течение 90 секунд | Проверьте URL панели, переданный узлам, и сетевой доступ к ней с узла по HTTPS; см. Install log. |
| В строке узла отображается missed heartbeat | Нет отчетов в течение 120 секунд | Проверьте службу на узле, системное время и сетевой маршрут к панели. |
| Клиенты не видят локацию с IPv6 | Зона отключена | Включите зону в разделе Zone. |