Przewodnik konfiguracji serwera CCcam i klienta OScam
Aby uzyskać działającą konfigurację klienta OSCAM na serwerze CCCAM, potrzeba czegoś więcej niż tylko wrzucenia bloku [reader] do pliku i liczenia na sukces. Trzeba spełnić wszystkie wymagania protokołu, routingu grupowego, ciągów wersji i konfiguracji odbiornika downstream – a większość poradników pomija połowę z nich. Ten nie. Poniżej znajdziesz wszystko, czego potrzebujesz, od wstępnego wyjaśnienia uzgadniania TCP po uruchomienie OSCAM jako wzmocnionej usługi systemd.
Jak działa komunikacja CCcam-OScam
Zanim zaczniesz modyfikować jakikolwiek plik konfiguracyjny, potrzebujesz jasnego obrazu tego, co faktycznie dzieje się w sieci. CCcam i OScam to dwa oddzielne programy, które posługują się wspólnym protokołem. OScam łączy się z serwerem CCcam, a nie odwrotnie.
Przegląd protokołu CCcam Handshake
Gdy OScam nawiązuje połączenie z serwerem CCcam, pierwszą rzeczą, jaka się dzieje, jest uzgadnianie typu challenge/response oparte na algorytmie SHA1. Serwer wysyła 16-bajtowy losowy ciąg znaków, który klient wykorzystuje wraz z nazwą użytkownika i hasłem do obliczenia skrótu, który uwierzytelnia sesję. Żadnych haseł w postaci zwykłego tekstu.
Po autoryzacji serwer wysyła listę udostępnień – wszystkie identyfikatory CAID i identyfikatory dostawców, do których ma dostęp. OScam przechowuje te dane wewnętrznie i na ich podstawie decyduje, do którego czytnika kierować żądania ECM. Połączenie pozostaje otwarte przez cały czas; żądania ECM napływają, a odszyfrowane odpowiedzi ECW wracają.
Co tak naprawdę robi czytnik typu „cccam” w OScam
Moduł czytnika OScam z protocol = cccam to czysta implementacja kliencka. Komunikuje się protokołem CCcam w ruchu wychodzącym do serwera. OScam NIE udostępnia portu serwera CCcam po takiej konfiguracji — nie jest w to zaangażowany żaden nasłuchujący CCcam. To zupełnie osobna kwestia (sekcja [cccam] w pliku oscam.conf, której tutaj nie używasz).
Czytnik obsługuje zarządzanie połączeniami, ponowne łączenie w przypadku zerwania połączenia, analizę listy współdzielonych pakietów i przekazywanie ECM. Można go porównać do sterownika zdalnej karty, która znajduje się na czyimś serwerze.
Wyjaśnienie portu 12000 i niestandardowych portów CCcam
Domyślny port serwera CCcam to 12000/TCP . Jest to port wkompilowany w oryginalny plik binarny CCcam i na nim działa większość serwerów. Jednak niestandardowe porty (13000, 16000, 10000 itd.) są powszechne — operatorzy zmieniają je, aby uniknąć automatycznych skanerów portów lub uruchomić wiele instancji.
Niezależnie od tego, jaki port poda Ci operator serwera, to właśnie on trafi do linii device . Nigdy nie zakładaj 12000. Zawsze potwierdzaj. Połączenie z niewłaściwym portem natychmiast skutkuje czystym komunikatem „odmowa połączenia”, co jest łatwiejsze do debugowania niż błąd uwierzytelnienia.
Dlaczego OScam potrzebuje dedykowanego wejścia dla czytników na serwer CCcam
Każdy blok [reader] w oscam.server reprezentuje jedno stałe połączenie TCP z jednym serwerem CCcam. Jeśli masz dwa serwery CCcam, potrzebujesz dwóch bloków czytników z unikalnymi etykietami. Moduł równoważenia obciążenia OScam traktuje je jako oddzielne źródła i może kierować żądania ECM do tego, który odpowie najszybciej.
Próba upchnięcia dwóch adresów serwerów w jednym bloku czytnika nie działa. Jeden czytnik, jedno połączenie, jeden serwer. Taki jest model.
OScam oscam.server Konfiguracja dla czytnika CCcam
Plik oscam.server znajduje się w katalogu /etc/oscam/oscam.server w większości instalacji Linuksa. W obrazach Enigma2 często znajduje się w /etc/tuxbox/config/oscam.server lub /usr/keys/oscam.server . Składnia jest identyczna niezależnie od lokalizacji.
Minimalne wymagania dla działającego czytnika CCcam
Absolutnie minimum to: label , protocol , device , user , password i group . Cała reszta jest opcjonalna, ale zdecydowanie zalecana dla stabilności. Minimalny blok połączy, ale bez dodatkowych dyrektyw wystąpią problemy z przekroczeniem limitu czasu bezczynności i brakującymi kanałami.
Pełny adnotowany blok oscam.server ze wszystkimi istotnymi kluczami
[reader] label = mycccam_reader protocol = cccam device = SERVER_IP,12000 user = YOUR_USER password = YOUR_PASS cccversion = 2.3.0 ccckeepalive = 1 inactivitytimeout = 30 reconnecttimeout = 30 group = 1 cccmaxhops = 2 cccwantemu = 0 cccos = 0 ccchops = 0Zastępować[reader] label = mycccam_reader protocol = cccam device = SERVER_IP,12000 user = YOUR_USER password = YOUR_PASS cccversion = 2.3.0 ccckeepalive = 1 inactivitytimeout = 30 reconnecttimeout = 30 group = 1 cccmaxhops = 2 cccwantemu = 0 cccos = 0 ccchops = 0
SERVER_IP , YOUR_USER i YOUR_PASS z tym, co podał operator serwera. Każda inna wartość powyżej to rozsądna wartość domyślna w środowisku produkcyjnym. Oto, co tak naprawdę robi każdy wiersz:
- Etykieta — unikalna nazwa dla tego czytnika. Pojawia się w webif i logach. Nadaj jej znaczenie, zwłaszcza jeśli masz wielu czytników.
- protokół — informuje OScam, którego sterownika połączenia użyć.
cccamdla standardowych serwerów CCcam. - Urządzenie — adres IP/nazwa hosta i port, rozdzielone przecinkami. Bez spacji wokół przecinka.
- użytkownik/hasło — dane uwierzytelniające w dokładnie takiej formie, w jakiej zostały podane. Rozróżniana jest wielkość liter.
- cccversion — ciąg znaków wersji CCcam, który OScam prezentuje podczas uzgadniania. Serwery mogą to sprawdzić.
- ccckeepalive — wysyła okresowe pingi przez bezczynne połączenia. Ustaw na 1, chyba że serwer jawnie odrzuca polecenia keepalive.
- inactivitytimeout — liczba sekund bez żadnej aktywności ECM, po której OScam uznaje połączenie za nieaktualne i nawiązuje je ponownie. 30 sekund to rozsądna wartość.
- reconnecttimeout — liczba sekund do odczekania przed próbą ponownego połączenia po zerwaniu połączenia. Utrzymuj wartość 30 lub niższą.
- grupa — numer grupy czytelników. Musi być zgodny z grupą we wpisach
oscam.user, w przeciwnym razie ECM-y nie będą tu kierować. - cccmaxhops — Maksymalna liczba przeskoków w udziałach akceptowana z listy udziałów serwera. Więcej informacji poniżej.
- cccwantemu — Ustaw na 1 tylko wtedy, gdy chcesz, aby serwer udostępniał emulowane karty. Zwykle 0.
- cccos / ccchops — Zastąp zgłoszony system operacyjny i liczbę przeskoków podczas uzgadniania. Pozostaw wartość 0, chyba że serwer wymaga określonych wartości.
Ustawianie „protokol = cccam” vs „protokół = cccam2”
cccam2 to rozszerzona wersja protokołu CCcam, opracowana wewnętrznie dla OScam. Dodaje funkcje negocjacji listy udostępniania i dodatkową wymianę metadanych. Problem w tym, że działa poprawnie tylko wtedy, gdy oba punkty końcowe są OScam. Prawdziwy serwer CCcam (uruchamiający plik binarny CCcam) nie rozpozna rozszerzeń cccam2 i albo odrzuci połączenie, albo zachowa się w nieprzewidywalny sposób.
Zasada: używaj protocol = cccam dla wszystkiego, co obsługuje oprogramowanie serwera CCcam. Używaj cccam2 tylko w konfiguracjach OScam-OScam. W razie wątpliwości zacznij od cccam .
Dyrektywa „device”: składnia nazwy hosta i portu
Standardowy adres IPv4 lub nazwa hosta: device = myserver.example.com,12000
Adresy IPv6 wymagają notacji w nawiasach: device = [2001:db8::1],12000 . Pominięcie nawiasów w przypadku IPv6 spowoduje, że OScam nie będzie w stanie poprawnie przeanalizować adresu — to częsty błąd w konfiguracjach VPS obsługujących wyłącznie IPv6.
Jeśli Twój serwer znajduje się za odwrotnym proxy lub modułem równoważenia obciążenia, adres IP, który widzi serwer CCcam, może nie być rzeczywistym adresem IP Twojego klienta. Jeśli serwer korzysta z białej listy adresów IP, uwierzytelnianie zakończy się niepowodzeniem nawet przy poprawnych danych logowania. To problem z konfiguracją po stronie serwera — skontaktuj się z operatorem.
Pola nazwy użytkownika, hasła i konwersji
Dane uwierzytelniające rozróżniają wielkość liter i muszą dokładnie odpowiadać ustawieniom skonfigurowanym na serwerze. Spacja na końcu pola hasła spowoduje cichy błąd uwierzytelnienia — zachowaj ostrożność podczas kopiowania i wklejania.
Ciąg cccversion to ciąg, który OScam przekazuje serwerowi podczas uzgadniania. Typowe wartości oczekiwane przez serwery to: 2.3.0 , 2.1.4 , 2.2.1 . Jeśli serwer wymusza określoną wersję, a Twoja nie jest zgodna, połączenie zostaje zerwane natychmiast po uwierzytelnieniu — bez komunikatu o błędzie wyraźnie informującego o „niezgodności wersji”. Pojawia się jedynie rozłączenie. Spróbuj najpierw 2.3.0 ; jeśli to się nie powiedzie, zapytaj operatora serwera, jakiego ciągu wersji się spodziewa.
limit czasu bezczynności i ustawienia ponownego połączenia
inactivitytimeout = 30 oznacza, że OScam połączy się ponownie, jeśli przez 30 sekund nie będzie żadnej aktywności ECM. To dobre rozwiązanie — przywraca nieaktywne połączenia bez czekania na wykrycie martwego gniazda przez system operacyjny. W sieciach o dużej stratności można obniżyć tę wartość do 20.
reconnecttimeout = 30 to opóźnienie między rozłączeniem a kolejną próbą ponownego połączenia. Utrzymanie wartości 30 oznacza około 30 sekund potencjalnego blackscreena po awarii serwera. W przypadku konfiguracji krytycznych z wieloma serwerami, niższa wartość (15–20) i wiele wpisów czytników jest lepszym rozwiązaniem niż obciążanie jednego serwera szybkimi ponownymi połączeniami.
Przypisanie grupowe i dlaczego ma to znaczenie dla routingu
Wartość group to wewnętrzny mechanizm routingu OScam. Żądanie ECM od klienta downstream (Twojego dekodera STB) jest przekazywane do czytników o tym samym numerze grupy, co użytkownik wysyłający żądanie. Jeśli Twój czytnik znajduje się w grupie 1, ale wpis użytkownika Twojego dekodera STB określa grupę 2, ECM nigdy nie dotrze do tego czytnika. Kropka. Jest to najczęstszy błąd w konfiguracji klienta Oscam na serwerze CCCAM i prawie żaden inny przewodnik nie wyjaśnia go jasno.
Ustawienia oscam.conf i oscam.user, które wpływają na klientów CCcam
Sekcja globalna [global]: logfile, nice, maxlogsize
Plik oscam.conf w /etc/oscam/oscam.conf steruje zachowaniem globalnym. Minimalny blok roboczy [global] :
[global] logfile = /var/log/oscam/oscam.log maxlogsize = 512 nice = -1 WaitForCards = 1 lb_mode = 1 lb_save = 1maxlogsize[global] logfile = /var/log/oscam/oscam.log maxlogsize = 512 nice = -1 WaitForCards = 1 lb_mode = 1 lb_save = 1
Wartość w KB — 512 KB pozwala na łatwe zarządzanie logami bez utraty użytecznej historii. WaitForCards = 1 nakazuje OScam wstrzymywanie żądań ECM do momentu, aż co najmniej jeden czytnik będzie gotowy, zamiast natychmiastowego zwracania komunikatu „nie znaleziono”. nice = -1 nadaje OScam nieznacznie wyższy priorytet planowania procesora, co ma znaczenie w przypadku urządzeń wbudowanych pod obciążeniem.
Włączanie interfejsu internetowego do monitorowania stanu czytnika na żywo
Dodaj to do oscam.conf , aby włączyć monitor HTTP na porcie 8888:
[webif] httpport = 8888 httpuser = admin httppwd = yourpassword httprefresh = 10 httpallowed = 127.0.0.1,192.168.0.0-192.168.255.255Ograniczać[webif] httpport = 8888 httpuser = admin httppwd = yourpassword httprefresh = 10 httpallowed = 127.0.0.1,192.168.0.0-192.168.255.255
httpallowed w sieci lokalnej. Nigdy nie udostępniaj portu 8888 do internetu bez uwierzytelnienia, a nawet wtedy jest to ryzykowne. Webif to miejsce, w którym będziesz obserwować status czytnika w czasie rzeczywistym — czy połączenie CCcam jest aktywne, liczbę przeskoków, czas ostatniego ECM i opóźnienie odpowiedzi. Będziesz z niego korzystać stale podczas debugowania.
oscam.user: Tworzenie użytkownika lokalnego w celu kierowania odkodowanych sygnałów ECW do dekodera
Lokalizacja pliku: /etc/oscam/oscam.user . Potrzebujesz co najmniej jednego wpisu użytkownika dla urządzenia łączącego się z OScam (dekoder STB, Dreambox, dekoder VU+ itp.):
[account] user = stbuser pwd = stbpassword group = 1 au = 1Ten[account] user = stbuser pwd = stbpassword group = 1 au = 1
group = 1 musi tutaj pasować do group = 1 w bloku czytnika. To jest link. OScam odbiera żądanie ECM od stbuser (grupa 1), szuka czytników w grupie 1, znajduje czytnik CCcam, wysyła tam ECM, odbiera ECW i zwraca go do dekodera. Zerwanie dopasowania grupowego i nic nie działa, nawet jeśli połączenie CCcam jest w pełni sprawne.
Łączenie użytkowników z grupami czytelników za pomocą dyrektywy „grupa”
Grupy to po prostu liczby całkowite. Możesz użyć dowolnej liczby z zakresu 1–64. Możesz przypisać wiele grup zarówno czytelnikom, jak i użytkownikom, rozdzielając je przecinkami: group = 1,2,3 . Jest to przydatne, gdy masz wielu czytelników CCcam w różnych grupach i chcesz, aby użytkownik miał dostęp do nich wszystkich. Moduł równoważenia obciążenia OScam wybierze wtedy najlepszego czytelnika spośród wszystkich przypisanych grup.
Prawidłowe ustawienie „au” (automatycznej aktualizacji) dla czytników kart współdzielonych
au = 1 na koncie użytkownika włącza automatyczną aktualizację komunikatów zarządzania uprawnieniami (EMM) dla tego użytkownika. W przypadku konfiguracji współdzielenia kart, w której odbierane są tylko odpowiedzi ECM, au = 1 na samym czytniku jest zazwyczaj zbędna i może powodować zakłócenia. Ustaw ją na koncie użytkownika podrzędnego, jeśli chcesz, aby odnowienia subskrypcji były przekazywane; pozostaw ją wyłączoną na czytniku, chyba że Twój serwer ją obsługuje i wymaga.
Podłączanie dekodera STB lub kamery Softcam do OScam po autoryzacji CCcam
W tym miejscu większość poradników dotyczących konfiguracji klienta CCCAM na serwerze OSCAM kompletnie się rozpada. Polegają one na połączeniu OSCAM z serwerem CCCAM i zatrzymaniu działania. Ale to połączenie rozwiązuje tylko połowę problemu — zaszyfrowane ECM-y dotarły już do właściwego miejsca, ale nadal musisz przesłać odszyfrowane ECW z powrotem do dekodera.
Używanie OScam jako odbiornika newcamd dla dekoderów Dreambox/VU+
Newcamd to najszerzej obsługiwany protokół w dekoderach Enigma2. Dodaj sekcję [newcamd] do oscam.conf :
[newcamd] key = 0102030405060708091011121314 port = 15050@1702:000000Ten[newcamd] key = 0102030405060708091011121314 port = 15050@1702:000000
key to klucz DES newcamd — musi być zgodny z konfiguracją w kliencie newcamd dekodera. Powyższa wartość to standardowa wartość domyślna; można użyć dowolnego 14-bajtowego ciągu szesnastkowego. Format wiersza port to port@CAID:ProviderID . Użyj 000000 jako identyfikatora dostawcy, aby zaakceptować wszystkich dostawców dla tego identyfikatora CAID, lub podaj rzeczywisty identyfikator dostawcy (np. 000000 dla symbolu wieloznacznego, 000001 dla konkretnego dostawcy). W przypadku wielu identyfikatorów CAID, dodaj kolejne wpisy portów, rozdzielone średnikami: port = 15050@1702:000000;15051@0D00:000000 .
Konfigurowanie bloku nasłuchującego oscam.conf [newcamd]
Na dekoderze Dreambox lub VU+ dodaj wpis serwera newcamd wskazujący na adres IP komputera z systemem OScam, port 15050, z tym samym kluczem DES. Dekoder wysyła żądania ECM do odbiornika newcamd w OScam, a OScam kieruje je przez czytnik CCcam do serwera, odbiera ECW i zwraca je do dekodera. To jest kompletny łańcuch.
Korzystanie z programu nasłuchującego camd35/cs357x firmy OScam dla innych klientów
Niektórzy klienci preferują camd35 (nazywany również cs357x). Dodaj do oscam.conf :
[cs357x] port = 15000Dane uwierzytelniające użytkownika camd35 pochodzą z[cs357x] port = 15000
oscam.user podobnie jak newcamd. Protokół jest prostszy niż newcamd, ale mniej popularny na nowoczesnych dekoderach. Używaj newcamd, chyba że Twój klient potrzebuje camd35.
oscam.user Wpis dla STB: Pola wymagane
[account] user = stbuser pwd = stbpassword group = 1 au = 1 uniq = 0uniq = 0[account] user = stbuser pwd = stbpassword group = 1 au = 1 uniq = 0
Umożliwia jednoczesne łączenie się wielu klientów przy użyciu tych samych danych logowania. Ustaw na 1 jeśli chcesz wymusić pojedyncze połączenie dla każdego użytkownika. W przypadku gospodarstwa domowego z jednym dekoderem STB, obie opcje działają. W przypadku konfiguracji współdzielonych ustaw na 0, aby uniknąć samoczynnego blokowania się podczas ponownego łączenia.
Weryfikacja udostępniania kart przechodzi przez ECM-y za pośrednictwem statystyk czytnika Webif
Otwórz http://OSCAM_IP:8888 w przeglądarce. Kliknij nazwę swojego czytnika. Zobaczysz: status połączenia, czas ostatniego ECM, liczbę ECM, czas odpowiedzi w milisekundach i liczbę przeskoków. Jeśli czytnik wyświetla komunikat „połączony”, ale liczba ECM pozostaje zerowa po próbie dostrojenia kanału, problem leży po stronie downstream — sprawdź połączenie dekodera z OScam lub sprawdź przypisania grup.
Jeśli licznik ECM rośnie, ale nadal widzisz czarny ekran, serwer CCcam może nie mieć karty dla tego CAID. Sprawdź listę udostępnień w widoku szczegółów czytnika, aby upewnić się, że potrzebny CAID znajduje się na liście.
Rozwiązywanie problemów z połączeniem czytnika CCcam w OScam
Czytnik utknął w „CACHEEX” lub „CARDOK” i nigdy się nie pojawia — przyczyny
Status czytnika „CACHEEX” zazwyczaj oznacza, że OScam jest w trybie wymiany pamięci podręcznej, a nie w trybie bezpośredniego czytnika CCcam. Sprawdź, czy nie ustawiłeś przypadkowo cacheex = 1 na czytniku. Czysty czytnik CCcam powinien wyświetlać się jako „POŁĄCZONY” lub „KARTA OK” po zakończeniu uwierzytelniania i wysłaniu przez serwer listy udostępnianych kart.
Jeśli status nigdy nie osiągnie CARDOK, serwer prawdopodobnie nie ma aktywnych kart na liście udostępnianych kart lub cccmaxhops filtruje wszystko.
NIEUDANA AUTORYZACJA: Nieprawidłowy ciąg cccversion
W dzienniku OScam ( /var/log/oscam/oscam.log ) nieudana autoryzacja wygląda następująco:
2024/01/15 14:23:01 9876 r mycccam_reader cccam: login failed for user YOUR_USER 2024/01/15 14:23:01 9876 r mycccam_reader cccam: connection closed Widzisz połączenie, a zaraz potem następuje rozłączenie. Zanim obwinisz dane uwierzytelniające, spróbuj zmienić cccversion . Przejdź z 2.3.0 na 2.1.4 lub odwrotnie. Niektóre serwery są kompilowane tak, aby odrzucały ciągi wersji, których nie rozpoznają. To cichy tryb awarii — w logu nie ma wyraźnego błędu „błędna wersja”, tylko rozłączenie.
Aby tymczasowo uzyskać szczegółowe dane wyjściowe czytnika, dodaj loglevel = 512 do [global] w pliku oscam.conf, zrestartuj OScam, sprawdź logi, a następnie usuń to. Objętość logów na poziomie 512 jest znacząca — nie pozostawiaj jej włączonej na stałe.
Odmowa połączenia a przekroczenie limitu czasu połączenia — co oznaczają te pojęcia?
Połączenie odrzucone : Pakiet TCP dotarł do serwera, ale na tym porcie nic nie nasłuchuje. Albo numer portu jest błędny, serwer CCcam nie działa, albo lokalny proces blokuje port (w Enigma2 wtyczka CCcam działająca równolegle z OScam mogła zająć port 12000 — wyłącz ją).
Przekroczenie limitu czasu połączenia : Pakiet TCP SYN nie otrzymał odpowiedzi. Zapora sieciowa odrzuca pakiety, adres IP jest nieprawidłowy lub routing jest uszkodzony. Przetestuj poleceniem: nc -zv SERVER_IP 12000 Jeśli się zawiesza, problem leży w sieci/zaporze sieciowej. Jeśli od razu zwróci komunikat „odmowa”, port na serwerze jest zamknięty.
Na co zwracać uwagę w logach OScam
Udana sekwencja połączeń w dzienniku wygląda następująco:
r mycccam_reader cccam: resolved SERVER_IP to xxxx r mycccam_reader cccam: connected to xxxx:12000 r mycccam_reader cccam: login successful for user YOUR_USER r mycccam_reader cccam: received share list (47 cards)Jeśli widzisz „listę otrzymanych udostępnień (0 kart)” – serwer działa, a Twoje dane logowania działają, ale na tym koncie nie ma aktywnych kart. Skontaktuj się z operatorem serwera.
Zapora sieciowa i NAT: zapewnienie dostępności portu 12000
OScam łączy się z portem 12000. Większość domowych konfiguracji NAT zezwala na połączenia wychodzące bez specjalnej konfiguracji. Problemy pojawiają się, gdy zapora sieciowa na komputerze klienckim blokuje połączenia wychodzące (rzadkie, ale możliwe przy ścisłych regułach iptables) lub gdy zapora sieciowa serwera ma białą listę adresów IP, a Twój publiczny adres IP nie znajduje się na liście.
Sprawdź również: jeśli znajdujesz się w środowisku współdzielonego NAT, w którym wielu klientów OScam korzysta z tego samego publicznego adresu IP, serwer CCcam może mieć limit połączeń dla każdego adresu IP i odrzucać połączenia przekraczające ten limit. Każdy klient potrzebuje własnej, unikalnej pary nazwa użytkownika/hasło — te same dane logowania z tego samego adresu IP czasami działają, ale te same dane logowania z tego samego adresu IP jednocześnie prawie zawsze zawodzą.
Zbyt niski cccmaxhops — wyjaśnienie brakujących kanałów
Karty CCcam mają „liczbę przeskoków” – liczbę przekaźników, przez które karta przeszła, aby dotrzeć do Twojego serwera. Karta bezpośrednio w sprzęcie serwera ma przeskok 0. Karta współdzielona z innego serwera CCcam do Twojego ma przeskok 1. Ponownie współdzielona, przeskok 2. I tak dalej.
cccmaxhops = 1 oznacza, że OScam będzie używać tylko kart z liczbą przeskoków równą 0 lub 1. Karty w przeskoku 2+ znajdują się na liście udostępnień, ale OScam je ignoruje. Jeśli potrzebny kanał pochodzi z karty w przeskoku 2, połączenie zostanie nawiązane, czytnik będzie wyświetlany jako sprawny, ale ten konkretny kanał nie zostanie odszyfrowany. Ustaw cccmaxhops = 2 lub wyższą wartość, jeśli otrzymujesz selektywnie brakujące kanały. Należy pamiętać, że bardzo wysokie wartości (8+) mogą spowodować, że OScam będzie odbierał ogromne listy udostępnień na obciążonych serwerach, co zużywa pamięć — co jest poważnym problemem w przypadku sprzętu Dreambox z 256 MB pamięci RAM.
Zduplikowane wpisy czytnika powodujące ponowne łączenie pętli
Dwa wpisy czytników z tą samą etykietą w pliku oscam.server powodują mylące zachowanie — OScam może załadować oba, co powoduje duplikowanie prób połączenia z tym samym serwerem. Dziennik będzie pokazywał szybkie cykle łączenia/rozłączania. Używaj unikalnych etykiet dla każdego czytnika. Sprawdź, czy nie ma przypadkowych duplikatów, jeśli zauważysz, że czytnik odrzuca połączenie w webif.
Utwardzanie i dostrajanie wydajności dla czytnika OScam CCcam
Ustawianie limitu czasu ponownego połączenia w celu uniknięcia opóźnień Zap
Przy tylko jednym czytniku CCcam, przerwanie połączenia z serwerem oznacza czarny ekran do czasu ponownego połączenia z OScam. Wartość domyślna to reconnecttimeout = 30 , co oznacza do 30 sekund czarnego ekranu. Obniżenie do 15 skraca to okno, ale zwiększa częstotliwość ponownego łączenia w przypadku niestabilnych połączeń. W środowisku produkcyjnym uruchomienie dwóch wpisów czytnika skierowanych na różne serwery z lb_mode = 1 jest lepszym rozwiązaniem niż samo dostrajanie czasu ponownego łączenia.
ccckeepalive i jego wpływ na bezczynne połączenia
ccckeepalive = 1 wysyła okresowy komunikat w stylu ping przez połączenie TCP CCcam w okresach bezczynności. Bez tego, mapowania NAT na routerach zazwyczaj wygasają po 60–300 sekundach bezczynności, po cichu zamykając sesję TCP. OScam nie będzie wiedział o zerwaniu połączenia, dopóki kolejne żądanie ECM nie zakończy się niepowodzeniem. Z włączoną funkcją keepalive, mapowanie NAT pozostaje aktywne, a OScam szybciej wykrywa przerwy w transmisji. Pozostaw tę opcję włączoną.
Korzystanie z lb_mode (równoważenie obciążenia) podczas łączenia się z wieloma serwerami CCcam
Ustaw w oscam.conf [global] :
- lb_mode = 0 : Brak równoważenia obciążenia. OScam używa pierwszego dostępnego czytnika z listy. Proste, ale nie daje żadnych korzyści wydajnościowych.
- lb_mode = 1 : Wygrywa najszybszy czytnik. OScam śledzi czasy reakcji ECM dla każdego czytnika i kieruje przyszłe żądania do czytnika o najkrótszym średnim czasie reakcji. Właśnie tego potrzebujesz w konfiguracji wieloserwerowej.
- lb_mode = 5 : Ważony losowy. Uwzględnia czas odpowiedzi, ale dodaje losowość, aby rozłożyć obciążenie. Przydatne, gdy masz wiele serwerów o podobnej jakości i nie chcesz, aby jeden z nich obsługiwał cały ruch.
W przypadku większości konfiguracji z 2–4 czytnikami CCcam właściwym wyborem jest lb_mode = 1 z lb_save = 1 (zapisuje poznane statystyki na dysku, dzięki czemu OScam nie uruchomi się w ciemno po ponownym uruchomieniu).
Konfiguracja Logrotate dla logów OScam zapobiegająca zapełnieniu dysku
Utwórz /etc/logrotate.d/oscam :
/var/log/oscam/oscam.log { daily rotate 7 compress missingok notifempty copytruncate } copytruncate jest tutaj ważna — OScam utrzymuje otwarty uchwyt pliku dziennika, więc standardowa operacja „obróć i zasygnalizuj” nie zadziała bez wysłania do OScam sygnału SIGHUP. Copytruncate kopiuje plik, a następnie obcina oryginał w miejscu, co działa bez ingerencji w proces OScam. Na wbudowanych urządzeniach Enigma2 z małą pamięcią flash, należy zastosować bardziej agresywny tryb „obróć”: rotate 3 i rozważyć maxsize 1M .
Uruchamianie OScam jako usługi systemd innej niż root
Utwórz użytkownika i katalog:
useradd -r -s /sbin/nologin oscam mkdir -p /var/log/oscam chown oscam:oscam /var/log/oscam chown -R oscam:oscam /etc/oscamTworzyćuseradd -r -s /sbin/nologin oscam mkdir -p /var/log/oscam chown oscam:oscam /var/log/oscam chown -R oscam:oscam /etc/oscam
/etc/systemd/system/oscam.service :
[Unit] Description=OScam Softcam After=network-online.target Wants=network-online.target [Service] Type=simple User=oscam Group=oscam ExecStart=/usr/bin/oscam -B /var/run/oscam.pid -c /etc/oscam PIDFile=/var/run/oscam.pid Restart=on-failure RestartSec=10 StandardOutput=null [Install] WantedBy=multi-user.targetWłącz i uruchom:[Unit] Description=OScam Softcam After=network-online.target Wants=network-online.target [Service] Type=simple User=oscam Group=oscam ExecStart=/usr/bin/oscam -B /var/run/oscam.pid -c /etc/oscam PIDFile=/var/run/oscam.pid Restart=on-failure RestartSec=10 StandardOutput=null [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl enable oscam systemctl start oscamUruchomienie jako użytkownik inny niż root oznacza, że zainfekowany proces OScam nie może uszkodzić systemu.systemctl daemon-reload systemctl enable oscam systemctl start oscam
Dyrektywa Restart=on-failure automatycznie obsługuje nieoczekiwane awarie. Jest to standardowa procedura i jej konfiguracja zajmuje około 5 minut — pomiń ją, a usługa sieciowa będzie działać jako root przez czas nieokreślony.
Ostatnia kontrola przed założeniem, że konfiguracja klienta CCCAM na serwerze CCCAM jest kompletna: uruchom oscam --version i sprawdź listę modułów w wynikach. Niektóre minimalne lub uproszczone kompilacje, skompilowane dla określonych systemów docelowych, całkowicie pomijają moduł czytnika CCCAM. Jeśli nie widzisz „cccam” na liście skompilowanych modułów, żadne zmiany w konfiguracji nie sprawią, że to zadziała — potrzebujesz w pełni funkcjonalnej kompilacji OSCAM.
Często zadawane pytania
Jaki jest domyślny port serwera CCcam, z którym łączy się OScam?
Domyślny port serwera CCcam to 12000/TCP . Wielu operatorów korzysta z niestandardowych portów — zawsze potwierdź to u osoby, która udostępniła Ci dane uwierzytelniające serwera. Port jest ustawiony w wierszu device w pliku oscam.server jako hostname,port bez spacji. Nigdy nie zakładaj 12000, jeśli nie podano Ci portu.
Jaka jest różnica między protokołem = cccam a protokołem = cccam2 w OScam?
cccam2 to wewnętrzna rozszerzona wersja protokołu OScam z dodatkowymi funkcjami negocjacji udziału. Działa poprawnie tylko wtedy, gdy zarówno klient, jak i serwer korzystają z OScam. Prawdziwy plik binarny serwera CCcam nie rozpozna rozszerzeń cccam2 — albo odrzuci połączenie, albo zachowa się nieprzewidywalnie. Użyj protocol = cccam dla wszystkiego, co korzysta z rzeczywistego oprogramowania serwera CCcam, a cccam2 zarezerwuj wyłącznie do konfiguracji OScam-OScam.
Dlaczego mój czytnik OScam pokazuje „połączono”, a kanały nadal nie są odszyfrowywane?
„Połączono” oznacza tylko, że łącze TCP jest aktywne — nie gwarantuje to dostępności karty. Sprawdź poniższą listę kontrolną: (1) Czy cccmaxhops jest wystarczająco wysokie, aby dotrzeć do potrzebnych kart? (2) Czy potrzebny identyfikator CAID i identyfikator dostawcy faktycznie znajdują się na liście udostępnień serwera? (3) Czy grupa oscam.user Twojego dekodera (STB) jest zgodna z grupą czytnika? (4) Sprawdź liczbę żądań ECM w szczegółach czytnika webif — jeśli wynosi zero, żądanie nawet nie dociera do OScam z dekodera (STB).
Czy OScam może łączyć się z wieloma serwerami CCcam jednocześnie?
Tak. Dodaj wiele bloków [reader] w oscam.server , każdy z unikalną label . Przypisz im tę samą grupę, jeśli chcesz ujednoliconego routingu, lub różne grupy dla oddzielnych poziomów dostępu. Ustaw lb_mode = 1 w oscam.conf [global] , aby OScam automatycznie kierował każde żądanie ECM do czytnika reagującego najszybciej. Dodaj lb_save = 1 , aby zapamiętane czasy były zachowywane po restarcie.
Na co powinienem zwrócić uwagę, oceniając niezawodność serwera CCcam przed jego konfiguracją?
Kluczowe kwestie do sprawdzenia: Czy operator publikuje statystyki dostępności lub posiada stronę ze statusem? Gdzie serwer znajduje się geograficznie względem Ciebie — lokalizacja serwera bezpośrednio wpływa na opóźnienie odpowiedzi ECM. Na ile jednoczesnych połączeń pozwala konto? Czy operator udostępnia łącze testowe przed pełnym zaangażowaniem? Czy istnieje dokumentacja techniczna dotycząca konfiguracji serwera? Unikaj serwerów bez dostępu próbnego i możliwości sprawdzenia poprawności działania konfiguracji przed skonfigurowaniem wszystkiego wokół nich.
Jak sprawdzić logi OScam, aby potwierdzić, czy czytnik CCcam został pomyślnie uwierzytelniony?
W /var/log/oscam/oscam.log lub w widoku logu webif, pomyślne uwierzytelnienie wyświetla wiersze z etykietą czytnika, po których następuje „cccam: login successful” i „received share list”. Nieudane uwierzytelnienie wyświetla komunikat „login failed” lub natychmiastowe rozłączenie zaraz po wierszu połączenia TCP. Jeśli potrzebujesz więcej szczegółów, tymczasowo dodaj loglevel = 512 do [global] w oscam.conf i uruchom ponownie – spowoduje to szczegółowe dane wyjściowe dla każdego czytnika. Usuń tę wartość po debugowaniu; objętość logu jest duża.
Czy OScam obsługuje udostępnianie kart CCcam zarówno na platformach Linux, jak i wbudowanych (Enigma2)?
Tak, a składnia konfiguracji oscam.server jest identyczna w obu systemach. W Enigmie2 (Dreambox, VU+) OScam jest instalowany jako wtyczka ipk lub opk. Pliki konfiguracyjne znajdują się zazwyczaj w /etc/tuxbox/config/ lub /usr/keys/ w zależności od obrazu. Uwaga na Enigmę2: jeśli wtyczka CCcam jest również zainstalowana i uruchomiona, może już nasłuchiwać lokalnie na porcie 12000. Powoduje to komunikat „odmowa połączenia”, gdy czytnik OScam próbuje połączyć się z serwerem — wyłącz konfliktową wtyczkę CCcam i połącz się tylko przez OScam.