Кардшаринг сервер: настройка CCcam и OScam с нуля
Поднять кардшаринг сервер с нуля — задача вполне решаемая, если понимать, что именно происходит внутри. Большинство проблем при настройке возникают не из-за сложности программ, а из-за непонимания структуры конфигов и того, как демон общается с клиентом. Эта статья — практическая инструкция с реальными путями, командами и примерами конфигов для CCcam и OScam.
Что такое кардшаринг сервер и как он работает
Всё начинается со смарт-карты в ридере. Карта умеет одно — расшифровывать ECM-запросы (Entitlement Control Message) и возвращать контрольное слово (CW, Control Word). Именно это слово каждые ~10 секунд декодирует видеопоток на ресивере. Без актуального CW — картинка замерзает.
Демон (CCcam или OScam) принимает ECM от клиента, передаёт на карту, получает CW обратно и отдаёт клиенту. Всё это укладывается в десятки миллисекунд. Параметр recv в логах — и есть это время от запроса до ответа.
Принцип обмена контрольными словами (DCW)
DCW (Decryption Control Word) меняется примерно каждые 10 секунд — это стандарт DVB-CA. За это время сервер обязан ответить клиенту. Если recv превышает ~800 мс, начинаются артефакты. Если больше 2–3 секунд — канал зависает.
Поток ECM-запросов постоянный: клиент отправляет их по каждому смотримому каналу. Поэтому нагрузка на сервер растёт линейно с числом подключённых клиентов.
Роли сервера и клиента в схеме шаринга
Сервер держит физическую карту (или подключается к вышестоящему серверу как клиент). Клиент — это ресивер с CCcam, MGcamd или OScam в режиме клиента. Один и тот же OScam может быть одновременно сервером для нижестоящих клиентов и клиентом для вышестоящего источника.
Чем отличается локальная карта от удалённого шаринга
Локальная карта — физический ридер подключён к серверу (USB-ридер типа Smargo или встроенный слот ресивера). Время отклика минимальное, обычно 100–300 мс. При удалённом шаринге добавляется сетевая задержка плюс время обработки на промежуточных серверах. Каждый лишний hop добавляет задержку.
Где проходит граница легального использования
Шаринг собственной, легально оплаченной карты внутри домашней сети — это использование оплаченного доступа. Раздача карты неограниченному кругу лиц или торговля доступом — другая история. В этой статье речь идёт о настройке собственной инфраструктуры с легальными картами.
Настройка сервера на CCcam: конфигурация шаг за шагом
CCcam — это де-факто стандарт протокола шаринга, хотя сам демон давно не обновляется (последняя версия 2.3.0 вышла в 2012-м). Но конфиг простой и понятный, что делает CCcam хорошим выбором для базовой раздачи с одной карты.
Структура и расположение файлов CCcam.cfg и CCcam.channelinfo
Основной конфиг — CCcam.cfg. Расположение зависит от прошивки ресивера:
- Enigma2 (OpenPLi, OpenATV):
/etc/CCcam.cfg - Старые образы Enigma1:
/var/etc/CCcam.cfg - На некоторых образах:
/usr/local/etc/CCcam.cfg
Файл CCcam.channelinfo хранит имена каналов и лежит рядом с основным конфигом. Его наличие необязательно для работы, но удобно для диагностики в телнет-консоли.
Параметры строки F: (логин, пароль, uphops, downhops)
F-line — это запись для клиента, которому вы разрешаете подключиться к вашему серверу:
F: username password 1 0 0
Разбор по полям:
- username — логин клиента
- password — пароль
- 1 — uphops: сколько шагов вверх клиент может использовать (1 = только ваши карты)
- 0 — downhops: на сколько уровней клиент может раздавать дальше (0 = запрет раздачи)
- последний 0 — флаги (0 = стандартные права)
Если поставить downhops = 1, клиент сможет сам раздавать карту дальше. Для контроля качества лучше держать 0.
Раздача локальной карты через C-line и F-line
C-line используется, когда сам CCcam-сервер подключается к вышестоящему источнику как клиент:
C: hostname.example.com 12000 mylogin mypassword
Для раздачи локальной карты C-line не нужна — демон сам видит карту в ридере. Нужно только прописать F-lines для клиентов и указать правильный порт прослушивания.
Настройка порта прослушивания и SID-ассайнментов
Минимальный рабочий конфиг сервера с локальной картой:
SERVER LISTEN PORT = 12000
ALLOW TELNET = yes
TELNET PORT = 16001
NEWCAMD LISTEN PORT = 15000
LOG FILE = /tmp/cccam.log
LOG LEVEL = 1
F: client1 pass123 1 0 0
F: client2 pass456 1 0 0
SID-ассайнменты нужны, если хотите ограничить конкретного клиента набором каналов. Синтаксис: F: user pass 1 0 0 { CAID:PROVID }. Без фигурных скобок клиент получает доступ ко всем картам сервера.
Перезапуск демона и проверка статуса
Жёсткое убийство и перезапуск:
killall -9 CCcam
sleep 2
/etc/init.d/ccam start
На Enigma2 это чаще выглядит так:
init 4 && sleep 2 && init 3
Статус подключений смотрите через телнет: telnet 192.168.1.100 16001. Команда l выводит список подключённых клиентов с временем отклика.
Настройка сервера на OScam: конфиги и протоколы
OScam — это то, что используют серьёзно. Активная разработка, поддержка десятков протоколов (CCcam, Newcamd, Camd3, CS378x), подробный веб-интерфейс и гибкость настройки ридеров. Конфигурация сложнее, но оно того стоит.
Конфиги лежат в зависимости от образа:
/etc/tuxbox/config/oscam/— стандартный путь на Enigma2/var/keys/— на некоторых OpenATV-образах/usr/local/etc/oscam/— на роутерах с OpenWRT
Файлы oscam.conf, oscam.server, oscam.user
oscam.conf — главный конфиг с секциями [global] и [cccam]:
[global]
logfile = /tmp/oscam.log
maxlogsize = 2048
nice = -1
waitforcards = 1
preferlocalcards = 1
[webif]
httpport = 8888
httpuser = admin
httppwd = oscampass
httprefresh = 10
[cccam]
port = 12000
version = 2.3.0
nodeid = auto
oscam.server описывает физические ридеры и удалённые источники:
[reader]
label = local_card
protocol = internal
device = /dev/sci0
detect = cd
caid = 0500
mhz = 357
cardmhz = 357
group = 1
emmcache = 1,3,2
oscam.user — учётки клиентов:
[account]
user = client1
pwd = pass123
group = 1
au = local_card
caid = 0500
maxconnections = 2
Раздел [cccam] и совместимость с CCcam-клиентами
Параметр version = 2.3.0 важен для совместимости со старыми CCcam-клиентами. Если клиент использует протокол версии 2.0.x, некоторые функции могут не работать. Попробуйте version = 2.1.4 или 2.0.11 для проблемных клиентов.
Порт в [cccam] должен совпадать с тем, что прописан в C-line клиента. По умолчанию 12000, но никто не мешает поставить другой — важно не запустить два демона на одном порту.
Чтение карты: reader, протокол, detect, mhz/cardmhz
Параметры mhz и cardmhz — частота работы ридера и карты. Дефолт 357 (3,57 МГц) работает для большинства карт. Но некоторые карты, особенно Nagravision 3 и Viaccess 5.x, могут требовать 600 или 800. Если карта постоянно делает reset — первым делом попробуйте mhz = 600 и cardmhz = 600.
Параметр detect = cd говорит ридеру проверять вставку карты через контакт CD (Card Detect). Для некоторых USB-ридеров Smargo нужен detect = none.
Веб-интерфейс мониторинга (httpport)
После запуска OScam открывайте в браузере http://192.168.1.100:8888. Там видно всё: состояние ридеров, активные соединения, статус каждого клиента, текущий recv по каждому запросу, EMM-активность карты. Для диагностики это на порядок удобнее, чем смотреть лог-файл.
Профили [account] и привязка caid/ident
Привязка по caid ограничивает клиента конкретной системой доступа. Если хотите дать доступ только к Viaccess (caid 0500), пишете caid = 0500. Для нескольких систем: caid = 0500,0604.
Параметр ident ещё точнее — привязывает к конкретному провайдеру: ident = 0500:040810. Полезно, когда на одной карте несколько пакетов, а клиенту нужен только один.
Сетевые требования: порты, проброс и DynDNS
Самая частая причина, по которой кардшаринг сервер недоступен снаружи — не ошибки в конфиге, а сетевая часть. Если демон запущен и локально работает, но клиент снаружи не коннектится — дело почти всегда в роутере или провайдере.
Какие порты открыть и почему 12000 по умолчанию
Стандартный порт CCcam-протокола — TCP 12000. Это просто исторически сложившийся дефолт в CCcam 2.x, ничего магического. Можно использовать любой порт выше 1024. Главное — чтобы в конфиге сервера и в C-line клиента стояло одно и то же число.
Дополнительно нужно открыть:
- TCP 16001 — телнет-консоль CCcam
- TCP 8888 — веб-интерфейс OScam (только если доступ снаружи нужен)
- TCP 15000 — Newcamd-порт, если используете этот протокол
Проброс портов (port forwarding) на роутере
В настройках роутера нужно создать правило: внешний TCP-порт 12000 → внутренний IP сервера (например, 192.168.1.50) порт 12000. IP сервера в локальной сети лучше сделать статическим или зарезервировать через DHCP по MAC-адресу — иначе после перезагрузки адрес может поменяться.
Важный момент: некоторые провайдеры используют CGNAT (Carrier-Grade NAT). В этом случае у вас нет реального публичного IP — вы сидите за NAT провайдера, и проброс порта на роутере физически не работает. Решение — VPN-туннель (WireGuard или OpenVPN) до VPS с публичным IP, либо обратный SSH-туннель. Это отдельная история, но знать об этом нужно заранее.
Статический IP или динамический DNS
Статический IP от провайдера — идеальный вариант, но стоит денег. Для домашнего сервера вполне достаточно DynDNS. Популярные бесплатные сервисы: No-IP, DuckDNS, FreeDNS. На роутерах с прошивкой DD-WRT или OpenWRT клиент DynDNS встроен; для других роутеров устанавливается отдельный ddclient.
В C-line клиента вместо IP пишете домен: C: myserver.duckdns.org 12000 user pass. Работает без нареканий, если ddclient обновляет запись при каждом изменении IP.
Проверка доступности порта снаружи
Проверить, что порт 12000 открыт снаружи, можно командой с другого устройства в другой сети:
telnet your.public.ip 12000
Если соединение устанавливается (даже если потом сразу рвётся) — порт доступен, демон отвечает. Если "Connection refused" — порт закрыт файрволом или демон не запущен. Если таймаут — порт фильтруется где-то на пути.
На сервере также проверьте iptables:
iptables -L INPUT -n | grep 12000
Чтобы разрешить входящие соединения:
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
Диагностика и устранение типичных проблем
Алгоритм отладки всегда одинаковый: смотреть лог, смотреть статус линий, смотреть recv. Почти все проблемы видны в логах, если их правильно читать.
Нет коннекта: проверка лога и handshake
В логе OScam успешный handshake выглядит так:
2026/01/15 14:23:11 c client1 CCCAM login granted
Если видите CCCAM login failed — неверный логин или пароль. Если коннекта нет вообще — проблема сетевая (порт, файрвол, CGNAT). Для CCcam смотрите лог в /tmp/cccam.log:
tail -f /tmp/cccam.log
Несовпадение версий протокола CCcam тоже даёт проблемы с handshake. Если клиент старый (версия 2.0.x) и не коннектится к OScam-серверу — попробуйте изменить version в секции [cccam] oscam.conf на более старую.
Connected, но каналы не открываются (freeze)
Коннект есть, статус F-line показывает ON, но канал не открывается — типичный признак несовпадения caid/provid. Канал требует, например, caid 0500 provid 040810, а у вашего источника карта с другим провайдером.
Проверьте в веб-интерфейсе OScam раздел Readers → Services: видно, какие caid/ident поддерживает карта. Сравните с тем, что требует канал (смотрите в логе в строке ECM запроса).
Ещё одна частая причина — провайдер карты сменил caid или ident после обновления условного доступа. Если вчера всё работало, а сегодня нет — первым делом проверьте актуальные caid/ident через веб-морду.
Большой recv и долгое переключение
recv выше 800–1000 мс ощущается как задержка при переключении каналов. В OScam-веб-интерфейсе это видно в разделе Connections. Причины:
- Много hops между вашим сервером и источником карты
- Перегруженный источник (слишком много клиентов на одну карту)
- Высокий пинг до сервера источника
- Медленный DNS при резолвинге hostname источника
Решение — найти более близкий или менее загруженный источник. Количество hops видно в логе: строка с hops= показывает глубину цепочки.
Ошибки чтения карты и reset карты
В логе OScam это выглядит как:
reader local_card card reset detected
или:
reader local_card [SMARTREADER] ATR not found
Первым делом — проверить частоту. Установить в oscam.server mhz = 600 и cardmhz = 600, перезапустить. Если не помогло — проверить питание ридера (USB-хаб без питания может давать просадки), попробовать другой ридер. Для Smargo USBридеров иногда помогает smargopatch = 1.
Несовпадение caid/provid
Это чаще всего причина, о которой не думают. Канал HD может работать через caid 0604, а SD-версия того же канала — через 0500. Если в [account] прописан только caid = 0604, SD-каналы открываться не будут, хотя карта их поддерживает.
Проверка: в логе OScam найдите ECM-запрос для нужного канала и посмотрите, какой caid и ident он запрашивает. Сравните с тем, что прописано в oscam.user и что поддерживает ридер.
Ещё одна ситуация — overload. Если к одной карте подключено 10 клиентов одновременно, карта просто не успевает обрабатывать запросы. CCcam не ограничивает число соединений по умолчанию. В OScam параметр maxconnections в [account] решает эту проблему — поставьте реальное ограничение, например 3–5.
Как выбрать источник или провайдера: критерии без имён
Если своей физической карты нет и нужно подключиться к удалённому источнику, критерии выбора важнее, чем конкретные названия. Хороший кардшаринг сервер определяется несколькими параметрами, которые можно измерить.
Стабильность аптайма и время отклика
Аптайм ниже 99% — это плохой знак. 99.5%+ при месяце работы — приемлемо. Среднее recv до 300 мс — хорошо, до 600 мс — терпимо, выше — начинаются проблемы с переключением каналов.
Просите тестовый доступ на 24–48 часов и мониторьте recv в реальных условиях — в прайм-тайм нагрузка выше, и именно тогда видно реальное качество источника.
Поддержка нужных caid и пакетов
Перед подключением уточните точные caid и ident для пакетов, которые вам нужны. Не "поддерживает Viaccess", а конкретно: caid 0500, ident 040810. Это важно, потому что один провайдер может держать несколько карт разных пакетов, и не всегда понятно заранее, что именно есть в наличии.
Защита от перепродажи и количество hops
Перепроданная линия — карта, которая раздаётся через несколько посредников. Каждый hop добавляет задержку и риск разрыва. Надёжный источник держит hops на уровне 1–2. Если видите в логе hops=4 или больше — это сигнал, что вы где-то в конце длинной цепочки.
Хорошие источники прямо указывают, что у них прямой доступ к карте. Проверить это косвенно можно по recv: менее 200 мс обычно означает, что карта физически близко.
Тестовый период и техподдержка
Нормальная практика — тест перед оплатой. Если источник не даёт тестовый доступ, это риск. Также важна скорость реакции поддержки: при падении сервера или смене caid нужно быстрое уведомление и восстановление.
Проверьте, есть ли у провайдера механизм уведомлений при обновлении caid/ident. Когда оператор меняет систему условного доступа, рабочий конфиг перестаёт открывать каналы без каких-либо изменений с вашей стороны — и без уведомления вы будете гадать, в чём проблема.
Часто задаваемые вопросы
Какой порт используется для кардшаринга по умолчанию?
Стандартный порт CCcam-протокола — TCP 12000. Его можно изменить в конфиге, но значение должно совпадать на сервере и клиенте. Дополнительно: телнет-консоль CCcam работает на порту 16001, веб-интерфейс OScam по умолчанию на 8888, Newcamd — на 15000.
Чем OScam лучше CCcam для сервера?
OScam активно развивается, поддерживает десятки протоколов, имеет подробный веб-интерфейс мониторинга и гибкую систему настройки ридеров и учёток. CCcam проще в начальной настройке, но последнее обновление было в 2012 году. Для серьёзного сервера OScam — единственный разумный выбор.
Почему клиент подключается, но каналы не открываются?
Чаще всего это несовпадение caid/provid: канал требует caid, которого нет у источника или который не прописан в учётке клиента. Также проверьте: правильно ли настроен ридер, нет ли overload на карте, совпадают ли ident. В OScam смотрите ECM-запросы в логе — там видно точный caid и ident, которые ищет канал.
Где находятся конфигурационные файлы CCcam и OScam?
CCcam.cfg обычно в /etc/CCcam.cfg на Enigma2 или /var/etc/CCcam.cfg на старых образах. Конфиги OScam (oscam.conf, oscam.server, oscam.user) — в /etc/tuxbox/config/oscam/ на большинстве Enigma2-образов или в /var/keys/ на некоторых OpenATV. На OpenWRT — /usr/local/etc/oscam/.
Нужен ли статический IP для кардшаринг сервера?
Не обязательно. При динамическом IP настройте DynDNS-клиент (DuckDNS, No-IP) и используйте доменное имя в C-line клиента вместо IP. Важно правильно пробросить порт на роутере. Если провайдер использует CGNAT — статический IP не поможет, нужен VPN-туннель до VPS с публичным адресом.
Что означает высокий показатель recv и как его снизить?
recv — время отклика в миллисекундах от ECM-запроса до получения контрольного слова. При recv выше 800–1000 мс переключение каналов становится заметно медленным. Причины: много hops в цепочке, перегруженный источник, высокий пинг. Решение — более близкий и менее загруженный источник карты или уменьшение числа промежуточных серверов.