Настройка reshare в OScam: полный гайд 2026

Главная Статьи Настройка reshare в OScam: полный гайд 2026

Дата публикации

23.06.2026

Настройка reshare в OScam: полный гайд 2026

Если вы уже подняли OScam, подключили ридеры и начали принимать карты от пиров — следующий шаг это OScam reshare: настройка того, кому, на сколько хопов и какие карты раздавать. Звучит просто, но именно здесь большинство и застревает: карты либо вообще не уходят дальше, либо улетают на все хопы подряд, либо клиент видит карту, но каналы не открываются. Разберём механику по шагам.

Что такое reshare в OScam и как работают hop-уровни

Reshare — это механизм пересдачи принятых карт другим пирам по протоколу CCcam или CS378x. Ваш сервер получает CW (Control Word) через ECM-запрос, а потом может передать эту карту дальше — клиентам или другим серверам в цепочке.

Каждая карта в системе несёт счётчик hop. Локальная физическая карта в ридере (смарткарт через PCSC или встроенный кардридер) — это hop 0. Когда вы принимаете её от соседнего сервера, она приходит с hop 1. Если тот сосед сам принял её ещё от кого-то — hop 2. И так далее.

Логика hop: local, hop1, hop2 и дальше

Когда ваш сервер реширит карту своему клиенту, клиент получает её с hop+1 относительно того, как вы сами её видите. То есть если у вас карта на hop 1 (от пира), то ваш клиент получит её как hop 2. Это имеет прямое значение для параметра cccmaxhops — если клиент ограничен тремя хопами, а карта приходит к нему уже на hop 3, он её просто не примет.

Локальный смарткарт-ридер (PCSC, serial, mouse) и сетевой пир ведут себя по-разному. Физическая карта всегда hop 0, независимо от конфига. Карта от сетевого пира начинается с hop 1 и растёт с каждым звеном.

Чем reshare отличается от прямого доступа к локальной карте

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

Параметр reshare как глобальный и как локальный override

Это самое важное, что нужно понять. Параметр reshare есть в трёх местах, и они взаимодействуют по принципу "побеждает наиболее ограничивающее значение":

  • Глобально в секции [cccam] файла oscam.conf
  • На уровне ридера в [reader] файла oscam.server
  • На уровне клиента в oscam.user

Если глобально стоит reshare = 2, но конкретный ридер имеет reshare = 0 — этот ридер не реширит никому. Клиент с reshare = 1 не получит карту глубже hop 1, даже если ридер разрешает hop 2. Именно это взаимодействие трёх уровней люди чаще всего не учитывают.

reshare = 0 означает конкретную вещь: карта доступна только самому серверу, дальше не уходит. Часто нужно при приёме карты, которую вы не хотите перераздавать.

Настройка reshare в oscam.server и oscam.user

Для тех, кто только начал OScam reshare: настройка ведётся в трёх конфиг-файлах. Путь к ним зависит от параметра -c при запуске OScam. По умолчанию это /etc/tuxbox/config/, но может быть /etc/oscam/, /usr/local/etc/oscam/ или любая другая директория. Проверить можно через ps aux | grep oscam — там будет видно параметр -c /path/to/config.

Основные файлы: oscam.conf (глобальные настройки), oscam.server (ридеры), oscam.user (клиенты).

Параметр reshare в секции ридера [reader]

В oscam.server для каждого ридера можно задать reshare отдельно. Пример для локального смарткарт-ридера:

[reader]
label = local_card
protocol = pcsc
device = /dev/pcsc/1
caid = 0500
reshare = 2
group = 1,2

Здесь reshare = 2 означает, что карту можно раздавать на глубину до 2 хопов. Для принятого от пира ридера обычно ставят меньше:

[reader]
label = peer_server
protocol = cccam
device = peer.example.com
port = 12000
user = mylogin
password = mypass
reshare = 1
cccmaxhops = 2
group = 3

reshare = 1 здесь ограничивает: карты от этого пира уйдут вашим клиентам, но те уже не смогут реширить их дальше.

Параметр reshare в секции клиента в oscam.user

В oscam.user reshare контролирует, насколько глубоко конкретный клиент может раздавать карты, которые он от вас получил:

[account]
user = client01
pwd = password123
reshare = 1
group = 1,3
cccmaxhops = 2

Если этот клиент — другой сервер OScam, у него reshare = 1 позволяет ему раздать карту своим клиентам, но те уже не смогут идти глубже. Если вы хотите, чтобы клиент вообще не реширил — ставьте reshare = 0.

cccmaxhops и cccreshare в глобальной секции [cccam]

В oscam.conf секция [cccam] задаёт глобальные дефолты:

[cccam]
port = 12000
reshare = 1
reshare_mode = 0
minimizecards = 0
updateinterval = 240
cccmaxhops = 10

reshare_mode — это отдельный параметр, который часто путают с reshare. Это не одно и то же:

  • reshare_mode = 0 — реширятся только карты физических ридеров (hop 0). Карты от пиров не раздаются. Самый жёсткий и безопасный режим.
  • reshare_mode = 1 — реширятся и физические карты, и полученные от пиров. Стандартный режим для цепочек.
  • reshare_mode = 2 — раздача определяется уровнем самой карты. Экзотика, используется редко.

Если у вас только физические карты и вы не хотите транзитить чужие — reshare_mode = 0 это правильный выбор.

Пример рабочей конфигурации с пояснением каждой строки

Вот конфиг для сервера с одной локальной картой и двумя клиентами — один доверенный (реширит дальше), второй нет:

oscam.conf:

[cccam]
port = 12000
reshare = 2
reshare_mode = 1
cccmaxhops = 5

oscam.server:

[reader]
label = smartcard_local
protocol = pcsc
device = /dev/pcsc/1
caid = 0500
reshare = 2
group = 1

oscam.user:

[account]
user = trusted_peer
pwd = secretpass
reshare = 2
group = 1
cccmaxhops = 5

[account]
user = end_client
pwd = clientpass
reshare = 0
group = 1
cccmaxhops = 3

trusted_peer получает карту и может реширить её своим клиентам (reshare = 2). end_client карту видит и декодирует, но дальше не раздаёт (reshare = 0). Ридер допускает глубину 2, глобально допускается 2 — итоговый лимит для trusted_peer именно 2.

Контроль глубины раздачи и фильтрация карт

Просто выставить reshare недостаточно. Без нормальной фильтрации карты могут уходить куда не надо, порождать дубликаты и создавать петли ECM.

cccmaxhops: ограничение принимаемой глубины

cccmaxhops задаёт максимальный hop карты, которую ваш сервер вообще будет принимать от пира. Стоит cccmaxhops = 3 — карты на hop 4 и выше ваш сервер проигнорирует. Параметр есть и в глобальной секции [cccam], и на уровне конкретного ридера-пира.

Это важно не только для качества сигнала, но и для защиты от мусора. Карты с hop 8-10 обычно имеют высокий ECM time и скорее всего уже не рабочие по цепочке.

Связка reshare + maxhops для защиты от лупов

Кольцевое соединение — классическая проблема. Сервер A реширит карту серверу B, сервер B реширит её обратно серверу A. Возникает луп: карта гуляет по кругу, ECM-запросы множатся, время декодирования растёт.

Правильная защита: cccmaxhops на уровне, где петля невозможна физически. Если A отдаёт B карту с hop 1, и B её реширит обратно как hop 2, то при cccmaxhops = 1 на сервере A он эту карту на hop 2 уже не примет. Луп разорван.

Дополнительно: не стройте кольцевые линки вообще, если этого не требует архитектура. Два сервера, каждый из которых реширит другому — это всегда риск лупа.

Ident-фильтры: раздача только нужных caid:provid

Параметр ident в секции ридера позволяет реширить только конкретные пакеты. Формат: caid:providerid, несколько через запятую:

[reader]
label = peer_filtered
protocol = cccam
device = peer.example.com
port = 12000
user = login
password = pass
ident = 0500:032830,041700
reshare = 1
group = 2

Так этот ридер будет реширить только карты CAID 0500 с провайдерами 032830 и 041700. Все остальные карты, которые он принимает, до ваших клиентов не дойдут. Очень удобно, когда пир отдаёт пачку карт, но нужны только конкретные пакеты.

group в oscam.server и oscam.user для разграничения доступа

Группы — это числа от 1 до 64. Клиент видит ридер только при совпадении хотя бы одной группы. Ридер в group = 1,2 и клиент в group = 2 — видят друг друга. Ридер в group = 3 и клиент в group = 1 — нет.

Это мощный инструмент изоляции. Можно сделать группу для доверенных пиров (group = 5), группу для обычных клиентов (group = 1), и локальные карты выдавать только группе 5. Обычные клиенты их просто не увидят, даже если reshare разрешает.

Частая ошибка: reshare выставлен правильно, но group не совпадает — карта не видна клиенту. Всегда проверяйте group одновременно с reshare.

Проверка reshare через веб-интерфейс и логи

Конфиг написан — теперь нужно убедиться, что всё работает. Без мониторинга это гадание на кофейной гуще.

WebIf: вкладки Status, Readers, Entitlements

WebIf включается в oscam.conf:

[webif]
httpport = 8888
httpdyndns = 0
httprefresh = 10

После рестарта OScam открывайте http://your-server:8888. Во вкладке Status видны все подключённые клиенты и пиры в реальном времени. Во вкладке Readers — состояние каждого ридера, количество карт и последнее время декодирования. Вкладка Entitlements показывает, какие карты реально доступны через каждый ридер — это важно при диагностике "карта есть, декода нет".

Колонка hop и share count в списке карт

В Readers и Entitlements рядом с каждой картой видны hop и количество шар (share count). Если вы отдали карту пиру и он подключён — в его статусе карта должна появиться с hop на единицу больше вашего. Видите hop 2 у клиента при вашем hop 1 — reshare работает корректно.

Share count показывает, сколько пиров видят эту карту. Если карта есть, но share count = 0 — никто не принял. Проверяйте group и reshare.

Чтение oscam.log: ECM time, found/not found, decode

Основной инструмент диагностики — oscam.log. Нормальная строка декодирования выглядит так:

2026/01/15 14:23:01 c (client01) ECM caid 0500 from peer_server: found (45 ms)

45 ms — хорошее время. Если видите 800 ms и выше — что-то не так: лишние хопы, медленный ридер или загруженный пир. Строка not found означает, что ридер не смог расшифровать ECM. cache — ответ пришёл из кэша, не из ридера.

Если reshare не работает, в логе клиента не будет строк ECM от вашего сервера вообще. Это уже указывает на проблему соединения или group/reshare конфига.

Команда oscam -b -r 2 и уровни дебага

Для глубокой диагностики запустите OScam с повышенным уровнем логирования:

oscam -b -c /etc/oscam -r 2

Флаг -r 2 включает расширенный лог ридеров. В WebIf уровень дебага можно поднять до 4 (CW-данные) или 8 (клиентские запросы) через Settings → Debug. Но на продакшне не держите debug 8 постоянно — лог разрастается быстро.

Типичные проблемы reshare и их решение

Практика OScam reshare: настройка часто ломается в предсказуемых местах. Вот системный разбор.

Карты не реширятся: reshare=0 или несовпадение group

Порядок диагностики: сначала oscam.log (есть ли вообще соединение с пиром?), потом WebIf Status (пир подключён?), потом Entitlements (карта видна?), потом конфиг (group совпадает? reshare не 0?). Именно в таком порядке, а не наоборот.

Конкретные проверки:

  • reshare в секции [cccam] oscam.conf — не равно 0?
  • reshare у конкретного ридера в oscam.server — не перекрывает глобальный?
  • reshare в oscam.user для этого клиента — разрешено?
  • group у ридера и у клиента — пересекается хотя бы одна цифра?
  • reshare_mode = 1 если реширяете карты от пиров, а не только локальные?

Дубликаты карт и лупы при кольцевых соединениях

Симптом: одна и та же карта появляется дважды в Entitlements, ECM time нестабильно, иногда скачет до 2-3 секунд. Причина — кольцо: A → B → A.

Решение: cccmaxhops = 1 на обоих серверах если хопы не нужны, или явно ограничить на уровне ридера. Ещё вариант — параметр blockCaIdent чтобы заблокировать конкретный CAID от конкретного пира, которому вы уже его отдали.

Высокое ECM time и таймауты на дальних хопах

ECM time растёт с каждым хопом: каждое звено добавляет задержку сети плюс время обработки. Hop 1 с пингом 20 ms — ожидаемо 60-100 ms. Hop 4 через медленных пиров — легко 500+ ms.

Что делать: снизить cccmaxhops (не принимать карты глубже hop 2-3), включить OScam cache (секция [cache] в oscam.conf, usecache = 1 в ридере), убедиться что пинг до пира адекватный.

Пир видит карту, но декодирования нет (no entitlements)

Самая противная проблема. Карта в WebIf пира есть, hop правильный, но каналы не открываются. Три частых причины:

Первая — реширяется карта-заглушка без реальных прав. Бывает когда ридер сообщает о карте, но подписка истекла. Проверьте Entitlements у себя: есть ли реальные права (valid period)?

Вторая — карта пришла к пиру на максимальном hop, но рабочего источника уже нет. Пир видит метаданные карты, но ECM-запрос уходит в никуда по цепочке без рабочего ридера на конце.

Третья — неверный ident или CAID. Пир принимает карту как CAID 0100, а канал шифрован как CAID 0500. Такое бывает при неправильных параметрах ident в oscam.server. Смотрите oscam.log на стороне клиента: там будет "not found" или "wrong caid".

Что означает reshare = 0 в OScam?

Карта доступна только самому серверу — декодирует она, дальше по цепочке не уходит. Используется когда хотите принимать карту для себя, не делясь с пирами. Если выставить reshare = 0 в oscam.user у клиента — он видит карту и декодирует, но его клиенты (если он тоже сервер) её не получат.

Чем отличается reshare в oscam.server от reshare в oscam.user?

В oscam.server параметр ограничивает раздачу конкретного ридера — сколько хопов карта с этого ридера вообще может уйти. В oscam.user — сколько хопов разрешено конкретному клиенту при получении. Итоговое ограничение — наиболее строгое из двух. Например, ридер разрешает reshare = 3, но клиент ограничен reshare = 1 — дальше hop 1 карта не уйдёт.

Как ограничить глубину раздачи карт?

Через cccmaxhops в секции [cccam] (глобально) и на уровне конкретного ридера-пира в oscam.server. Плюс параметр reshare на всех трёх уровнях. Связка cccmaxhops + reshare не даёт картам уходить дальше заданного hop и предотвращает лупы при кольцевых соединениях.

Почему пир видит карту, но каналы не открываются?

Чаще всего реширяется карта без реальных прав (подписка истекла или ридер отдаёт заглушку). Ещё вариант — карта на максимальном hop без рабочего источника в конце цепочки. Третья причина — неверный ident или CAID. Диагностика: Entitlements в WebIf (есть ли реальные права?) + oscam.log на стороне пира (статус ECM-запросов).

Что такое reshare_mode и какое значение выбрать?

reshare_mode определяет, какие карты вообще участвуют в раздаче. 0 — только физические карты ваших ридеров (hop 0). 1 — физические плюс принятые от пиров. 2 — режим уровня карты, экзотика. Для контролируемой раздачи с минимальным риском лупов — reshare_mode = 0, если у вас есть локальные карты. Если вы транзитный сервер без физических ридеров — нужен режим 1.

Как проверить, что reshare реально работает?

В WebIf (порт 8888 по умолчанию) вкладка Status — пир должен быть активен. В его списке Entitlements карта должна показываться с hop+1 относительно вашего. В oscam.log на стороне пира — ECM-запросы со статусом "found" и адекватным временем (до 200-300 ms для нормальной цепочки). Если всё это есть — OScam reshare: настройка выполнена корректно.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7