Debian
USB Over IP sous Linux
by admin on fév.15, 2010, under Debian, Linux, Logiciels libres, Planet-Libre
Vous disposez d’une imprimante USB (et seulement USB). Pour l’instant, vous n’avez aucun moyen de la contrôler depuis un autre ordinateur chez vous. Nous supposons bien entendu que les deux ordinateurs sont en réseaux (par le biais d’une box par exemple).
Je veux pouvoir transformer mon imprimante USB en imprimante réseau (et donc pouvoir l’utiliser et la contrôler partout chez moi).
La première solution qui s’offre à vous consiste à acheter un appareil qui partage sur le réseau les périphériques USB. Prévoyez un budget minimum de 100 euros pour avoir quelque chose de bien.
Mais heureusement que l’Open-Source est là, et nous allons nous débrouiller nous même, avec un budget de… 0 euros !
USB/IP est une excellente solution logicielle.
Procédure coté serveur
1- Téléchargez le logiciel présent dans les dépôts Debian / Ubuntu :
sudo aptitude install usbip
Vous devez charger les modules suivants pour être capable de contrôler vos ports USB :
sudo modprobe usbip
sudo modprobe usbip_common_mod
Pour démarrer le service « usbip » comme un démon :
sudo usbipd -D
Le message suivant s’affiche.
Bind usbip.ko to a usb device to be exportable!
Pas de panique ! C’est normal. Cela signifie vous devez choisir quel sera le port USB à partager.
1- Branchez votre appareil USB (imprimante, webcam, etc…)
2- Exécutez la commande pour trouver l’identifiant du vendeur et de l’appareil :
lsusb
Il est sous la forme :
Bus XXX Device ZZZ: ID VendorID:DeviceID
Les identifiants Vendeur / Appareil (Vendor / Device) sont codés sur 4 digits chacun (03f0:7a11 par exemple).Le premier (03f0) est pour Hewlett-Packard (qui est la marque de mon imprimante), et le second (7a11) est l’appareil USB (ici, mon imprimante en elle même).
Maintenant que nous avons trouvé les identifiants matériel, nous sommes capable de localiser sa position sur le bus.
sudo usbip_bind_driver –list
Résultat :
busid 2-1.2 (03f0:7a11)
2-1.2:1.0 -> none
2-1.2:1.1 -> usblp
2-1.2:1.2 -> none
2-1.2:1.3 -> usb-storage
Trouvez l’identifiant du bus sur lequel est notre imprimante. Ici, c’est « 2-1.2 ».
Il est temps maintenant de connecter l’appareil USB au réseau :
sudo usbip_bind_driver –usbip 2-1.2
Vous devez avoir une réponse finale du genre :
** Message: bind 2-1.2 to usbip, complete!
Une fois cette commande exécutée, le serveur est maintenant en écoute sur le réseau dans l’attente de connections clients.
Procédure coté client
Installation du logiciel :
sudo apt-get install usbip
Chargez le module « vhci-hcd » :
sudo modprobe vhci-hcd
Pour lister les périphériques USB disponibles sur le serveur :
sudo usbip -l <@ ip>
Bien entendu, remplacer <@ ip> par l’adresse IP du serveur.
Enfin, la commande qui nous apporte un nouveau périphérique USB :
sudo usbip -a <@ ip> X-Y
Remplacer X-Y par le l’identifiant du bus (2-1.2:1.1 pour l’exemple de tout à l’heure).
Si tout va bien, le périphérique est maintenant reconnu par le système. Si c’est un périphérique amovible, le périphérique sera monté; dans le cas d’une imprimante, il faudra l’installer comme une imprimante normale.
Sachez également logiciel client existe aussi sous Windows et je vous donne même le lien de téléchargement.
Tout d’abord, il faut extraire l’archive téléchargée.
En premier lieu, il faut installer le driver en cliquant droit sur le fichier bus.inf, puis sur « Installer ».
Ensuite, exécutez une invite de commande Windows (Menu Démarrer, Exécuter, « cmd »).
Avec la commande « cd » (comme sous Linux !), déplacez vous dans le répertoire où se trouve l’exécutable d’usbip.
Pour lister les périphériques USB disponibles sur le serveur (dans une invite de commande) :
usbip.exe -l <@ ip>
Et ensuite, la commande qui nous apporte un nouveau périphérique USB :
usbip.exe -a <@ ip> USB-ID
C’est bon ! Le périphérique USB doit maintenant être détecté par Windows !
J’espère avoir été clair sur les explications. Si vous avez suivi ce que j’ai fait à la lettre, tout devrait fonctionner. Sinon, vérifiez bien que vous avez choisi le bon identifiant du périphérique USB.
J’ai testé et ça fonctionne : Imprimante USB transformée en imprimante réseau, disque dur USB partagé sur le réseau, Webcam utilisée comme caméra de surveillance.
Installer sa Webcam Trust sous Debian
by admin on mai.08, 2008, under Debian, Linux, Logiciels libres, Planet-Libre
Je dispose d’une webcam TRUST 320 SPACECAM et ma distribution est toujours Debian (unstable).
Aucun site n’explique correctement l’installation du driver donc je vais le faire j’espère le plus clairement qu’il en soit.
Vous devez disposer des fichiers « linux-headers » de votre noyau :
# aptitude install linux-headers-`uname -r`
Ensuite nous allons installer le paquet qui nous intéresse :
# aptitude install ov51x-jpeg-source
# cd /usr/src
# bzip2 -d ov51x-jpeg.tar.bz2
# tar xvf ov51x-jpeg.tar
# cd ov51x-jpeg
# make
# make install
# modprobe ov51x-jpeg
# vim /etc/modules
Rajouter « ov51x-jpeg » à la fin.
Et voilà, vous pouvez utiliser un logiciel tel que amsn pour pouvoir utiliser la webcam sur Internet.
Créer son serveur VPN sous Debian
by admin on mar.27, 2008, under Debian
Voici un tutoriel tout frais qui va vous permettre comme moi d’avoir son propre serveur VPN (Virtual Private Network).
Un serveur VPN, c’est quoi ? Pennons mon exemple : J’ai un serveur à la maison et j’ai un pc portable avec lequel je bouge beaucoup. J’avais envie d’un système me permettant d’être dans mon réseau local partout où j’irais dans le monde. C’est le but du VPN, il va agir comme un tunnel chiffré entre le client et le serveur via des certificats.
J’ai donc choisis une solution libre : OpenVPN accouplé à OpenSSL pour le chiffrement.
Pour cela, une bête de course n’est pas nécessaire, juste de quoi installer une Debian. Pour ma part j’ai une vieille tour trouvée dans ma cave avec un céléron, 32 Mo de mémoire vive et un vieux chipset graphique. De toute façon, pas question d’installer un environnement graphique : les paquetages minimum sont suffisants.
Voici mon architecture réseau :
Mon routeur : 192.168.0.254
Mon serveur VPN derrière le routeur : 192.168.0.111
L’interface TUN sur le serveur VPN qui va faire le lien : 10.8.0.1
L’interface TUN sur le client : 10.8.0.6
Le client étant connecté sur Internet via une autre connexion que la mienne.
Une fois votre serveur installé et mis à jour, installer ces paquets :
# aptitude install openvpn
# aptitude install liblzo
# aptitude install openssl
Vous êtres prêt pour la suite.
Notre VPN sera sécurisé à l’aide de certificats 1024 bits chiffrés RSA.
Sur le serveur :
cd /usr/share/doc/openvpn/examples/easy-rsa/
Edittez le fichier “vars” et à la fin remplissez les champs du certificat, comme par exemple :
- export KEY_COUNTRY=FR
- export KEY_PROVINCE=France
- export KEY_CITY=Paris
- export KEY_ORG=”MonOrganisation”
- export KEY_EMAIL=”contact@MonOrganisation.fr”
Initialisez les clés :
# . ./vars
# ./clean-all
Nous allons créer le certificat principal :
# ./build-ca
Tous les champs sont dejà rentrés sauf “Common Name” où il faut renseigner (par exemple “principal”)
Ensuite nous allons créer le certificat propre au serveur :
# ./build-key-server serveur
Tous les champs sont dejà rentrés sauf “Common Name” où il faut renseigner (par exemple “serveur”)
Création du certificat pour le client :
# cd /usr/share/doc/openvpn/examples/easy-rsa/
# . ./vars
# ./build-key client
# ./build-key client
Création du paramètre Diffie Hellman :
# ./build-dh
Copie des clés dans le répertoire de configuration d’OpenVPN :
# cp ./keys/ca.crt /etc/openvpn/
# cp ./keys/ca.key /etc/openvpn/
# cp ./keys/serveur.crt /etc/openvpn/
# cp ./keys/serveur.key /etc/openvpn/
# cp ./keys/dh1024.pem /etc/openvpn/
Création du fichier de configuration d’OpenVPN :
# vim /etc/openvpn/openvn.conf
#Port en écoute utilisé pour la connexion VPN
port XXX
#Protocole utilisé (Le protocole udp est plus sécurisé que le tcp)
proto tcp
#Type d’interface réseau virtuelle créée
dev tun
#Nom des fichiers servant à l’authentification des clients via OpenSSL
ca /etc/openvpn/ca.crt
cert /etc/openvpn/serveur.crt
key /etc/openvpn/serveur.key
dh /etc/openvpn/dh1024.pem
#Adresse du réseau virtuel (Le serveur aura l’adresse 192.168.0.1)
server 10.8.0.0 255.255.255.0
#Cette ligne ajoute sur le client la route du réseau du serveur
push “route 192.168.0.0 255.255.255.0″
#Ces lignes indiquent aux clients l’adresse des serveur DNS et WINS
push “dhcp-option DNS 192.168.0.254″
push “dhcp-option WINS 192.168.0.254″
# Cette ligne permet aux clients de voire les autres clients
client-to-client
keepalive 10 120
#Cette ligne active la compression
comp-lzo
#Ces lignes permettent de rendre persistante la connexion
persist-key
persist-tun
#Cette ligne permet d’indiquer le niveau de log souhaité (de 1 à 9)
verb 3
Voila pour la configuration serveur.
Si comme moi vous avez un routeur, pensez à ouvrir le port que vous aurez choisit sur le routeur !
Sur le serveur, il nous reste encore à activer le module tun du noyau :
# modprobe tun
Puis à configurer le réseau :
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t -nat -A POSTROUTING -o eth0 -s 192.168.0.254 -j MASQUERADE
iptables -t nat -A FORWARD -in-interface tun0 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
# /etc/init.d/openvpn restart
Via SCP ou clé USB, importer les certificats clients vers le poste client (les fichiers nécéssaires sont ca.crt, client.crt et client.key).
Mettez les dans votre répertoire /etc/openvpn/
Maintenant, travaillons sur le poste client pour en finir :
Editez le fichier de configuration OpenVPN :
# vim /etc/openvpn/openvpn.conf
#nous sommes client
client
tls-client
#le serveur
remote XX.XX.XX.XX XX #@IP publique du serveur et port d’écoute
proto tcp
dev tun
ifconfig 10.8.0.2 10.8.0.1
#Certification de l’AC
ca /etc/openvpn/ca.crt
#notre certificat
cert /etc/openvpn/client.crt
#clef secrete
key /etc/openvpn/client.key
#negociation
reneg-sec 21600
#compression
comp-lzo
#verbosité
verb 3
Voilà pour la configuration.
Maintenant configurons le réseau :
# echo 1 > /proc/sys/net/ipv4/ip_forward
# route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.0.111
# /etc/init.d/openvpn restart
Et maintenant, connectons nous au VPN sur le client :
# openvpn --config /etc/openvpn/openvpn.conf
# ping 192.168.0.111
PING 192.168.0.111 (192.168.0.111) 56(84) bytes of data.
64 bytes from 192.168.0.111: icmp_seq=1 ttl=64 time=3.17 ms
64 bytes from 192.168.0.111: icmp_seq=2 ttl=64 time=2.62 ms
64 bytes from 192.168.0.111: icmp_seq=3 ttl=64 time=3.34 ms
64 bytes from 192.168.0.111: icmp_seq=4 ttl=64 time=2.77 ms
Et voilà le travail.
Vous êtes en réseau local de n’importe où dans le monde.
Cela permet par exemple de détourner des ports fermés lors d’une connection bridée et vous permettrait de les avoir tous ouverts comme à la maison ![]()
Si vous avez la moindre question ou un problème, contactez moi.
Bien apprendre, c’est bien se documenter
by admin on oct.16, 2007, under Debian
J’écris cet article pour montrer la richesse et la qualité de la documentation que l’on peut trouver sur Internet. L’ensemble de la documentation que je vais présenté est exclusivement pour Debian GNU/Linux mais dans certains cas peut concerner Linux en général.
Avant tout chose, il est préférable de commencer par l’installation, qui requiert parfois des connaissances. Par exemple, à l’installation de Debian, combien de partitions doit-je créer ou quel service dois-je activer…
Ce manuel est sous forme de paquet et décrit le processus d’installation d’une station Debian.
Ca y est, vôtre Debian est installée, et vous êtes dessus. Vous ne savez pas faire grand chose et vous aimeriez vous documenter sur par exemple comment installer un paquet, configurer Apache ou carrément commencer par une compilation du noyau (bon ça c’est pour l’humour =) ). Et ben sachez qu’il existe un manuel de référence pour Debian disponible en html ou en pdf qui vous aidera dans beaucoup de domaines notemment dans l’administration système.
Vous avez pris la main sur vos paquets d’installés, tout marche à peu près comme il le faut mais vous vous posez l’ultime question : Suis-je protégé ? Installer un pare-feu ou même un anti-virus, pourquoi pas ? Cette documentation (lien html et pdf) est celle que j’utilise pour sécuriser ma machine et je la trouve très complête.
Les documentations sont souvent mises à jour et complétées par encore plus d’information pertinentes. J’invite donc tous ceux qui sont comme moi, qui en apprennent tous les jours et qui aiment ça parce que se documenter c’est parfois chercher soi même pour mieux comprendre. Grâce à cette documentation par exemple, j’ai pu créer mon script firewall avec iptables.
D’autres sources sont sur le site de debian.
Merci aux auteurs…
Projet de site pour le salon debian-fr@chat.jabberfr.org
by admin on oct.06, 2007, under Debian
Un nouveau site sur Debian est en cours de développement.
Il se veut “original et novateur”.
Il y aura une section qui présentera des paquets, une section où vous pourrez discuter sur le salon debian-fr via une interface web (MUCkl), une section de scripts fait maison, puis une section de liens intéressants.
Si vous êtes intéressé pour contribuer (relectures, rédaction d’article, mise en page…) rendez-vous sur le salon debian-fr.
Voici la page expliquant le projet.
N’hésitez pas à me contacter pour poser toute sorte de question, toute contribution est la bienvenue !
Merci d’avance
Créer un réseau virtuel privé avec SSH
by admin on sept.19, 2007, under Debian, Linux
La nouvelle ( > 4.3 de juillet 2007) version de SSH permet désormais un “Virtual Private Network” entre 2 stations Debian. Trop cool !
Ce VPN va router le traffic d’un ordinateur vers le réseau via une connexion SSH.
SSH et Debian Etch sont requis.
Voici le scénario :
Ce qui est intéressant, c’est de détourner une connexion avec peu de ports ouverts vers une connexion où tous les ports seront ouverts.
Voici la procédure :
- Sur le client :
$ sudo ssh-keygen -t rsa
On va générer une clé rsa pour root.
Ensuite, rajouter dans le fichier /etc/network/interfaces en remplaçant les “adresseX” :
iface tun0 inet static
pre-up ssh -S /var/run/ssh-myvpn-tunnel-control -M -f -w 0:0 adresse5 true
pre-up sleep 5
address adresse1
pointopoint adresse2
netmask adresse3
up route add -net adresse4 netmask adresse5 gw adresse2 tun0
post-down ssh -S /var/run/ssh-myvpn-tunnel-control -O exit adresse5
Avec comme valeurs :
adresse1 = adresse ip du tunnel coté client “tun0″
adresse2 = adresse ip du tunnel coté serveur “tun0″
adresse3 = masque de sous réseau du tunnel
adresse4 = adresse ip du réseau privé (x.x.x.0)
adresse5 = adresse ip publique eth0
- Sur le serveur :
Editez /etc/ssh/sshd_config:
PermitTunnel point-to-point
PermitRootLogin forced-commands-only
Puis ajoutez ceci dans /root/.ssh/authorized_keys:
tunnel=”0″,command=”/sbin/ifdown tun0;/sbin/ifup tun0″ ssh-rsa AAAA ..snipped.. == root@server
Remplacer ssh-rsa par le contenu de /root/.ssh/id_rsa.pub du client.
Editez /etc/network/interfaces :
iface tun0 inet static
address adresse2
netmask adresse3
pointopoint adresse1
Dans /etc/sysctl.conf, vérifier que net.ipv4.conf.default.forwarding est à 1
$ sudo sysctl net.ipv4.conf.default.forwarding=1
Voilà, il ne nous reste plus qu’à activer le tunnel ;
Sur le client :
$ sudo ifup tun0
RTNETLINK answers: File exists
run-parts: /etc/network/if-up.d/avahi-autoipd exited with return code 2
user@client:~$ ping -c 2 192.168.0.101
PING 192.168.0.101 (192.168.0.101) 56(84) bytes of data.
64 bytes from 192.168.0.101 icmp_seq=1 ttl=64 time=305.8 ms
64 bytes from 192.168.0.101 icmp_seq=2 ttl=64 time=299.1 ms
…..
ligne 3 <– Erreur normale !
C’est pas magnifique ?
Vous voilà en réseau local avec votre station distante…
