Шаринг CCcam и OScam: настройка сервера с нуля
Если вы впервые разбираетесь в теме шаринга, первое, что бросается в глаза — обрывочные гайды 2014 года, конфиги без объяснений и форумные советы вида «просто вставь строку и всё заработает». Ничего не работает. Эта статья — попытка объяснить, как устроен весь процесс технически, дать актуальные пути к файлам, реальные примеры конфигов и способы диагностировать проблемы самостоятельно.
Что такое шаринг и как он работает технически
Шаринг — это обмен control words (CW) между сервером с физической картой и клиентским ресивером по сети. Звучит просто, но дьявол в деталях цикла дешифровки.
Когда ресивер принимает зашифрованный поток, он не может расшифровать его самостоятельно без актуального CW. Он отправляет на сервер ECM-запрос, сервер обращается к карте, получает ответ и возвращает клиенту готовый control word. Весь этот цикл должен укладываться примерно в 8–10 секунд — именно столько живёт один CW до смены. Если ответ приходит позже — фриз на экране.
Принцип обмена control words (CW) между сервером и клиентом
CW — это 16-байтный ключ, который меняется каждые несколько секунд. Сервер хранит карту в кардридере, получает от неё актуальный CW и отдаёт его клиентам по сети. Клиент использует этот ключ для декодирования видеопотока в реальном времени.
Задержка передачи CW напрямую влияет на картинку. ECM time выше 600–700 мс — уже риск фризов на каналах с быстрой сменой ключа. Выше 1000 мс — фризы гарантированы.
Роль ECM и EMM в процессе дешифровки
ECM (Entitlement Control Message) — это зашифрованное сообщение в потоке, содержащее CW. Именно ECM отправляется на сервер для получения ключа. EMM (Entitlement Management Message) — совсем другое. Это сообщения, которые обновляют права на карте: новые подписки, обновление прав при смене ключей провайдером.
Без регулярного приёма EMM локальная карта со временем перестаёт расшифровывать каналы — провайдер меняет ключи, а карта их не получила. Для клиентского шаринга EMM обычно не нужен, но для локальной карты на сервере — обязателен.
Чем отличается локальная карта от сетевого шаринга
Локальная карта — физическая смарт-карта в кардридере ресивера. Она расшифровывает поток напрямую, без сети. Сетевой шаринг использует карту, которая физически стоит на удалённом сервере. Ваш ресивер только отправляет ECM и получает CW обратно.
С точки зрения ресивера разница минимальная — он просто получает CW. Но с точки зрения надёжности всё иначе: сетевое решение зависит от качества соединения, пинга до сервера и его загрузки.
Понятие 'фрифайла' (F-line) и приоритета каналов
F-line в CCcam — это строка конфигурации, которая описывает «виртуальную карту», которую сервер отдаёт клиенту. Синтаксис: F: username password uphops downhops. Uphops — сколько раз карта может быть переотдана выше по цепочке, downhops — сколько уровней вниз.
Приоритет каналов управляется через файл CCcam.prio. Без него при наличии нескольких ридеров с одним CAID ресивер выбирает произвольно — и может взять медленный ридер вместо быстрого. Это одна из самых частых причин фризов, о которой в гайдах почти не пишут.
Установка и базовая настройка OScam
OScam — открытый проект, который сейчас де-факто стандарт для серверной части. Он гибче CCcam, поддерживает несколько протоколов одновременно и нормально читается человеком. На Enigma2-ресиверах (Dreambox, VU+, Zgemma и подобных) он обычно ставится через feed или ipk-пакет.
Структура конфигов: oscam.conf, oscam.server, oscam.user, oscam.services
OScam использует несколько файлов вместо одного монолитного конфига:
- oscam.conf — глобальные настройки: логирование, веб-интерфейс, параметры кэша и балансировки
- oscam.server — описание ридеров: локальные карты, удалённые серверы по CCcam/newcamd
- oscam.user — аккаунты клиентов, которым ваш OScam отдаёт CW
- oscam.services — фильтры по SID/CAID для конкретных пользователей или ридеров
Каждый файл редактируется отдельно. Это удобно, когда нужно добавить нового клиента без перезапуска всего демона — OScam поддерживает горячую перезагрузку через веб-интерфейс.
Путь к файлам: /etc/tuxbox/config/oscam/ и /var/keys/
На большинстве Enigma2-ресиверов конфиги лежат в /etc/tuxbox/config/oscam/ или просто в /etc/tuxbox/config/. После обновления прошивки этот путь иногда сбрасывается — если OScam перестал работать после апдейта, первым делом проверяйте, на месте ли файлы.
SoftCam.Key и другие ключи для эмуляции — в /var/keys/. Логи по умолчанию пишутся в /tmp/.oscam/oscam.log. Директория /tmp/ на большинстве ресиверов живёт в RAM, то есть после перезагрузки лог обнуляется.
Настройка веб-интерфейса (httpport = 8888) и мониторинга
Минимальный рабочий oscam.conf:
[global]
logfile = /tmp/.oscam/oscam.log
maxlogsize = 200
nice = -1
preferlocalcards = 1
[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httpdynports = 1
[cache]
cachedelay = 0
Веб-интерфейс открывается на http://IP_ресивера:8888. Обязательно ставьте пароль — httpuser и httppwd — иначе любой в вашей сети видит статус всех ридеров и аккаунтов. Это не параноя, это базовая гигиена.
Пример секции [reader] для протокола cccam и newcamd
Для подключения к удалённому серверу по CCcam-протоколу в oscam.server:
[reader]
label = myserver_cccam
protocol = cccam
device = hostname.example.com,12000
user = myusername
password = mypassword
group = 1
reconnecttimeout = 30
cccversion = 2.3.0
cccmaxhops = 1
Для newcamd-подключения протокол меняется на newcamd, добавляется параметр key (14-байтный DES-ключ) и при необходимости caid. Newcamd чуть менее распространён сейчас, но некоторые серверы его поддерживают.
Запуск OScam в фоновом режиме и проверка: oscam -b -r 2. Флаг -b — фоновый режим, -r 2 — читать конфиги из текущей директории (удобно при отладке).
Настройка CCcam: CCcam.cfg и подключение линий
CCcam — проприетарный протокол, но его понимает и OScam, и множество других решений. Сам CCcam как программа до сих пор работает на старых ресиверах, но на новых системах OScam с CCcam-протоколом более актуален.
Синтаксис C-line (клиент) и N-line (newcamd)
C-line — строка подключения клиента к серверу CCcam:
C: hostname.example.com 12000 username password
Поля строго по порядку: хост, порт, логин, пароль. Порт по умолчанию — 12000, но сервер может слушать на любом. N-line используется для newcamd-серверов:
N: hostname.example.com 15000 username password 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Последние 14 байт — DES-ключ, его выдаёт провайдер вместе с данными аккаунта.
Параметры F-line для отдачи карты
F-line — это описание аккаунта, которому ваш сервер отдаёт доступ:
F: clientuser clientpassword 1 0 0 0 { 0:0:1 }
Первые два поля — логин и пароль клиента. Далее: downhops (сколько раз клиент может переотдать карту вниз), uphops, reshare и флаги. Значение 0 для downhops означает, что клиент не может никому переотдать карту — стандартная практика для защиты от перепродажи линий.
Расположение CCcam.cfg в /var/etc/
Основной конфиг CCcam лежит в /var/etc/CCcam.cfg. Это важно: не в /etc/, а именно в /var/etc/. На части ресиверов путь может быть другим — проверяйте через find / -name "CCcam.cfg" 2>/dev/null.
Критический момент, который ломает половину конфигов: кодировка файла. CCcam.cfg должен быть в UTF-8 без BOM и с Unix-переносами строк (LF, не CRLF). Если вы редактировали файл в Windows Notepad и сохранили как есть — он, скорее всего, сломан. Используйте Notepad++, выберите «Преобразовать в Unix» и уберите BOM. Или просто редактируйте файл прямо на ресивере через nano.
Опции CCcam.prio и CCcam.channelinfo
CCcam.prio позволяет задать, какой ридер использовать для конкретного канала. Пример строки:
C: 0500:000000:001
Без этого файла CCcam выбирает ридер по внутреннему алгоритму, который не всегда оптимален. Если у вас два ридера с одним CAID — прописывайте приоритеты явно.
CCcam.channelinfo — опциональный файл с названиями каналов для удобного отображения в статусе. На функцию шаринга не влияет, но помогает при диагностике.
Диагностика и решение типичных проблем шаринга
Большинство проблем со шарингом диагностируются через веб-интерфейс OScam за 5 минут. Проблема в том, что люди туда не заходят и сразу пишут на форум.
Канал не открывается: проверка ECM time и статуса reader
Заходите на http://IP:8888, раздел «Readers». Смотрите на статус ридера: он может быть в одном из состояний — CONNECTED, CARD, NO CARD, OFF.
CONNECTED без CARD означает: соединение с сервером есть, но карта не отдаёт ключ для этого CAID. Либо у сервера нет нужного пакета, либо CAID/provid в вашем конфиге не совпадает. Статус CARD с красным ECM time (>1000ms) — соединение есть, карта есть, но слишком медленно отвечает.
Быстрая проверка доступности сервера: telnet hostname 12000. Если соединение не устанавливается — проблема сетевая, не конфигурационная. Порт закрыт на сервере или у вас.
Фризы и заикания: причины и настройка кэша
Фризы на HD-каналах при нормальной работе SD — классическая картина. HD требует более быстрого ECM time из-за нагрузки на сервер: HD-каналы часто имеют более частую смену CW или сервер просто перегружен именно на этих CAID.
Cache-ex в OScam помогает: несколько серверов обмениваются закэшированными CW между собой, клиент получает ключ раньше, чем сервер успевает обработать ECM. Настраивается в oscam.conf:
[cache]
cachedelay = 0
cacheexwaittime = 300
cacheexpush = 1
Loadbalancing — ещё один инструмент. OScam умеет автоматически выбирать самый быстрый ридер для конкретного канала на основе статистики. Параметр lb_mode = 1 в секции [global] включает базовую балансировку.
Ошибки подключения (CONNECTED но no card / NDS error)
NDS error в логах — это сигнал, что сервер отклонил запрос на уровне условного доступа. Причины: неверный CAID, пакет не активирован на карте, или сервер намеренно не отдаёт этот канал для вашего аккаунта.
Провайдер шаринга может забанить аккаунт при одновременном подключении с нескольких IP. Это типичная политика защиты от перепродажи — один аккаунт, одно подключение. Если вы подключились с двух ресиверов одновременно с одними данными — ждите бана или разрыва второго подключения.
Анализ логов OScam и веб-статуса readers
Логи пишутся в /tmp/.oscam/oscam.log. Уровень детализации задаётся в oscam.conf:
[global]
logfile = /tmp/.oscam/oscam.log
debuglevel = 64
Значение 64 — стандартный уровень, достаточный для диагностики большинства проблем. Значение 255 — максимальный дебаг, лог растёт быстро. Смотрите на строки с ECM — там видно CAID, provid и время ответа.
В веб-интерфейсе раздел «Live Log» позволяет смотреть лог в реальном времени без SSH. Удобно, когда переключаете каналы и сразу видите, что происходит.
Как выбрать качественный сервер шаринга: критерии
Выбор сервера для шаринга — задача не очевидная, потому что красивые обещания на сайте никак не коррелируют с реальным качеством. Вот что реально имеет значение.
Ключевые параметры: стабильность ECM time и аптайм
Стабильный ECM time важнее минимального. Сервер с постоянным откликом 300–400 мс лучше, чем тот, у которого в среднем 150 мс, но с пиками до 2000 мс каждые несколько минут. Пики и есть причина фризов.
Аптайм проверяется со временем — минимум неделю нормальной работы, прежде чем делать выводы. Любой сервер выглядит отлично в первые два дня тестового периода.
Поддержка нужных пакетов (CAID и провайдеры)
Перед подключением уточните, какие именно CAID и provider ID поддерживаются. CAID — это идентификатор системы условного доступа (например, 0500 для Viaccess, 0604 для Irdeto). Недостаточно знать, что «спутник N поддерживается» — нужно знать, что именно ваш пакет на вашем провайдере есть в карте сервера.
Проверить после подключения просто: в веб-интерфейсе OScam в разделе ридера смотрите, какие CAID отображаются со статусом CARD. Если нужного CAID нет — карта его не покрывает.
Локация сервера и влияние пинга на скорость переключения
Сервер в той же стране или соседней — это в среднем 20–50 мс пинга против 150–200 мс у сервера на другом конце Европы. Разница в 130 мс на каждый ECM-запрос складывается в реальные фризы при переключении каналов.
Проверить пинг до сервера: ping hostname. Если выше 100 мс — при перегрузке сервера ECM time легко улетит за 1000 мс. Географическая близость — не маркетинговая деталь, а техническое требование.
Защита от перепродажи линий и ограничение коннектов
Хороший сервер ограничивает количество одновременных подключений на аккаунт. Если один аккаунт может подключиться с 10 IP одновременно — карта на сервере перегружается, и качество падает для всех.
Ограничение до 1–2 одновременных коннектов с одного аккаунта — признак того, что сервер контролирует нагрузку. Через веб-интерфейс OScam вы видите, сколько активных подключений у вашего аккаунта в данный момент.
Что лучше для шаринга — CCcam или OScam?
Для серверной части — OScam без вариантов. Он открытый, поддерживает несколько протоколов одновременно (cccam, newcamd, camd35), умеет cache-ex и loadbalancing. CCcam проще для новичка-клиента: вставил C-line в CCcam.cfg — и работает. Самая распространённая рабочая связка: OScam как сервер, отдающий CW через CCcam-протокол клиентам.
Какой порт используется по умолчанию в CCcam?
Стандартный порт CCcam-протокола — 12000 (TCP). Но сервер может быть настроен на любой другой порт — проверяйте в данных аккаунта. Для newcamd порт всегда индивидуальный, обычно в диапазоне 15000–15050. Веб-интерфейс OScam по умолчанию на порту 8888.
Почему канал показывает 'connected', но изображения нет?
Сервер доступен, но карта не отдаёт CW для нужного CAID или provid. Проверьте в веб-интерфейсе OScam статус ридера: если видите CONNECTED без CARD — карты для этого пакета нет. Если CARD есть, но канал не открывается — проверьте CAID и провайдер ID канала, возможно он в другом пакете.
Из-за чего возникают фризы при шаринге?
Чаще всего — высокий ECM time. Причины: большой пинг до сервера, перегрузка сервера, несколько ридеров с одним CAID без прописанного приоритета в CCcam.prio, или медленный канал между вами и сервером. Включите loadbalancing в OScam и настройте cache-ex если есть несколько серверов — это реально помогает.
Где лежат конфигурационные файлы OScam на Enigma2?
Обычно в /etc/tuxbox/config/oscam/. На некоторых прошивках — в /etc/tuxbox/config/ напрямую. Ключи SoftCam.Key — в /var/keys/. Логи — в /tmp/.oscam/oscam.log. После обновления прошивки пути иногда сбрасываются — проверяйте первым делом.
Можно ли поднять собственный сервер шаринга без покупки линий?
Да, если у вас есть официальная смарт-карта в кардридере ресивера. OScam настраивается как reader с protocol = internal или serial в зависимости от типа ридера, и отдаёт CW клиентам через F-line аккаунты или newcamd-пользователей. Важно помнить про EMM — карта должна регулярно получать обновления прав, иначе перестанет расшифровывать.