Кардшаринг сервер: настройка CCcam и OScam с нуля
Если вы впервые поднимаете кардшаринг сервер — готовьтесь к тому, что половина туториалов в сети устарела, а другая половина написана людьми, которые сами не уверены, что делают. Я прошёл через это и расскажу, как оно работает на самом деле: с реальными конфигами, актуальными путями и диагностикой, которая реально помогает.
Что такое кардшаринг сервер и как он работает
Базовая идея проста. Ресивер получает зашифрованный сигнал — DVB-поток с платными каналами. Чтобы его расшифровать, нужен control word (CW). Ресивер отправляет на сервер ECM-запрос (Entitlement Control Message), сервер пропускает его через реальную смарт-карту, получает CW и отправляет обратно клиенту. Клиент расшифровывает картинку. Всё происходит каждые несколько секунд.
EMM (Entitlement Management Message) — это отдельная история. Это сообщения от вещателя для обновления прав на карте. Если не обрабатывать EMM, карта через какое-то время перестаёт давать валидные CW. Поэтому параметр au=1 в OScam — не просто опция, а необходимость для долгой работы локальной карты.
Принцип обмена control words (CW) и ECM/EMM
ECM уходит от клиента к серверу, CW возвращается обратно. Время этого обмена — ecm time — критически важный параметр. Если ecm time превышает 500–700 мс, начинаются фризы. Сервер на другом конце света с пингом 200 мс даст ecm time 400+ мс даже при идеальном канале — и каналы будут периодически подвисать.
Роли: сервер (share) и клиент (peer)
Сервер держит физическую смарт-карту и расшифровывает ECM локально. Клиент подключается к серверу и использует его карту удалённо. В терминологии CCcam: строка F: описывает friend — того, кому вы даёте доступ к своей карте. Строка C: — это подключение к чужому серверу как клиент. Один ресивер может быть одновременно и сервером, и клиентом.
Понятие hops — количество пересылок карты между серверами. Hops 0 означает, что карта физически вставлена в этот ресивер. Hops 1 — карта на соседнем сервере. Чем больше hops, тем выше задержка и вероятность фризов. На практике больше 3–4 hops уже нестабильно.
Чем отличаются протоколы CCcam, newcamd и cs378x
CCcam — закрытый протокол, стандартный порт 12000/TCP. Простой синтаксис конфига, но ограниченная гибкость. Newcamd — старый, стабильный протокол, порты обычно начинаются от 15000 и выше, настраиваются индивидуально под каждый CAID. CS378x (Camd35 over TCP) — протокол клонов CCcam, порт настраивается в конфиге. OScam поддерживает все три плюс радку других — это его главное преимущество перед монолитным CCcam-демоном.
Настройка сервера на OScam: конфиги и пути
OScam — это не просто замена CCcam. Это полноценный демон с веб-интерфейсом, поддержкой нескольких протоколов одновременно и гибкой настройкой прав для каждого клиента. На Enigma2-ресиверах его обычно ставят из feeds дистрибутива — OpenATV, OpenPLi, OpenViX.
Структура файлов: oscam.conf, oscam.server, oscam.user
Три основных файла конфигурации лежат в одной директории. На большинстве Enigma2-сборок это /etc/tuxbox/config/oscam/ или /var/etc/oscam/. Точный путь зависит от параметра --config-dir, с которым запущен демон. Проверить просто:
ps aux | grep oscam
В выводе увидите что-то вроде oscam --config-dir /var/etc/oscam. Вот туда и кладите конфиги.
Секция [global] и [cs378x]/[newcamd]
Минимальный рабочий oscam.conf выглядит так:
[global]
logfile = /tmp/oscam.log
loghistorysize = 4096
maxlogsize = 512
nice = -1
waitforcards = 1
preferlocalcards = 1
[cs378x]
port = 15000
[newcamd]
port = 15010@0B00:000000
[cccam]
port = 12000
reshare = 1
version = 2.3.2
Параметр preferlocalcards = 1 важен: OScam будет сначала пробовать локальную карту, и только если она не отвечает — идти к удалённым ридерам. Без этого может случиться, что локальная карта есть, но трафик уходит на сетевой ридер с бо́льшим ecm time.
Подключение ридера и DVB-карты в oscam.server
Файл oscam.server описывает источники карт. Локальный ридер — физическая карта в слоте ресивера:
[reader]
label = local_card
protocol = internal
device = /dev/sci0
caid = 0B00
detect = cd
mhz = 357
cardmhz = 357
group = 1
emmcache = 1,3,15,1
au = 1
Устройство /dev/sci0 или /dev/sci1 — встроенный картридер Enigma2-ресивера. Для внешнего USB-ридера (например Smargo) это будет /dev/ttyUSB0 с протоколом mouse. CAID 0B00 — один из распространённых идентификаторов систем условного доступа, подставьте свой.
Для сетевого ридера (подключение к другому серверу через CCcam-протокол):
[reader]
label = remote_cccam
protocol = cccam
device = host.example.com,12000
user = myuser
password = mypass
caid = 0B00,0500
group = 2
cccversion = 2.3.2
cccmaxhops = 2
Параметр cccmaxhops = 2 ограничивает принимаемые карты по количеству hops. Если провайдер отдаёт карты с hops 5 — вы их просто не получите, что правильно: такие карты нестабильны.
Создание учётных записей клиентов в oscam.user
Каждому клиенту — отдельный блок в oscam.user:
[account]
user = client1
pwd = secretpass
group = 1,2
au = 1
caid = 0B00
ident = 0B00:000000
services = +package_hd
maxconnections = 1
failban = 1
Параметр ident — это CAID:providerid. Если провайдер имеет несколько идентификаторов для одного CAID, а вы прописали только один — клиент будет получать ошибку для каналов с другим provider ID. Это одна из самых частых причин "карта есть, а канал не открывается".
Web-интерфейс мониторинга (httpport)
В oscam.conf добавьте секцию:
[webif]
httpport = 8888
httpuser = admin
httppwd = adminpass
httpallowed = 127.0.0.1,192.168.1.0/24
httprefresh = 3
httphideidx = 0
После перезапуска OScam веб-интерфейс доступен на http://[IP-ресивера]:8888. Там в реальном времени видно ecm time для каждого клиента, статус ридеров и историю запросов. Без этого диагностировать проблемы вслепую — занятие неблагодарное.
Настройка сервера и клиента на CCcam
CCcam живёт проще: один файл конфига, минималистичный синтаксис. Для многих задач этого хватает, особенно если нужен быстрый старт без глубокого погружения в параметры OScam.
Файл CCcam.cfg и его расположение
На Enigma2 файл обычно лежит по адресу /var/etc/CCcam.cfg. Иногда встречается /etc/CCcam.cfg — зависит от сборки прошивки. CCcam запускается как системный сервис и при старте ищет конфиг в стандартных местах.
Строки C: (клиент) и F: (сервер/friend)
Синтаксис строки подключения к серверу:
C: hostname.example.com 12000 username password yes
Последний параметр — использовать ли минимальный downhops (yes/no). Строка для выдачи доступа клиентам:
F: clientuser clientpassword 2 1 0 0 { 0B00:000000 }
Здесь: clientuser — логин, clientpassword — пароль, 2 — downhops (сколько hops карта уходит вниз к клиенту), 1 — uphops (сколько hops карта принимается вверх), 0 0 — параметры reshare.
Параметры hops, distance и reshare
Hops 0 в строке F: означает, что клиент видит только локальные карты. Hops 1 — видит карты с одним пересылом. Чем больше значение, тем больше ecm time и нестабильность. Для большинства случаев downhops = 1 или 2 — разумный предел.
Reshare определяет, может ли клиент пересылать полученную линию дальше. Значение 0 запрещает решару. Если вы хотите, чтобы клиент мог подключить к вашей карте своих клиентов — ставьте 1. На практике неконтролируемая решара быстро приводит к перегрузке сервера.
Совместная работа CCcam и OScam на одном ресивере
Здесь важный момент, который часто упускают: CCcam и OScam не могут одновременно слушать один и тот же порт. Если оба демона пытаются занять 12000/TCP — один из них упадёт при старте. Решение: запускать только OScam, а CCcam-протокол обеспечивать через секцию [cccam] в oscam.conf. OScam отлично эмулирует CCcam-сервер, клиенты подключаются по стандартному синтаксису строки C: и не замечают разницы.
Если всё же нужен именно CCcam-демон — отключайте один из них через init-скрипты. На Enigma2 это делается через меню плагинов или командой update-rc.d в зависимости от дистрибутива.
Открытие портов, NAT и сетевые требования
Поднять кардшаринг сервер локально несложно. Сделать его доступным из интернета — отдельная задача, и именно здесь большинство застревает.
Проброс портов на роутере (port forwarding)
Для входящих подключений нужно пробросить TCP-порт (например 12000 для CCcam-протокола, 8888 для веб-интерфейса — но последний лучше вообще не открывать наружу) с роутера на IP ресивера в локальной сети. Ресиверу желательно назначить статический локальный IP через DHCP-резервирование по MAC-адресу.
Серьёзная проблема — CGNAT. Если провайдер выдаёт вам серый IP (узнать можно сравнив IP на роутере с тем, что показывает curl ifconfig.me), проброс портов вообще не поможет. Вы за двойным NAT, и входящие соединения до вас просто не дойдут. Решения: VPN-туннель до VPS с белым IP, или запрос у провайдера белого IP (часто платная услуга, но недорогая).
Статический IP или DDNS для динамического адреса
Если белый IP есть, но он динамический — нужен DDNS. Сервисы вроде No-IP или DynDNS обновляют запись при смене IP. На большинстве роутеров есть встроенная поддержка DDNS-клиентов. Настройте обновление раз в 5 минут — тогда при смене IP клиенты переподключатся максимум через несколько минут.
Проверка доступности порта и firewall
На самом ресивере проверьте, что демон слушает порт:
netstat -tulpn | grep 12000
Должно появиться что-то вроде tcp 0 0 0.0.0.0:12000 0.0.0.0:* LISTEN. Если строки нет — демон не запустился или слушает другой порт.
Проверка снаружи через telnet с другой машины:
telnet your.external.ip 12000
Если соединение зависает или сразу обрывается — скорее всего проблема в роутере или провайдере блокирует порт. Некоторые провайдеры блокируют нестандартные исходящие порты — в этом случае помогает смена порта на что-то из диапазона 8000–9000 или использование 443/TCP (если провайдер не режет TLS-трафик выборочно).
Диагностика ошибок и типичные проблемы
Большинство проблем с кардшарингом решаются чтением логов и веб-интерфейса. Не наугад, а по конкретному алгоритму.
Чтение логов OScam (loghistorysize, logfile)
Логи OScam по умолчанию пишутся в файл, указанный в параметре logfile секции [global]. На Enigma2 типично /tmp/oscam.log — tmpfs, после перезагрузки лог обнуляется. Если нужна история — укажите путь на постоянный раздел. Параметр loghistorysize = 4096 определяет, сколько строк истории хранится в веб-интерфейсе.
В логах смотрим на строки с ECM-запросами. Нормальный обмен выглядит примерно так:
2026/03/15 14:23:01 c client1 (192.168.1.10) ECM 0B00/000000/01AB OK (local_card, 124ms) CW:AB12...
124 мс — это ecm time. Хорошо. Если видите 600–800 мс и выше — ждите фризов.
Статусы CONNECTED, DISCONNECTED, CARD NOT FOUND
В веб-интерфейсе OScam ридер может показывать три основных состояния. CONNECTED с зелёной иконкой — ридер работает, карты получены. DISCONNECTED — нет связи с удалённым сервером, проверьте хост/порт/пароль и сетевую доступность. CARD NOT FOUND — соединение установлено, но сервер не отдаёт карты нужного CAID — возможно, они у него есть, но вы не имеете прав на них по вашей линии.
Проблема freeze/фризы и таймауты ECM
Фризы при работающем подключении — самая частая жалоба. Порядок диагностики такой: сначала смотрим ecm time в веб-интерфейсе для проблемного клиента. Если ecm time стабильно высокий (>500 мс) — проблема в географии или перегрузке сервера, не в конфиге. Если ecm time нормальный, но фризы есть — смотрим на правильность hops и cccmaxhops.
Ещё одна причина: конфликт двух демонов. Если на ресивере запущены и CCcam, и OScam — они могут оба пытаться работать с картридером одновременно. Карта это не любит. Оставьте один демон.
Ошибки caid/ident mismatch
Канал может иметь несколько CAID — например, основной 0B00 и резервный 0500. В oscam.user у клиента прописан только 0B00. Когда канал переключается на 0500 — OScam отказывает в запросе, клиент видит "нет сигнала". Решение: прописать оба CAID в параметрах caid и ident. Смотрите конкретные CAID канала через zap-плагины или логи самого ресивера при переключении канала.
Provider ID (ident) — это вторая часть после двоеточия в ident = 0B00:000000. Значение 000000 означает "любой провайдер для этого CAID". Если ставите конкретный — убедитесь, что он точно совпадает с тем, что транслируется в сигнале.
Как выбрать надёжного провайдера кардшаринга
Технически подкованный пользователь, который поднял свой кардшаринг сервер, рано или поздно сталкивается с вопросом: подключиться к чужой карте или искать нормального провайдера. Критерии выбора вполне конкретные.
Критерии стабильности: uptime, ecm time, локальные карты
Первое, на что смотрю: есть ли у провайдера локальные карты или это чистый решарщик. Решара — это когда провайдер сам подключён к кому-то ещё и просто перепродаёт доступ. Каждое звено добавляет hops и ecm time. Хороший провайдер честно говорит: "у нас X локальных карт CAID 0B00, hops 1". Заявленный ecm time должен быть в пределах 100–300 мс для европейских серверов.
Uptime — смотрите не на маркетинговые "99.9%", а на реальные отзывы пользователей на форумах за последние 2–3 месяца. Сезонные просадки, смена провайдера каналами, технические работы — это нормально. Недели недоступности без объяснений — красный флаг.
Тестовый период и техподдержка
Нормальный сервис даёт тестовый доступ: 24–72 часа, без оплаты или с минимальным депозитом. За это время можно реально проверить ecm time, стабильность и наличие нужных CAID. Если тестовый доступ не предусмотрен — это либо самоуверенность, либо нежелание показывать реальное качество.
Техподдержка должна отвечать на конкретные технические вопросы — не "перезагрузите ресивер", а "у вас в логе ошибка ident mismatch, добавьте в oscam.user вот такой ident". Если поддержка не понимает, что такое oscam.user — разворачивайтесь.
Признаки ненадёжного сервиса
Несколько конкретных признаков, после которых я бы не стал платить. Только реселл-линии без упоминания локальных карт. Отсутствие тестового периода. Поддержка только через общий чат без тикет-системы. Невозможность проверить ecm time до оплаты. Обещания "всех каналов мира" за смешные деньги — локальные карты стоят денег, и если цена подозрительно низкая, значит решара с решары с решары.
И последнее: стабильный кардшаринг сервер требует нормального канала с низким пингом до клиентов. Провайдер на дешёвом VPS в дальнем дата-центре — не лучший выбор, даже если цена привлекательна.
Часто задаваемые вопросы
Какой порт по умолчанию использует кардшаринг сервер?
CCcam-протокол по умолчанию работает на порту 12000/TCP. Newcamd настраивается индивидуально — часто используют диапазон от 15000 и выше, при этом каждый CAID может получить свой порт (например, port = 15010@0B00:000000). CS378x (Camd35 over TCP) тоже настраивается в конфиге вручную. Любой из этих портов нужно пробросить на роутере, если сервер находится за NAT.
Чем отличается OScam от CCcam?
OScam — открытый проект, активно развивается, поддерживает одновременно несколько протоколов (CCcam, newcamd, cs378x, radegast и другие), имеет веб-интерфейс и гибкую систему прав для клиентов. CCcam — закрытый бинарник с простым синтаксисом конфига, но ограниченными возможностями. Для сервера предпочтительнее OScam: он может полностью эмулировать CCcam-протокол, так что клиенты на CCcam подключаются к нему без каких-либо изменений со своей стороны.
Где находится конфиг OScam на прошивке Enigma2?
Чаще всего это /etc/tuxbox/config/oscam/ или /var/etc/oscam/. Точный путь зависит от конкретной сборки прошивки (OpenATV, OpenPLi, OpenViX и другие могут различаться) и параметра --config-dir, с которым запущен демон. Проверить можно командой ps aux | grep oscam — в выводе будет полный путь. Основные файлы: oscam.conf, oscam.server, oscam.user.
Почему каналы фризят при работающем подключении?
Причин несколько: высокий ping до сервера (ecm time >500 мс), перегруженный сервер с большим количеством клиентов, неверные параметры hops/reshare, конфликт двух одновременно запущенных демонов (CCcam + OScam), несовпадение CAID или ident в настройках. Начинайте диагностику с просмотра ecm time в веб-интерфейсе OScam — это сразу укажет, проблема сетевая или конфигурационная.
Что означают hops и reshare в строках конфига?
Hops — количество пересылок карты между серверами. Значение 0 означает, что карта физически вставлена в данный ресивер (локальная). Hops 1 — карта на соседнем сервере. Чем больше hops, тем выше задержка и нестабильность. Reshare определяет, сколько раз клиент может перепередать полученную линию своим клиентам. Значение 0 полностью запрещает решару. В строках конфига CCcam: F: user pass downhops uphops reshare.
Как проверить, что мой сервер доступен извне?
Сначала на самом ресивере: netstat -tulpn | grep 12000 — убедитесь, что демон слушает порт. Затем с внешней машины: telnet ваш.внешний.ip 12000. Также можно использовать онлайн-сервисы проверки портов (введите в поиске "check open port online"). Если порт не отвечает извне при работающем демоне — скорее всего серый IP за CGNAT, или провайдер блокирует порт, или не настроен проброс на роутере.