Utiliser Zazeen set top box depuis une connexion videotron

Alors ca n’a pas l’air tres opensource cette histoire, mais ca implique du GNU/Linux 😀 (et oui je parles beaucoup comme toujours).

Pour ceux qui ne connaissent pas, au Québec (je ne sais pas pour le reste du Canada) mais les offres TV/Internet/telephone sont hors de prix !
Pour une connexion décente, il faut compter débourser entre $90 et $150 par mois après taxes. Ce qui, en arrivant de France il y a 5 ans avait déjà été un gros choc après Free a 30 euros par mois tout inclus et appels au monde illimités.
Ensuite, même si les fournisseurs crient le contraire, il y a du filtrage selon l’activité (alors admettons que les fournisseurs ne fassent rien, mais étrangement, en lançant un relais tor limité a 5mbit/s, ma connexion de 60mbit/s s’écroule a 2mbit/s).
La suite avec Zazeen, et pourquoi je me suis rendu a découvrir la TV sur IP via set top box au Canada.
Comme vidéotron le fait parfois, certaines chaines ont été mises en débrouillage (accès gratuit pendant quelques jours), et on découvre la chaine historia qui nous plait.
La je contact le service client, après 4 ans d’abonnement chez eux, un abonnement dans les $130, je me dis qu’on va pouvoir avoir une chaîne en plus sur notre pack.
Mais la, non, alors que jusqu’alors le service client avait toujours été impeccable, je fais face a de l’agressivité et aucune flexibilité (il faut quand même noter que le réseau vidéotron, n’a jamais fait défaut, et jusqu’à ce moment la, le service client avait toujours été super efficace, tu me diras, ça vaut mieux quand même vu le prix).
Anyway, la pour avoir un seul canal en plus du pack de base HD ($25 pour 23 chaines de bases), il faut souscrire au pack 5 chaines de plus, pour $41 par mois !!!! (selon le site la base HD serait incluse, donc théoriquement le coût supplémentaire serait juste de $16 / mois) , mais rendu la, on est a environ $150 par mois pour une connexion qui avait été élevée a 60mbit/s mais limitée en volume.
Bref, trop c’est trop (sans parler des prix affichés qui finissent par monter, ou des prix affichés qui ne sont valides QUE pour les nouveaux clients, les anciens clients qui paient depuis des années, eux on en a rien a faire).
Du coup, frustré de l’agressivité du service client sur ce sujet, et de l’aberration du coût total (dans un monde soit disant cloud, avoir des connexion hors de prix et limitées en volume, c’est quand même bien ridicule !) je me dis qu’il doit bien y avoir moyen d’avoir juste les 3 ou 4 chaines que je regarde pour un montant correct.
Et la je tombe sur zazeen (il y en a d’autre) qui présente une offre intéressante ! Donc je souscris, en 4 mois de zazeen, j’aurai déjà sauvé l’argent que coûte la solution pour un an ! (avec la suppression de la TV sur videotron)
Donc je reçois le boitier « set top box » (genre de freebox TV qui se branche sur le net via cable reseau ou wifi).
En branchant tout ça, au bout d’un moment l’image freeze, et ca lag a mort.
Ceci arrivant principalement en prime time, de 7:45PM a 10:30PM.

En attendant de valider que ca fonctionne, je n’avais pas encore résilié la TV videotron.
Apres des echanges avec le support zazeen (plutot efficace et rapide), on teste la set top box directement sur le modem (pour isoler le fait que mon routeur soit la cause). Mais au final le problème existait encore.

Je fais donc quelques check (traceroute, ping) vers le serveur de streaming de zazeen (IP identifiée avec un petit tcpdump sur mon routeur, ou du iptraf-ng). Mon routeur étant un PC sous CentOs avec 2 cartes réseau, un iptables, de l’ip_forward, du dhcpd, rien que du basic, simple et efficace.

Et la je vois que le trafic passe par des peerings a NY, et que c’est extrêmement lent ! Clairement, le peering videotron avec le fournisseur de cloud/reseau de zazeen n’est pas bon (accident, ou délibéré on ne le saura pas).

Du coup, je me connecte sur un des mes VPS OVH a BHS, et la petit traceroute. Surprise, cette fois ci on passe par torontoX, et ça va vite vite (Zazeen est du cote de Toronto, y compris les serveurs, de ce que je vois) !

Vient donc le challenge de router juste le trafic de ma boite set top box zazeen au travers de mon VPS.
Je trouve donc un article qui parle de sshuttle (https://github.com/apenwarr/sshuttle) qui est tout ce dont j’ai besoin.
Apres quelques essais, je monte le tunnel simplement entre mon routeur linux « maison » et mon VPS, avec les options qui permettent de router le trafic réseau a travers ca.
Il s’avere que sshuttle est gourmant en CPU et que faire passer TOUT mon trafic TCP a travers lui est trop gourmand en CPU tant sur mon routeur que sur mon VPS, par contre, ca fonctionne tres tres bien juste pour l’IP du serveur de streaming zazeen.

Les prerequis sont donc :
– assigner une IP statique (association par MAC dans le serveur DHCP) a la set top box
– et avoir un compte pour se loguer en SSH sur un VPS OVH
– connaître l’ip du serveur de streaming zazeen (tcpdump et grep sur la carte reseau locale, et grep sur l’ip de la set top box, ou encore lancer iptraf-ng pour voir le trafic live et voir l’ip sur laquelle se branche la set top box).
– etre root sur le routeur, et y installer sshuttle (généralement deja dans la repo)

La simplement sur le routeur on lance un :

#sshuttle -l 0.0.0.0 -r root@votre-vps:22 xx.xx.xx.xx

ou les éléments signifient :
sshuttle : le programme
-l 0.0.0.0 : écoute (bind) sur toutes les cartes (et donc répond aux clients du réseau local aussi)
-r root@votre-vps:22 : compte root (ou n’importe quel comptes utilisateur qui peut ouvrir une session) sur le serveur distant (remote) et le port d’ecoute SSH
xx.xx.xx.xx : l’ip su serveur de streaming zazeen (seul host pour lequel on veut router le trafic au travers de ce tunnel)

(tip : puis un petit ctrl+z et bg pour le mettre en arrière plan,et disown %1 pour le detacher de la console, ou bient encore plus simple, on utilise la fonction demon de sshuttle, en ajoutant l’argument -D pour que le tunnel passe en demon de lui meme.)

Une fois lancé, tout le trafic passe par le VPS OVH, et bénéficie du fantastique réseau OVH. A partir de ce moment la, la set top box derrière le routeur fonctionne sans aucun lag.

Le service consomme en moyenne entre 2 et 2.5 mbit/s, ce qui n’est presque rien sur les 100mbit/s du VPS.

La seule contrainte et qu’il faut relancer sshuttle quand la connexion internet subit une interruption, ce qui prend juste quelques secondes.

Ca a l’air compliqué, mais ca ne l’est pas 🙂

Pour se monter un routeur linux, ca prend un vieux PC genre dell optiplex 760 core 2 duo ($80 sur ebay) et une carte reseau supplementaire (intelpro pour $20), puis on installe une CentOs de base (sans interface), openssh, iptables, bind, iptraf-ng, dhcpd c’est pas mal ca 🙂

Les settings de base ca donne :
adresse ip de la carte publique : DHCP (branchée sur le modem qui la donne)
adresse ip de la carte interne : 172.20.0.1 mask 255.255.255.0

/etc/sysctl.conf qui contient :

net.ipv4.ip_forward = 1
net.ipv4.tcp_challenge_ack_limit = 999999999

/etc/selinux/config :

SELINUX=disabled

(sauf si vous voulez utiliser selinux et le configurer comme il faut pour que tout ceci fonctionne).

/etc/dhcp/dhcpd.conf :

# dhcpd.conf
# option definitions common to all supported networks...
option domain-name "local.lan";
option domain-name-servers 208.67.222.222, 208.67.220.220;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 172.20.0.0 netmask 255.255.255.0 {
  range 172.20.0.10 172.20.0.100;
  option routers 172.20.0.1;
  default-lease-time 600;
}

#set top box (use the MAC of the set top box to assign the ip)
host zazeen {
        hardware ethernet 60:02:b4:XX:XX:XX;
        fixed-address 172.20.0.111;
        option host-name "zazeen";
}

/etc/sysconfig/iptables :

# enp0s25 = carte reseau sur internet branchee au modem
# enp4s2 = carte reseau interne
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o enp0s25 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i enp4s2 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp4s2 -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -i enp4s2 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i enp4s2 -o enp0s25 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

et voila, avec ça, la TV avec Zazeen sur une connexion videotron fonctionne au top.
Si vous avez un top routeur maison, rien n’empêche de mettre la boite linux sur votre réseau (la carte qui va normalement sur le modem branchée sur votre routeur, et la set top box sur la carte du réseau interne du pc linux. Le seul role sera pour lui de router le traffic dans le tunnel.

De mon bord, la télé fonctionne super, pour 3 fois moins que ce que j’avais avant, et le chaines que je veux.

une fois que tout ca a fonctionné, j’ai appelé pour resilier la TV vidéotron, et la on finit par me proposer de garder le tout pour juste le prix de la connection internet pour un an ! Et bien non, trop tard. Si l’offre avait été correct des le depart, je n’aurai meme pas pensé a chercher sur le net la TV par internet au Quebec.

A cote de zazeen, il y a d’autres acteurs comme tvwow.ca, vmedia.ca mais aussi le célèbre roku.com (mon voisin semble ravi de cette option aussi).

Pour revenir a Zazeen, j’oubliais, la boite de base inclue dans le forfait, permet de brancher un disque dur externe, et d’enregister les émissions depuis le guide TV comme avec les fournisseurs habituels. Donc rien a dire.
Oui il y a surveiller la bande passante mensuelle, en volume, ou, en cas de passage a IPTV, on devrait considérer l’option illimité 😀

Meme si c’est un peu fouillis, c’est un memo perso et ca pourra peut etre vous mettre sur la voie si vous chercher a fixer le probleme d’image qui freeze sur zazeen avec videotron 😀

Bonne TV !

Note de Decembre 2016, apres 2 mois et demi de zazeen impeccable, le service a cessé de repondre (fixé maintenant).
Apres 3 jours sans TV, j’ai donc contacté le support de Zazeen en expliquant la situation en détails, et la « Andrew » me répond. Il comprend la situation, et comprend l’idée de mon tunnel via mon VPS OVH.

La il me dit que le probleme vient du fait que les serveurs de Zazeen n’acceptent de streamer que vers l’IP reportée par la set top box (normal, limitation du CRTC, zazeen ne peut diffuser que la ou la licence l’autorise). Alors il me dit qu’il faut ajouter dans leur systeme l’IP que j’utilise comme gateway pour leur service, dans leur systeme. En moins de 3 heures, et 4 emails, le probleme est fixé !

Chez zazeen, ils ont associé l’IP de mon serveur OVH m’assurant le tunnel, a mon compte, et tout fonctionne a nouveau !

Je suis tres tres tres content de la solution, et surtout du support Zazeen ! Merci Zazeen, et vu le setup actuel, et si rien ne change dans la qualité du service, je ne changerai pas de fournisseur pour longtemps !

Well done Zazeen ! (in case you don’t speak french !)

samedi, octobre 15th, 2016 GNU - Linux, Reseau, Technologie

2 Commentaires to Utiliser Zazeen set top box depuis une connexion videotron

  • tresronours dit :

    Pour utiliser sshuttle comme client VPN pour toutes les IP, la commmande serait :
    sshuttle -r user@votre-server:22 0.0.0.0/0

    De cette facon tout le traffic TCP passe par le tunnel

  • tresronours dit :

    Un article complet pour un usage en client VPN, avec le detail de ce qui passe ou pas dans le tunnel est disponible ici chez Korben :
    https://korben.info/sshuttle-le-vpn-a-larrache.html

  • Ajouter un commentaire


     
    octobre 2016
    L M M J V S D
    « Août   Mar »
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
     

     
    Suivez moi sur twitter - follow me on twitter
    [FSF Associate Member]
     
    Free Software, Free Society
    VIRTUALISATION :
    Compacter une image virtualbox VDI
    Bon petit tutoriel esxi
    Marche d'appliances vmware
    Installer ESXi sur un disque IDE
    Installer ESXi 3.5 sur un disque USB
    Installer proxmox avec DRBD et migration / réplication à chaud
    Installer OSSEC avec VMware
    Information sur le VDI
    SECURITE - FIREWALL :
    Ouvrir des ports dynamiquement iptables - knockd
    Autre tres bon tuto knockd
    Docs Arp poisoning - Anglais
    Metasploit test de pénétration
    Zone H - sites piratés en temps réel
    Blog invisible things
    Tips protection sécurité wordpress
    Pfsense - distribution firewall opensource - adsl internet failover
    Iproute 2 mini how to - linux advanced routing
    ClearOS - la passerelle sécuritaire lan - wan
    HAUTE DISPONIBILITE :
    CDN - Accélération de la distribution de données
    drbd iscsi ocfs2 dm multipath tutoriel
    Load balancing LVS
    Load balancing opensource list
    HA-Proxy :
    HAproxy - http load balancer
    Simple tutoriel HAproxy
    HAproxy - debian tutoriel
    Centos - Ip failover
    Configuratoin DM-Multipath Redhat
    VMware Doubletake - continuité
    Quelques liens sur la réplication MySQL : Manuel MySQL, chapitre sur la réplication
    Manuel MySQL, Tutoriel clair sur la mise en place
    Autre tuto sur la mise en place de la réplication MySQL
    Références pour optimisation du serveur MySQL
    Utilisation de EXPLAIN mysql pour optimiser vos bases
    optimiser vos bases - requetes et index
    STOCKAGE RESEAU :
    Un outil de clonage disque en reseau
    Internet NAS 250Go 250 accès VPN
    Server ISCSI avec Ubuntu tuto
    ISCSI centos redhat tutoriel
    Gérer et étendre un LVM
    Créer sa piratebox ! trop cool
    Deaddrops, les clés USB dans les murs, aussi cool !
    OPTIMISATION WORDPRESS :
    Télécharger Xenu
    Comment utiliser Xenu
    optimisation hébergement wordpress
    Super howto wordpress (En)
    Test de charge serveur web - Load impact
    VPN - ROUTEUR - LAN:
    Zeroshell - le mini-routeur wifi tout en un
    Retroshare, votre réseau d'échange crypté!
    Openvpn sur centos redhat
    Intégrer Linux dans active directory
    Routage inter-vlan avec Linux
    Routage avec OSPF
    Network Weathermap
    TENDANCES - WEB:
    Boutons twitter
    Analyser les tendances des recherches Google
    Protocole sitemap - robots.txt
    Creer des animations CSS3
    Code php pour interagir avec twitter
    E reputation
    Jquery
    TRUCS ET ASTUCES GNU/LINUX :
    Tuxmachines.org - Actus et tips linux
    Configurer GRUB2 et grub2 ici
    Panoet - en anglais - tips & tricks
    Readylines tips and trick pertinents
    Squid Clamav - proxy antivirus
    Apprendre Unix en 10 minutes
    13 tips sur les expressions régulières
    IE Sous linux IES
    LDAP 2.4 Quickstart guide
    Tutoriel LDAP
    Installation annuaire LDAP
    Serveur Mail Postfix - Dovecot - LDAP - MDS
    Créer un linux personnalisé en ligne - custom linux
    Super site sur linux - en
    Capistrano - déploiement automatisé
    MONITORING :
    Nagios tutoriel et doc
    Nagios plugin NRPE tuto
    Nagios plugin NRPE autre tuto
    Nagios plugin NRPE officiel
    Zabbix - fonctionnalités
    Zabbix - installation
    Guide MRTGsys - grapher la charge locale
    MRTGsys - ajouter des graphs
    MRTGsys - interpréter les données
    Shinken - Monitoring
    Thruk Monitoring webinterface
    Shinken - Tutoriel
    Shinken - Référence chez Nicolargo
    AUTRES LIENS :
    RemixJobs IT jobs
    USB Multiboot
    Reset mot de passe windows
    Java python et autres tips, intéressant !
    Forum inforeseau
    Open Clipart
    Excellent comic en ligne
    Inforeseau.fr
     
    Contrat Creative Commons
    This création is licensed under a Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 2.0 France License.