Кардшаринг сервер: настройка CCcam и OScam с нуля
Если вы уже разобрались с теорией и решили поднять собственный кардшаринг сервер шара, дальше начинается самое интересное — конфиги, порты и первые попытки подключить линию, которая почему-то не хочет заходить в онлайн. В этом материале я разберу настройку на CCcam и OScam так, как делаю это сам: с реальными путями к файлам, синтаксисом строк и разбором типичных ошибок в логах. Без воды про "выберите провайдера" — только техническая сторона вопроса.
Что такое кардшаринг сервер и как работает шара
Кардшаринг сервер шара — это по сути посредник между легальной картой доступа (и подпиской на неё) и клиентскими ресиверами, которые хотят смотреть те же каналы без физической карты в слоте. Сервер читает данные с реальной карты через ридер, извлекает control words (CW) и передаёт их клиентам по сети. Клиент получает не картинку и не поток — только короткий ключ, которым дешифрует уже принятый со спутника сигнал.
В терминологии кардшаринга есть несколько устоявшихся понятий, в которых новички обычно путаются. Шара — это сам процесс раздачи доступа с одной карты на несколько ресиверов. Реселлер — тот, кто перепродаёт доступ к чужому серверу, часто не имея собственных карт вообще. Локал (local card) — карта, физически подключённая к вашему серверу. Пир (peer) — другой сервер, с которым вы обмениваетесь картами напрямую, без промежуточных реселлеров.
Роль сервера и клиента в схеме шары
Сервер держит физическую карту в ридере (обычно это Smargo, Infinity USB или встроенный слот ресивера) и слушает входящие подключения на определённом порту. Клиент, в свою очередь, подключается к серверу по логину и паролю и запрашивает CW для того канала, который сейчас смотрит. Чем больше клиентов висит на одной карте, тем выше нагрузка по ECM в секунду — об этом ещё поговорим в разделе про фризы.
Чем отличаются протоколы CCcam, newcamd и CS378x
CCcam — собственный протокол одноимённого эмулятора, шифрованный, с автоматическим определением пиров и встроенным веб-интерфейсом. Newcamd (и его наследник CS378x в OScam) — открытый протокол, изначально написанный для Newcamd/MGCamd, требует явного указания DES-ключа в конфиге. Разница на практике: CCcam проще настраивать между двумя CCcam-серверами, а newcamd/cs378x чаще используют, когда сервер на OScam отдаёт линию клиенту на устаревшей прошивке или другом эмуляторе.
Что такое ECM, EMM и время отклика (ping)
ECM (Entitlement Control Message) — зашифрованное сообщение, которое ресивер получает из потока и отправляет на карту (локально или через сеть) для расшифровки в control word. EMM (Entitlement Management Message) — служебные сообщения об обновлении прав доступа на самой карте, клиенту они обычно не нужны. Ping в кардшаринге — это время между отправкой ECM-запроса на сервер и получением ответа с CW. Если ping выше 200-300 мс, начинаются подвисания картинки, потому что CW нужно получить до того, как истечёт текущий криптопериод (обычно 8-10 секунд).
Настройка сервера на CCcam: config-файлы и порты
Классический путь конфига CCcam на Enigma2-ресиверах — /var/etc/CCcam.cfg, на некоторых Dreambox и старых образах может быть /etc/CCcam.cfg или /var/keys/CCcam.cfg. Ключи карт эмулятор ищет в /usr/keys/ или в той же папке, где лежит сам конфиг — зависит от сборки образа.
Структура /var/etc/CCcam.cfg
Файл текстовый, построчный, каждая строка начинается с буквы, определяющей тип записи. Основные блоки: F-линии (кому вы отдаёте доступ), C-линии (к кому подключаетесь вы), N-линии (newcamd-клиенты), а также параметры сервера вроде SERVER LISTEN PORT и общие настройки кэша. Комментарии начинаются с #, регистр важен — эмулятор чувствителен к пробелам в блоках F-линий.
Настройка F-линии (сервер отдаёт клиенту)
F-линия описывает учётную запись, которую вы выдаёте своему клиенту. Синтаксис такой:
F: user password 2 0 0 { }
Здесь user и password — логин и пароль клиента, первая цифра (2) — максимальное число одновременных подключений с этим логином, дальше идут ограничения по маршрутизации (0 0 обычно означают "без ограничений по hop и без запрета"), фигурные скобки — блок для указания разрешённых CAID, если нужно ограничить клиента конкретным провайдером. Пустые скобки значат "отдавать всё, что есть на сервере".
Настройка C-линии (клиент подключается к серверу)
Если ваш сервер сам берёт линию у пира или у провайдера, это описывается C-линией:
C: host port user password
Например: C: 185.xx.xx.xx 12000 myuser mypass. Здесь host — IP или домен сервера, port — обычно 12000, но провайдер может использовать любой другой (об этом ниже, в разделе про смену порта). После добавления C-линии нужно перезапустить CCcam, иначе строка не подхватится.
Открытие и проброс порта 12000
Порт по умолчанию для CCcam-линий — 12000/TCP. Если ваш кардшаринг сервер шара стоит за роутером (а не напрямую в интернете), нужно пробросить этот порт с внешнего IP на локальный адрес ресивера или сервера через NAT-таблицу роутера. Веб-интерфейс CCcam по умолчанию висит на порту 16001 — его тоже стоит открыть, если хотите заходить в webinfo снаружи, но не забудьте поставить пароль в WEBINFO LISTEN PORT, иначе статистику линий увидит кто угодно.
Отдельная головная боль — ресивер за двойным NAT или под CGNAT у провайдера интернета (это часто встречается у мобильных операторов и некоторых кабельных провайдеров). В такой ситуации проброс порта на домашнем роутере ничего не даёт, потому что внешний IP вам не принадлежит физически. Решение — либо VPN с публичным IP на удалённой стороне (VPS в качестве прокси), либо DDNS в связке с сервисом, который поддерживает проброс через провайдера, либо просто работа в режиме клиента (C-линия), а не сервера.
Параметры кэша и allow emm
В глобальных настройках CCcam.cfg есть параметр CACHE EX ENABLE, включающий обмен CW между пирами (cache exchange) — полезно для ускорения ответа, но требует доверенных пиров. Отдельно стоит явно отключить передачу EMM клиентам, если она не нужна — большинство обычных зрительских линий используют только ECM, а EMM нагружает канал и карту без пользы. В самом CCcam это регулируется на уровне F-линии через ограничение CAID/provider, в OScam — отдельным параметром, о котором дальше.
Настройка сервера на OScam: dvbapi, oscam.server и oscam.user
OScam гибче CCcam, но и конфигурация сложнее — вместо одного файла у вас несколько, каждый отвечает за свою часть. На Enigma2-образах пути обычно такие: /etc/tuxbox/config/oscam/ или /var/etc/oscam/, на голом Linux-сервере — чаще /usr/local/etc/ или домашняя папка, указанная при компиляции.
Файлы oscam.conf, oscam.server, oscam.user
oscam.conf отвечает за глобальные настройки: логирование, dvbapi, порты веб-интерфейса. oscam.server описывает ридеры — как локальные карты, так и сетевые подключения к чужим серверам (аналог C-линий в CCcam). oscam.user описывает учётные записи клиентов, которым вы отдаёте доступ (аналог F-линий), с привязкой к группам.
Секция [cccam] и порт для отдачи линий
Чтобы OScam мог отдавать CCcam-совместимые линии, в oscam.conf должна быть секция:
[cccam]
port = 12000
Это открывает CCcam-протокол на стандартном порту. Если нужен ещё и newcamd/cs378x доступ, добавляется отдельная секция [cs378x] со своим портом, обычно 15000 или любым свободным — главное, чтобы не пересекался с уже занятыми.
Настройка reader для локальной карты
Локальная карта описывается в oscam.server примерно так:
[reader]
label = local_card
protocol = smartreader
device = /dev/sci0
group = 1
caid = 0100
Если же ваш сервер сам является клиентом другого сервера (получает линию по сети), reader выглядит иначе:
[reader]
label = upstream1
protocol = cccam
device = host,port
user = myuser
password = mypass
group = 2
Права доступа и группы (group) в oscam.user
Группа — это то, что связывает reader и клиента. Если у ридера стоит group = 1, а у клиента в oscam.user — group = 1,2, клиент получит доступ к картам из группы 1 и 2. Частая ошибка новичков — забыть прописать группу клиенту или указать её неверно: линия при этом онлайн, авторизация проходит, но каналы не открываются, потому что OScam просто не находит подходящий ридер под запрос ECM. Это и есть классический group mismatch, к которому вернёмся в разделе диагностики.
Веб-интерфейс на порту 8888 и мониторинг
По умолчанию веб-интерфейс OScam слушает порт 8888 (задаётся в [webif] секции oscam.conf параметром httpport). Через него удобно смотреть статус ридеров, активные подключения клиентов и статистику ECM по каждой карте в реальном времени — это основной инструмент диагностики, наравне с логом.
Диагностика: почему шара не работает и как читать лог
Когда линия не подключается или картинка сыпется, первым делом смотрю не в форумы, а в лог и веб-интерфейс. В 90% случаев причина видна сразу, если знать, на что смотреть.
Статус линий: online, offline, connecting
В CCcam webinfo (порт 16001, раздел Server → Cards или Clients) и в OScam status статус линии показывает текущее состояние подключения. Connecting означает, что TCP-соединение установлено, но авторизация ещё не прошла — если статус завис на этом надолго, скорее всего неверный логин/пароль или сервер режет по IP. Offline — соединение не устанавливается вообще, тут проблема на уровне сети: порт закрыт, хост недоступен, или сервер провайдера сейчас не работает.
Ошибки ECM: not found, timeout, rejected
ECM not found — сервер получил запрос, но не смог найти нужный CAID/provider ID на подключённых картах: либо линия не поддерживает этот канал, либо у оператора сменились ключи и появился новый CAID, которого нет на карте. Это частый кейс: оператор обновил систему, физическая карта осталась той же, а линия онлайн, логин и пароль верные — но каналы не открываются, потому что CAID изменился, и сервер провайдера пока не обновил маппинг.
ECM timeout — сервер нашёл карту, но не успел вернуть CW до истечения тайм-аута (обычно 3-5 секунд по умолчанию, регулируется параметром типа ecmtimeout в OScam). Причины — большой hop (см. ниже), перегруженная карта или банально плохой канал связи до сервера. ECM rejected — карта явно отказала в дешифровке: неправильные права доступа, устаревшая подписка или сервер намеренно блокирует определённые каналы для вашей учётной записи.
Проблемы с NAT, файрволом и портами
Если сервер стоит дома за роутером без проброса порта 12000 (или того порта, что использует провайдер), входящие подключения от клиентов просто не доходят — со стороны клиента это выглядит как offline. Проверить файрвол на самом Linux-сервере можно командой iptables -L -n — если правило DROP стоит на нужном порту, добавляем разрешение. Отдельный сценарий: провайдер сменил порт без предупреждения — вчера линия работала на 12000, а сегодня вдруг офлайн при абсолютно тех же логине и пароле. Первое, что стоит проверить в такой ситуации — не изменился ли порт, а не сами учётные данные.
Высокий ping и фризы картинки
Фризы при формально рабочей линии почти всегда связаны с временем отклика. Если ping до сервера выше 250-300 мс, control word может не успевать приходить до смены криптопериода — картинка замирает на 1-2 секунды каждые 8-10 секунд. Ещё одна частая причина — слишком большой hop (количество промежуточных серверов между вашим клиентом и реальной картой): каждый хоп добавляет задержку, и если карта раздаётся через два-три реселлера подряд, суммарный ping может улетать за секунду. И отдельная причина фризов у всех клиентов сразу — карта физически не справляется с потоком ECM-запросов в секунду, когда через неё реселлерится слишком много подключений одновременно; тогда часть запросов просто не успевает обработаться.
Проверка через telnet и веб-инфо
Самый быстрый способ проверить, доступен ли порт сервера снаружи — telnet host 12000 с другого устройства не в той же локальной сети. Если соединение устанавливается (курсор просто мигает или приходит ответ), порт открыт и сеть в порядке — значит проблема в логине/пароле или в самих правах на сервере. Если connection refused или timeout — дело в файрволе, роутере или сервер вообще выключен. В связке с этим полезно смотреть веб-инфо: там сразу видно, был ли вообще зафиксирован коннект от вашего IP, что сужает диагностику до пары минут вместо часа переписки с поддержкой.
Ещё один нюанс, который часто упускают: если на ресивере одновременно работают два эмулятора (например, softcam.key для локальной карты и CCcam или OScam для сетевой линии), может возникнуть конфликт — один эмулятор перехватывает ECM-запрос раньше другого, и сетевая линия формально онлайн, но фактически не используется. В таких случаях нужно явно указывать приоритет в dvbapi (в OScam это делается через параметр приоритета ридера) или вообще отключать один из софткамов, чтобы не было гонки за один и тот же запрос.
Как выбрать надёжного провайдера шары: критерии без имён
Я намеренно не называю конкретные сервисы — рынок кардшаринга меняется быстро, а хороший сервер сегодня может стать нестабильным завтра. Вместо конкретных названий разберём критерии, по которым стоит оценивать любого поставщика линии самостоятельно.
Uptime и время отклика сервера
Заявленный uptime сам по себе мало что значит без реальной проверки. На тестовом периоде (о нём ниже) стоит замерить ping в разное время суток — утром, в прайм-тайм вечером и ночью. Если разброс большой (например, 80 мс днём и 400 мс вечером), это признак перегруженного сервера или недостаточного канала у провайдера линии.
Легальность источника карт и подписки
Стоит проверять, что провайдер работает с легально оформленной подпиской и не раздаёт доступ с явно ворованных или клонированных карт — такие линии обычно живут недолго, потому что оператор спутникового вещания рано или поздно вычисляет и блокирует нелегальные ключи. Кроме юридической стороны, это ещё и вопрос стабильности: легальная подписка с одной картой на разумное число клиентов работает предсказуемо, а серые схемы с массовым клонированием card ID отваливаются пачками.
Количество local-карт против reshare
Чем больше в цепочке реселлеров между вами и физической картой, тем выше суммарный hop и тем выше риск фризов. Хороший признак — когда провайдер прямо говорит, сколько local-карт у него в наличии и какая часть клиентов сидит на прямом доступе, а не через второй-третий reshare.
Поддержка нужных протоколов и caid
Перед подключением стоит уточнить, поддерживает ли сервер нужный вам протокол (CCcam, cs378x/newcamd) и, главное, актуальный список CAID для интересующих операторов — особенно если оператор недавно менял систему кодирования. Список CAID имеет смысл сверить с тем, что видит ваш ресивер в информации о канале, до оплаты, а не после.
Тестовый период и техподдержка
Любой адекватный провайдер линии готов дать короткий тестовый доступ — часа на 2-4, этого достаточно, чтобы прогнать несколько каналов в разное время суток и посмотреть на стабильность. Отдельно стоит оценить скорость и адекватность техподдержки на этапе теста: если на простой вопрос про порт или CAID отвечают сутками, после оплаты будет не лучше.
Какой порт по умолчанию использует CCcam сервер?
По умолчанию CCcam использует порт 12000/TCP для передачи линий и порт 16001 для веб-интерфейса. Если сервер стоит за роутером, оба порта нужно пробросить (port forwarding) на локальный IP ресивера, иначе внешние клиенты не смогут подключиться.
Чем отличается C-линия от F-линии в CCcam.cfg?
C-линия описывает подключение вашего сервера к чужому серверу или пиру в роли клиента (синтаксис C: host port user password). F-линия, наоборот, описывает учётную запись, которую вы сами выдаёте своему клиенту (F: user password 2 0 0 { }). Проще говоря — C-линия для приёма линии со стороны, F-линия для раздачи.
Что означает ошибка ECM timeout и как её исправить?
Сервер нашёл карту для запроса, но не успел вернуть control word до истечения тайм-аута. Основные причины — слишком большой hop (много промежуточных серверов между картой и клиентом), перегрузка карты по числу ECM-запросов в секунду или нестабильный канал связи. Стоит проверить реальный ping до сервера и по возможности снизить количество хопов.
Где находятся конфиги OScam и как их редактировать?
Чаще всего пути такие: /etc/tuxbox/config/oscam/ на Enigma2-образах или /var/etc/oscam/. Основные файлы — oscam.conf (глобальные настройки), oscam.server (ридеры и сетевые подключения), oscam.user (учётные записи клиентов). Редактировать можно через FTP-доступ к файлам или прямо через telnet-консоль эмулятора, после изменений демон нужно перезапустить.
Почему картинка фризит при рабочей линии?
Чаще всего дело в высоком времени отклика (ping выше 250-300 мс), нестабильном канале у провайдера линии, слишком большом количестве промежуточных серверов (hop) или превышении лимита ECM-запросов в секунду на самой карте из-за большого числа клиентов. Стоит замерить ping в разное время суток и по возможности уточнить у провайдера реальную нагрузку на карту.
Можно ли одновременно использовать CCcam и OScam на одном ресивере?
Да, но нужно явно разграничить их роли, чтобы избежать конфликта за перехват ECM-запросов. Обычно OScam настраивают как основной сервер/reader с доступом к dvbapi, а CCcam подключают как клиента через C-линию, либо наоборот — в зависимости от того, какой эмулятор держит связь с физической картой. Приоритет обработки запросов задаётся на уровне настроек ридера или dvbapi.