Кардшаринг сервер: настройка CCcam и OScam 2026

Если ты уже держишь в руках ресивер на Enigma2 и доступ к шаре, но канал всё равно не открывается — значит, дело в деталях конфигурации. Именно здесь большинство и застревает. Этот материал — про конкретику: реальные пути к файлам, директивы с объяснением каждой строки и диагностику по логам. Правильно настроенный кардшаринг сервер — это не просто скопированный конфиг, а понимание того, что происходит под капотом.

Что такое кардшаринг сервер и как он работает

Смарт-карта, вставленная в картридер сервера, получает от ресивера зашифрованный ECM-пакет (Entitlement Control Message). Карта расшифровывает его и возвращает DCW (Descrambling Control Word) — 16-байтный ключ, который ресивер использует для декодирования видеопотока. Всё это происходит каждые несколько секунд, потому что провайдеры регулярно меняют ключи.

EMM (Entitlement Management Message) — это отдельный класс сообщений, через который сервер обновляет права на смарт-карте. Если EMM не проходят, карта со временем теряет доступ к пакетам. Именно поэтому в конфигах важно не отключать опцию Allow EMM без понимания последствий.

ecm time — время в миллисекундах от отправки ECM до получения DCW. Норма — до 400 мс. Всё, что выше, даёт фризы.

Принцип обмена control words (DCW) между сервером и клиентом

Клиент (твой ресивер) отправляет ECM на сервер по сети. Сервер передаёт его карте, получает DCW и отправляет обратно клиенту. Клиент применяет DCW к потоку — канал открывается. Вся цепочка должна уложиться до истечения текущего крипто-периода, иначе — фриз или чёрный экран.

Hops (хопы) — количество пересылок DCW между серверами до того, как он дойдёт до клиента. При 1 hop сервер держит карту локально. При 3+ hop DCW прошёл через несколько промежуточных серверов, и каждый добавляет задержку. Distance — похожая метрика, но в контексте CCcam означает удалённость карты в топологии шаринга.

Разница между сервером, клиентом и реселлером в схеме шаринга

Сервер — это узел, у которого есть физические смарт-карты в ридере. Клиент — тот, кто подключается к серверу и получает DCW. Реселлер держит сервер без собственных карт: он сам подключён к серверу с картами и перепродаёт доступ дальше. Реселлинг = лишние хопы и чужая точка отказа.

Один и тот же бокс может быть одновременно сервером для своих клиентов и клиентом по отношению к вышестоящему серверу — это peer-to-peer обмен, который используется в частных сетях обмена картами между доверенными пользователями.

Протоколы: CCcam, MGcamd, OScam-cs378x и CCcam-протокол

CCcam использует собственный бинарный протокол поверх TCP. newcamd (порт 15000 по умолчанию) — более старый открытый протокол, поддерживаемый большинством softcam'ов. cs378x — протокол OScam для связи между двумя OScam-нодами, работает по порту 10000+. MGcamd — отдельный softcam с собственным протоколом, совместим с newcamd-серверами.

На практике: если твой ресивер работает на OScam, а сервер отдаёт CCcam-линию — OScam умеет подключаться к CCcam-серверу через reader типа cccam. Совместимость есть, но каждое преобразование протокола — потенциальный источник задержки.

Настройка сервера на CCcam: структура конфигов

CCcam читает единственный файл конфигурации: /etc/CCcam.cfg. На некоторых сборках Enigma2 путь может быть /var/etc/CCcam.cfg — зависит от дистрибутива. Права на файл должны быть 644, владелец — root. Если файл открыт на запись другим пользователям, CCcam может отказаться стартовать.

Критический момент с кодировкой: файл должен быть в Unix-формате (LF, а не CRLF) и без BOM. Если редактировал конфиг в Windows Notepad и скопировал на бокс — CCcam не стартует без каких-либо понятных ошибок. Проверить и исправить: dos2unix /etc/CCcam.cfg.

Файл CCcam.cfg: основные директивы (F-line, C-line, N-line)

C-line — подключение к вышестоящему серверу (ты как клиент):

C: hostname.example.com 12000 myuser mypassword

F-line — создание аккаунта для клиентов, которые будут подключаться к тебе:

F: clientuser clientpassword 1 0 0 { 0:0:1 }

Разбираем F-line по полям: имя, пароль, uphops (максимальная дистанция карты, которую можно раздавать — обычно 1), AU (автообновление EMM, 0=выкл), share limit (0=без ограничений), и фигурные скобки с SID/CAID-фильтрами. { 0:0:1 } означает разрешить все карты без ограничений.

N-line — подключение по протоколу newcamd:

N: hostname.example.com 15000 myuser mypassword 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Последние 14 байт — DES-ключ для шифрования newcamd-соединения. Должен совпадать на клиенте и сервере.

Путь к конфигам в Enigma2 и права доступа

Стандартные расположения в зависимости от образа:

  • OpenPLi, OpenATV: /etc/CCcam.cfg
  • DreamElite, некоторые старые образы: /var/etc/CCcam.cfg
  • Логфайл: /tmp/CCcam.log

Установить права: chmod 644 /etc/CCcam.cfg && chown root:root /etc/CCcam.cfg. Перезапуск CCcam:

killall -9 CCcam && sleep 2 && CCcam -C /etc/CCcam.cfg &

Или через init.d если настроен: /etc/init.d/softcam restart.

Раздача линий клиентам через F: и приём шары через C:

F-line создаёт учётку, которую ты даёшь клиенту. Клиент прописывает у себя C-line с твоим IP/хостом, портом и этими кредами. Порт сервера задаётся директивой:

SERVER LISTEN PORT: 12000

Uphops в F-line — это фильтр глубины. Если у тебя карта с 1 hop, а клиент хочет её пересдать дальше, uphops=1 это запрещает. Для реселлерской схемы ставят uphops=2+, но это понижает качество сервиса всей цепочки.

Параметры: SID assign/reject, share limits, allow emm

Ограничить клиента конкретными каналами через SID-фильтр в фигурных скобках F-line:

F: clientuser clientpassword 1 0 0 { 0500:000000:1234,5678 }

Здесь 0500 — CAID (например, Viaccess), 000000 — ProviderID (0 = любой), 1234 и 5678 — SID разрешённых каналов. Если хочешь заблокировать SID — используй директиву IGNORE RESHARE SIDS.

Глобальная директива AU включает передачу EMM клиентам:

ALLOW EMM: yes

Без EMM карта постепенно теряет права. Включать только если действительно нужно — лишний трафик и нагрузка на карту.

Настройка сервера на OScam: oscam.server, oscam.user, oscam.conf

OScam — это другой уровень гибкости по сравнению с CCcam. Конфигурация разбита на несколько файлов, что поначалу кажется сложнее, но на деле даёт чёткое разделение: глобальные настройки, ридеры, пользователи, сервисы — всё отдельно. И в отличие от CCcam, OScam активно развивается.

Пути к конфигам зависят от сборки:

  • OpenPLi/OpenATV: /etc/tuxbox/config/oscam/
  • Альтернативный путь: /var/etc/oscam-config/
  • Задаётся флагом при запуске: oscam -c /etc/oscam/

oscam.conf: блоки [global], [cs378x], [newcamd], [cccam], [webif]

Файл oscam.conf — центральный. Минимальный рабочий вариант:

[global]
logfile = /tmp/oscam.log
debuglevel = 64
usrfile = /tmp/oscam.log

[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httpallowed = 127.0.0.1,192.168.0.0-192.168.255.255

[cccam]
port = 12001

[newcamd]
port = 15000@0500:000000

[cs378x]
port = 10000

debuglevel = 64 даёт подробные логи по ECM-запросам — достаточно для диагностики. На проде можно снизить до 4.

Важно: если запускаешь CCcam и OScam на одном боксе — порты не должны совпадать. Типичный конфликт: CCcam слушает 12000, OScam пробует поднять cccam на 12000 тоже. OScam не стартует или молча падает. Разноси порты: CCcam на 12000, OScam cccam на 12001.

oscam.server: описание ридеров

Каждый ридер в oscam.server — это источник DCW. Подключение к внешнему CCcam-серверу:

[reader]
label = myshare
protocol = cccam
device = hostname.example.com,12000
user = myuser
password = mypassword
caid = 0500
group = 1
reconnecttimeout = 30

Для локальной смарт-карты в USB-ридере:

[reader]
label = local_card
protocol = internal
device = /dev/sci0
caid = 0500
group = 1
detect = cd
mhz = 357

Параметр mhz задаёт частоту считывателя. Неверное значение = карта не отвечает или зависает. 357 = 3.57 МГц, стандарт для большинства карт. Если карта периодически отваливается — проверь питание USB-ридера (некоторые боксы дают нестабильное питание на USB) и попробуй снизить mhz до 300.

oscam.user: учётные записи клиентов, group, AU, betatunnel

[account]
user = client1
pwd = securepassword
group = 1
au = 1
betatunnel = 1833.FFFF:0500
services = sportpackage

group должен совпадать с group ридера — иначе пользователь не получит доступ к карте. au = 1 включает передачу EMM этому клиенту. betatunnel нужен для преобразования CAID — редкий случай, но иногда необходим для определённых пакетов.

Веб-интерфейс OScam: порт 8888, мониторинг статуса ридеров

Открой http://IP-бокса:8888 в браузере — там в реальном времени видно состояние каждого ридера, текущий ecm time, количество успешных и неудачных ECM-запросов. Это главный инструмент диагностики. Если ридер красный — соединение не установлено. Жёлтый — есть соединение, но нет активных запросов. Зелёный и ecm time < 400 мс — всё нормально.

Порт 8888 не открывай в интернет. Ограничь доступ в oscam.conf директивой httpallowed только локальной сетью.

Порты, протоколы и проброс через роутер

Чтобы клиенты подключались к твоему серверу из интернета, нужен либо статический внешний IP, либо DDNS. Большинство домашних провайдеров выдают динамический IP, который меняется при каждом переподключении или раз в сутки. Если IP сменился ночью, все клиенты получат обрыв до обновления DNS-записи — типичная ситуация при неправильно настроенном DDNS.

Ещё хуже — CGNAT (Carrier-Grade NAT). Ряд провайдеров вообще не выдаёт клиенту публичный IP, а сажает за общий NAT на уровне оборудования провайдера. В этом случае проброс портов на домашнем роутере не помогает физически — порт закрыт на уровне выше. Решение: VPS с публичным IP, на котором поднимается туннель (например, через WireGuard или SSH-туннель) до домашнего бокса. Сложно, но это единственный вариант при CGNAT.

Стандартные порты: CCcam 12000, newcamd 15000, cs378x/csp

  • 12000 — CCcam-протокол (дефолт)
  • 15000 — newcamd
  • 10000+ — cs378x (OScam-to-OScam)
  • 8888 — OScam WebIF (только локально!)
  • 16000 — MGcamd

Менять дефолтные порты на нестандартные — разумная базовая защита. Автоматические сканеры ищут открытые 12000 и 15000 по всему интернету. Перевесить CCcam на 34127 или любой другой выше 1024 — не панацея, но снижает нежелательный трафик.

Проброс портов (port forwarding) и работа за NAT

В роутере нужно создать правило: внешний TCP-порт X → внутренний IP бокса : порт X. Бокс должен иметь фиксированный IP в локальной сети (DHCP с резервированием по MAC или статический IP в настройках бокса).

Проверить, что порт реально доступен снаружи, с другой машины или телефона (не из той же сети!):

nc -zv your.external.ip 12000

Или через telnet: telnet your.external.ip 12000. Если соединение устанавливается — порт открыт. Если сразу "Connection refused" — брандмауэр или неверный проброс. Если зависает — пакеты идут, но сервис не отвечает.

Использование DynDNS / DDNS при динамическом IP

DDNS-клиент на роутере (встроен в большинство современных роутеров) или на самом боксе обновляет DNS-запись при смене IP. Период TTL для DDNS-записей обычно 60 секунд, но реальное распространение изменений может занять до 5 минут. Всё это время клиенты будут отваливаться.

Чтобы минимизировать проблему: настрой автоматический реконнект на стороне клиентов (в OScam это reconnecttimeout в oscam.server) и убедись, что DDNS-клиент обновляет запись сразу при смене IP, а не по таймеру.

Открытие портов в iptables и проверка

Если на боксе активен iptables, нужно разрешить входящие соединения на нужный порт:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

Для ограничения доступа только с конкретных IP — разумная защита сервера:

iptables -A INPUT -p tcp --dport 12000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP

Посмотреть текущие правила: iptables -L -n -v. Сохранить правила чтобы выжили после перезагрузки: iptables-save > /etc/iptables.rules.

Диагностика и устранение типичных ошибок

Большинство проблем с кардшаринг сервером решаются анализом логов, а не перебором конфигов вслепую. Алгоритм простой: смотришь лог, находишь строку с ошибкой, ищешь причину. Без логов — это гадание.

Чёрный экран / канал не открывается: проверка ECM time и CAID

Первый шаг — проверить, есть ли нужный CAID в фрилисте. В CCcam.log ищешь строки вида CAID: 0500 и сверяешь с тем, что требует канал. Узнать CAID канала можно в информации о транспондере в ресивере.

Распространённая ситуация: линия зелёная, но канал чёрный. Это значит соединение есть, но карты с нужным CAID/ProviderID/SID нет в шаре. В OScam webif это видно сразу: запрос ECM отправлен, но пришёл ответ E: (no matching reader). В CCcam.log будет строка card found but no ecm — означает, что карта с нужным CAID есть, но конкретный SID отфильтрован на стороне сервера.

Freeze и фризы: высокий ecm time, перегрузка ридера, hops

Фризы при воспроизведении — это всегда ecm time выше допустимого. Каналы с быстрым ECM (например, некоторые спортивные пакеты меняют ключи каждые 2-3 секунды) требуют ecm time не больше 200-250 мс. При 400+ мс — фриз гарантирован, даже если канал открывается.

В OScam webif смотришь колонку "Last ECM time" для каждого ридера. Если цифра нестабильна и скачет от 100 до 800 мс — ридер перегружен или соединение нестабильно. Причины: слишком много клиентов на один ридер, высокие хопы, медленная карта, сетевая нестабильность между серверами.

Перегрузка ридера — когда одна карта обслуживает 50+ одновременных ECM-запросов. Карта физически не успевает. Нормальная нагрузка — до 20-30 запросов в секунду, зависит от типа карты.

Клиент не подключается: неверный логин, закрытый порт, версия протокола

Чеклист при проблеме с подключением:

  1. Проверить порт снаружи: nc -zv IP port
  2. Убедиться, что логин/пароль в C-line клиента точно совпадают с F-line на сервере (регистр важен)
  3. Проверить версию протокола — старый CCcam 2.1.x может не подключиться к серверу на 2.3.x из-за разницы в хендшейке
  4. Посмотреть в CCcam.log строки login failed или wrong password
  5. Проверить, не заблокирован ли IP клиента в конфиге или iptables

Чтение логов CCcam и OScam для поиска причины

CCcam пишет в /tmp/CCcam.log. Включить подробный лог в CCcam.cfg:

DEBUG LEVEL: 12

Ключевые строки в CCcam.log и их значение:

  • connected to [host] — успешное подключение к серверу
  • can't connect to [host] — сервер недоступен (порт, IP, сеть)
  • login failed for [user] — неверные кредиты клиента
  • ECM time: 1250ms — критически высокий ecm time
  • card info: CAID 0500, provider 000000 — что реально есть в шаре

OScam: уровень логирования задаётся в oscam.conf полем debuglevel. Значение 64 — логировать ECM-запросы. Значение 255 — всё подряд, очень много данных. Для диагностики подключения достаточно уровня 16.

Как выбрать провайдера шары: критерии без имён

Выбор линии — это не про красивый сайт и обещания. Это про конкретные метрики, которые ты можешь проверить сам по логам в течение тестового периода. Нормальный провайдер всегда даёт тест перед оплатой — минимум 24 часа, лучше 48-72.

Стабильность аптайма и среднее ecm time как метрики качества

Средний ecm time ниже 200 мс — хорошая линия. 200-400 мс — приемлемо для большинства каналов. Выше 400 мс — будут фризы. Смотреть нужно не разовые замеры, а статистику за несколько часов в OScam webif: там есть минимальное, максимальное и среднее значение по каждому ридеру.

Аптайм 99%+ — это один обрыв в неделю максимум. Проверить реально только за несколько дней наблюдения. Смотри в логах на частоту строк can't connect и reconnect.

Поддержка нужных CAID/пакетов и локальных карт

Запроси фрилист до оплаты. Фрилист — это список CAID и ProviderID, доступных через шару. Убедись, что нужный тебе CAID есть в списке. Отдельно уточни — это локальная карта (1 hop) или реселлинг. Реселлинг = минимум 2 хопа, часто больше.

Локальная карта означает, что провайдер держит физическую смарт-карту в своём ридере. Это принципиально для ecm time и стабильности. Если провайдер сам не знает, сколько хопов у его карты — это плохой знак.

Тестовый период, прозрачность техподдержки, отсутствие овербукинга

Овербукинг — когда одну карту перепродают большему числу клиентов, чем она может обслужить. Симптом: нормальный ecm time ночью и фризы в прайм-тайм (вечер пятницы-воскресенья), когда все смотрят ТВ одновременно.

Тест нужно проводить именно в вечернее время в выходные — это пиковая нагрузка. Если в 21:00 в субботу ecm time улетает за 600 мс, а провайдер говорит "всё нормально" — это и есть перегруженная шара.

Признаки ненадёжного предложения: цена, хопы, поддержка

Слишком низкая цена при обещании "всех пакетов" — почти всегда реселлинг с 3+ хопами. Хорошая локальная карта не может стоить копейки — за ней стоят физические затраты.

Отказ показать фрилист или число хопов до оплаты — красный флаг. Нормальный провайдер без проблем даст эту информацию. Отсутствие тестового периода или тест меньше 24 часов — тоже тревожный сигнал.

Если в тестовом периоде часто видишь в логах reconnect и высокий разброс ecm time (от 80 до 900 мс) — линия нестабильна, и платить за неё не стоит.

Какой порт по умолчанию использует CCcam сервер?

По умолчанию CCcam слушает порт 12000. Задаётся директивой SERVER LISTEN PORT: 12000 в файле /etc/CCcam.cfg. Клиент указывает этот порт в C-line: C: hostname 12000 user password. Для базовой защиты имеет смысл сменить на нестандартный порт — автоматические сканеры постоянно ищут открытые 12000 по всему интернету.

Чем OScam лучше CCcam для сервера?

OScam поддерживает одновременно несколько протоколов — newcamd, cccam, cs378x — в одном процессе, тогда как CCcam работает только со своим протоколом. Веб-интерфейс OScam на порту 8888 даёт мониторинг ecm time в реальном времени, статистику по каждому ридеру и управление без перезапуска. Фильтрация по CAID, SID и группам пользователей в OScam на порядок гибче. CCcam проще настроить с нуля, но он не развивается с 2012 года. Для серьёзного кардшаринг сервера OScam — разумный выбор.

Почему канал не открывается, хотя линия зелёная?

Зелёная линия означает только установленное TCP-соединение с сервером — не наличие нужной карты. Проверь фрилист: есть ли CAID и ProviderID нужного канала. В OScam webif посмотри ответ на ECM-запрос — если E: (no matching reader), карты нет. Если E: (SID filtered) — канал заблокирован настройками на стороне сервера. В CCcam.log строка card found but no ecm указывает на несовпадение SID или фильтрацию на сервере.

Что такое hops (хопы) и почему важно их минимальное число?

Hops — количество промежуточных серверов между твоим клиентом и физической смарт-картой. 1 hop = карта стоит прямо в ридере сервера, к которому ты подключён. 3 hop = DCW прошёл через два промежуточных сервера. Каждый сервер в цепочке добавляет задержку — ecm time растёт. При 3+ хопах ecm time легко превышает 400-500 мс, что гарантирует фризы. Плюс каждый сервер в цепочке — точка отказа: упал один — все клиенты ниже потеряли сигнал.

Где находятся конфигурационные файлы OScam в Enigma2?

Стандартные пути: /etc/tuxbox/config/oscam/ или /var/etc/oscam-config/. Путь задаётся при запуске флагом -c: oscam -c /etc/oscam/. Основные файлы: oscam.conf (глобальные настройки), oscam.server (ридеры), oscam.user (клиенты), oscam.services (фильтрация каналов). Права доступа: 600 для файлов с паролями, 644 для остальных.

Как проверить, открыт ли порт сервера снаружи?

Проверять нужно с машины вне твоей локальной сети — иначе результат некорректный. Команда: nc -zv внешний.ip.адрес 12000. Или: telnet внешний.ip.адрес 12000. Если соединение установилось — порт доступен. Если "Connection refused" — порт закрыт брандмауэром или сервис не запущен. Если зависает без ответа — пакеты идут, но ACK нет (DROP в iptables вместо REJECT). При динамическом IP сначала убедись, что DDNS обновился до актуального значения.

Что означает высокий ecm time и как его снизить?

ecm time — время полного цикла расшифровки: от отправки ECM клиентом до получения DCW. Норма до 300-400 мс. Высокое значение вызвано: большим числом хопов (каждый добавляет 50-200 мс), перегруженным ридером (слишком много одновременных запросов), медленной или старой смарт-картой, нестабильным сетевым соединением между серверами. Снизить: выбрать линию с 1 хопом и локальной картой, проверить загрузку ридера в OScam webif, при возможности — переключиться на сервер в своём регионе с меньшим пингом.

Практические советы для стабильного просмотра

Даже самая стабильная линия CCCam или OSCam требует пары простых подготовительных шагов. Обновляйте прошивку ресивера, раз в неделю очищайте ECM‑кеш и держите 15–20% свободного места на USB‑накопителе или во встроенной памяти, чтобы кардридер записывал ключи без задержек.

При настройке антенны оставляйте запас по MER/BER: смещение на два градуса или ослабленный F‑коннектор чаще становится причиной “фризов”, чем сам кардшаринг. Держите под рукой короткий патч‑корд для проверки другого роутера и сохраните два профиля в OSCam — под TCP и под UDP — чтобы мгновенно переключиться, если провайдер начнёт фильтровать протокол.

Utgard.tv следит за каждым хабом 24/7, однако вы можете ускорить диагностику, если будете вести небольшой журнал действий. Записывайте время переключения канала, активный CAID и то, использовали ли вы Wi‑Fi или Ethernet. Такой мини‑отчёт позволит инженерам воспроизвести вашу конфигурацию в лаборатории и предложить решение не за часы, а за минуты.

  • Держите активными две линии: если первый сервер уходит на обслуживание, второй тут же подхватывает поток без повторного ввода логина.
  • Раз в месяц делайте замер скорости и задержек. Стабильных 1–2 Мбит/с при пинге до 80 мс достаточно для SD/HD, но если джиттер превышает 20 мс — переведите роутер на провод.
  • Сохраните в закладки страницу статуса Utgard.tv и Telegram‑бота @utgard_tv_bot — там появляются уведомления о работах раньше, чем успеют среагировать SEMrush или внешние мониторы.