Proxychains : le retour

Table des matières

Dans un de mes billets sur proxychains, j'indiquais n'avoir jamais eu de soucis avec ce logiciel. Il a fallu que j'écrive ça pour en avoir. Je vais apporter une solution aux deux problèmes que j'ai rencontré. Je vous conseille de lire le billet précédent afin de comprendre ce dont je parle ici.

ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded: ignored.

Voici à quelle erreur je suis maintenant confronté. La solution exposée sur nombre de forums, a savoir créer un lien symbolique ne fonctionne pas chez moi.

En observant un peu, en lançant un programme proxychainé depuis un shell par exemple, on remarque que cette erreur apparaît lors de la résolution des noms de domaine. On se demande alors si l'erreur ne viendrait pas du script chargé de la résolution des noms de domaine, /usr/lib/proxychains3/proxyresolv. On l'ouvre et on remarque cette ligne :

export LD_PRELOAD=libproxychains.so.3

Si on en croit les forums qui conseillent de créer un lien symbolique, il faut créer le-dit lien car le chemin vers la libproxychains.so.3 serait codé en dur dans le code de proxychains et dans proxyresolv. C'est le déclic : et si nous mettons le chemin absolu vers la libproxychains.so.3 dans le script proxyresolv, cela corrige-t-il le problème ?

On cherche l'emplacement de la libproxychains.so.3 :

sudo find / -name "libproxychains.so.3"

On la trouve dans le répertoire /usr/lib, quelle surprise.

On modifie donc proxyresolv en remplaçant :

export LD_PRELOAD=libproxychains.so.3

par

export LD_PRELOAD=/usr/lib/libproxychains.so.3

Nous venons de résoudre le premier problème. Je ne sais pas expliquer pourquoi cela ne fonctionne plus subitement du jour au lendemain.

Les requêtes DNS ne sont plus proxychainées

En effet, je me suis aperçu que proxyresolv s'adresse bien au serveur définit dans sa variable "DNS_SERVER" mais sans passer par le tunnel SSH. Merci à mon netfilter bien configuré qui a évité les fuites vers le réseau local.

J'ai donc pensé à faire une redirection du port local tcp/53 vers le port tcp/53 de mon résolveur DNS. Cette redirection s'ajoute à ma redirection dynamique. Concrètement cela donne :

sudo ssh -ND6666 -L53:resolveurDNSDNS:53 login@server

Ensuite, il suffit de définir 127.0.0.1 comme "DNS_SERVER" dans le script proxyresolv et le problème sera résolu.

Pour ceux qui ne veulent pas lancer ssh avec les droits root, il y a un moyen de déporter les droits root sur un autre programme :

sudo apt-get install socat
ssh -ND6666 -L5300:resolveurDNS:53 login@server
sudo socat TCP4-LISTEN:53,reuseaddr,fork TCP4:127.0.0.1:5300

Explication : proxyresolv va envoyer sa requête sur le port tcp/53. socat va la relayer sur le port 5300. SSH va récupérer la requête, la faire transiter dans le tunnel et l'envoyer sur le port tcp/53 de la machine resolveurDNS.

Au lieu d'utiliser socat, on peut se la jouer netfilter ce qui évite de devoir créer des scripts pour lancer socat automatiquement et de donner des droits inutiles a ssh/socat :

ssh -ND6666 -L5300:serveurDNS:53 login@server
sudo iptables -t nat -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -p tcp --dport 53 -j REDIRECT --to-port 5300

Pour ceux qui se demande pourquoi définir 127.0.0.1 comme résolveur DNS dans proxyresolv et non pas dans /etc/resolv.conf : d'une part car cela empêcherait ssh de résoudre le nom de la machine avec laquelle il doit communiquer, dans le cas où votre serveur ssh a une ip dynamique. D'autre part, les autres applications fonctionnent très bien donc pourquoi les sanctionner ?

Pour ceux qui s'étonne de voir le protocole DNS agir sur le protocole TCP, sachez que cela avait été prévu par les RFC. Les administrateurs de réseaux qui bloquent le port tcp/53 ne sont donc pas consciencieux/informés. Néanmoins, une requête de résolution doit être effectuée sur TCP uniquement dans le cas où la réponse excède 512 octets (mais la taille autorisé via UDP a été augmentée dans le RFC 2671 afin de prendre en charge DNSSEC).

Nous faisons donc une entorse aux règles en faisant passer toutes nos requêtes, même celles qui n'excèdent pas la taille maximale, par le port tcp/53. Relativisons en disant que d'une part, comme SSH permet le port forwarding uniquement sur le protocole TCP, nous sommes obligé de passer via TCP à un moment donné. D'autre part, dés que l'on tente de masquer son trafic et/ou de contourner un firewall, on transgresse forcement les standards (on se souviens du TCP over TCP du billet précédent).

Pour ceux qui veulent étudier une solution alternative : Tunnelling UDP packets through SSH. Vous constaterez que cette méthode impose aussi un passage via TCP et qu'elle est plus complexe à mettre en place et à automatiser.

Recevoir les chaînes de la TNT sous GNU/Linux

Table des matières

J'ai décidé de m'équiper afin de recevoir les chaînes de la TNT sur mon ordinateur portable (dans un premier temps), puis sur un ordinateur de bureau (un peu plus tard).

Expression des besoins

  • Je veux recevoir la télévision sur un ordinateur portable et sur un ordinateur de bureau. Cela exclu donc les cartes pci/pcmcia. Il reste donc les tuners USB ou les tuners firewire à ma disposition. Ne disposant pas de prise firewire sur les deux ordinateurs, il ne me reste plus que l'USB.
  • Je veux un périphérique compatible GNU/Linux.
  • Je veux recevoir la TNT.
  • Je veux deux tuners.
  • Je veux aussi recevoir les chaines en haute définition. Cela n'est pas un problème en soit : même les cartes qui ne sont pas estampillées "TNT HD ready" sont compatibles. Je vous laisse comprendre pourquoi : Quid de la réception TNT HD sur PC ?

Trouver un tuner TNT USB

Pour cela, il faut :

  1. Consulter les sites des distributeurs de ce genre de matériel : Hauppauge, Terratec, Leadtek, etc. et trouver un modèle qui répond aux critères ci-dessus.
  2. Consulter la section consacrée aux tuners USB compatible DVB-T sur le wiki du projet LinuxTV et vérifier que le tuner choisit en 1 dispose d'un pilote sous GNU/Linux.
  3. Vérifier sur des sites marchands que le produit est toujours commercialisé.

Personnellement, j'ai choisis la Terratec T5.

S'équiper du matériel supplémentaire

Généralement, les tuners USB sont fournis avec une/des antenne(s) d'intérieur. Comme au temps de l'analogique, ces antennes sont clairement insuffisantes, même si vous comptez vous en servir dans une ville où il y a un émetteur TNT. Après essais, je peux confirmer que la T5 n'échappe pas à cette règle. Il vaut mieux la brancher sur une antenne extérieure (de toit).

Comme la T5 est équipée de deux tuners, et à moins que vous n'ayez deux prises TV murales, il vous faut un té de répartition coaxial que vous brancherez à votre prise murale.

Attention : regardez bien le format de votre prise murale avant d'acheter votre té car celui-ci a changé il y a quelques années pour passer à un connecteur mâle. Dans mon cas, mes prises murales sont récentes et ont un connecteur mâle dans les deux endroits où je souhaite regarder la TV donc j'ai pris un té avec une entrée femelle et deux sorties mâles.

Ensuite, il vous faut deux câbles coaxial qui serviront à relier le té aux deux tuners de la T5. Du côté de la T5, il faut que le câble dispose d'un connecteur mâle. De l'autre côté, cela dépend de votre té. Le mien a deux sorties mâles, donc mes câbles doivent avoir un connecteur femelle de ce coté là. Après, il faut savoir que des adaptateurs sont généralement fournis avec le câble et donc qu'il y a moins de chance que vous ne puissiez pas brancher le câble. Concernant le diamètre des connecteurs : du côté de la T5, nous avons des connecteurs d'un diamètre de 9.5mm.

C'est tout ce dont vous aurez besoin.

S'équiper des logiciels nécessaires

Terratec ne fournit ni pilote ni logiciel pour GNU/Linux pour sa T5. Nous n'avons pas besoin de pilote sous GNU/Linux car il est déjà intégré au noyau depuis la version 2.6.29 (voir le wiki LinuxTV), mais, en revanche, il nous faut un logiciel. J'avoue que je n'ai pas été très original sur ce coup : j'utilise KDE et j'ai souvent entendu parler de Kaffeine en bien donc j'ai décidé d'essayer ce logiciel. L'essai a été convaincant : il fait ce que je veux. Je vous le recommande.

Si il vous intéresse :

sudo apt-get install kaffeine

Ouvrez Kaffeine, ouvrez le module dédié à la télévision. Un message de notification vous informera si des paquets supplémentaires sont à installer. Si c'est le cas, installez-les puis fermez Kaffeine.

C'est finit pour la partie logicielle.

Installation

Je vous laisse réaliser les branchements physiques car je ne pense pas que vous ayez besoin d'aide.

Au préalable

Connectez ensuite la T5 à votre ordinateur. Ouvrez Kaffeine et son module télévision numérique. Cliquez sur l'icône "Configurer la télévision". Vous remarquez qu'il y a deux onglets : "Périphérique 1" et "Périphérique 2" qui correspondent aux deux tuners de la clé. Je vous conseille de leur donner un nom différent comme par exemple "Tuner 1" et "Tuner 2" afin de les différencier par la suite. Valider les modifications.

Recherche automatique des chaînes

Cliquez sur le bouton "Canaux" qui se situe à coté de celui de la configuration. Choisissez le premier tuner et lancez la recherche automatique des chaînes. A la fin de celui-ci, sélectionnez les chaines que vous voulez dans la liste de droite et cliquez sur le bouton "Ajouter les sélectionnés". Cliquez sur le bouton "OK" sinon les chaines ne seront pas mémorisées.

Pour profiter du double tuner

Dans la liste des chaines, et pour chaque chaine, changez son nom pour indiquer le tuner de provenance. Par exemple : "TF1" devient "TF1 T1" si vous avez obtenu la liste des chaînes via le premier tuner. Vous savez ainsi que cette chaîne est TF1 et qu'elle est reçue via le tuner 1 de la carte. Ce renommage des chaines peut être effectué plus facilement depuis la fenêtre "Canaux" (celle où vous lancez la recherche des chaînes).

Refaites une recherche des chaines mais en utilisant cette fois-ci le deuxième tuner. Renommez les chaînes de la même façon pour indiquer que celle-ci viennent du deuxième tuner. Vous obtenez une liste dans laquelle chaque chaîne apparaît en double : une via le tuner 1, une via le tuner 2.

Cette méthode n'est peut-être pas la meilleure mais elle me convient parfaitement. Libre à vous d'en trouver une meilleure.

Classer les chaînes

Retournez dans la fenêtre "Canaux". Dans la liste de gauche, vous pouvez glisser-déplacer une chaine. Un message vous informera qu'un tri sera effectué : approuvez. Continuez votre classement en faisant glisser-déplacer les chaînes. N'oubliez pas de cliquer sur le bouton "OK" sinon le classement est perdu.

Enregistrement et double tuner

Pour réaliser un enregistrement immédiat et continuer à regarder la même chaîne : cliquez simplement sur le bouton représentant une disquette.

Pour réaliser un enregistrement immédiat puis regarder une autre chaîne : cliquez sur l'icône représentant une disquette puis changez de chaîne en prenant le tuner inutilisé (d'où l'intérêt d'avoir nommé les chaînes en fonction du tuner qui la reçoit).

Pour réaliser un enregistrement immédiat de deux chaînes : enregistrez la première chaîne en cliquant sur le bouton en forme de disquette. Cliquez ensuite sur le bouton "Programmation d'un enregistrement" (le calendrier) et ajoutez un nouvel enregistrement en choisissant une chaîne du tuner inutilisé. Vous pouvez bien entendu regarder l'une ou l'autre des chaîne que vous enregistrez.

Pour programmer un ou plusieurs enregistrements : vous savez faire : utilisez le bouton "Programmation d'un enregistrement".

Cas de la haute définition

Sur les chaînes du multiplex R5 (TF1 HD, France 2 HD, M6 HD), le codage du son est réalisé grâce au codec E-AC3 et son extension spectrale. Cela pose un soucis dans un certain nombre de logiciels qui ne proposent donc pas le son sur ces chaînes.

Arte HD, diffusé sur le R4, n'a pas ses pistes audio encodées en E-AC3 et fonctionne sans aucun problème.

Personnellement, j'utilise la T5 principalement dans une région dans laquelle le R5 n'est pas encore en service et avec un ordinateur portable dont la puissance est insuffisante pour décoder un flux haute définition donc je n'ai pas encore cherché comment faire.

Malgré tout je vous donne des tuyaux : MythTV semble être capable de décoder l'E-AC3. FFmpeg aussi. La propagation aux logiciels se basant sur ffmpeg ne devrait plus être longue.

Forcer le 16/9 sur les chaînes qui n'y sont pas encore passé

Il suffit de cliquer droit sur la vidéo, d'aller dans "Vidéo" puis "Rapport hauteur/largeur" puis de mettre "16:9".

Et si je voyage dans plusieurs régions ?

Hé oui, les fréquences ne sont pas les mêmes. Il vous suffit d'appliquer la méthode que nous avons vu pour le double tuner : faire une recherche et nommer les chaînes en fonction de la région.

EDIT 14/02/2011 à 22h30 : La solution ci-dessus n'est pas bonne car Kaffeine supprime automatiquement les chaines identiques d'un même tuner. Je ne sais toujours pas sur quoi il se base pour faire la comparaison vu que les fréquences ne sont pas identiques entre les régions. Néanmoins, si la méthode ci-dessus fonctionnait, elle supposerait d'avoir une liste des chaînes contenant le nombre de chaînes*le nombre de tuners*le nombre de régions. Autrement dit : cela ne serait pas pratique pour zapper.

Le mieux est de procéder ainsi :

  1. Chercher les chaines de la première région.
  2. Sauvegarder le fichier /home/votrelogin/.kde/share/apps/kaffeine/sqlite.db
  3. Chercher les chaines de la deuxième région.
  4. Sauvegarder le fichier /home/votrelogin/.kde/share/apps/kaffeine/sqlite.db avec un nom différent du premier, évidemment.

Ensuite, quand vous changez de région, vous n'avez plus qu'à copier le bon fichier et à lancer Kaffeine.

Et la télécommande de la T5, elle fonctionne sous GNU/Linux ?

Aucune idée, cela ne m'intéresse pas.

Fin

Mon seul regret à propos de la T5, c'est son packaging. Une boite en ferraille entourée d'un emballage en plastique rigide, cela a un coût qui hausse inutilement le prix de vente. De plus, ce n'est pas très "planète attitude" ;).

Mon seul regret concernant Kaffeine est le fait qu'il se définit comme application par défaut pour tous les fichiers multimédia et ce, sans me demander mon accord.

Pour conclure : si vous êtes le possesseur d'une Terratec 2400i DT, sachez qu'elle fonctionne sous GNU/Linux depuis environ 1 an : TerraTec Cinergy 2400i DVB-T sur LinuxTVWiki. Je vous ferai un petit billet lorsque j'aurais sortit l'ordinateur qui la contient des cartons.