Tag - debian

Entries feed

Wednesday 4 August 2010

Connexion automatique à FreeWifi avec Debian

Voici la configuration pour les systèmes du type Debian pour se connecter au réseau des hot-spots FreeWifi :

/etc/network/interfaces :

1
2
3
4
5
6
7
iface freewifi inet dhcp
  wireless-essid FreeWifi
  wireless-rate 11M
  wireless-key off
  pre-up ifconfig ath0 mtu 1460 up
  post-up nohup /root/bin/freewifi.sh &
  post-down killall -q -KILL freewifi.sh

/root/bin/freewifi.sh :

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
KEY='' # identifiant freewifi, aller sur wifi.free.fr si vous ne l'avez pas encore
PASSWORD='' # mot de passe freewifi
 
sleep 3
while true ; do
  wget --quiet --no-check-certificate --post-data\
  'login='"$KEY"'&password='"$PASSWORD"'&submit=Valider'\
  'https://wifi.free.fr/Auth' -O '/tmp/free'
  sleep 1000
done

Pour lancer la connexion avec une carte Atheros par exemple :

ifup ath0=freewifi

Qu'est-ce qu'il y a d'original là-dedans ? La connexion n'est pas fiable avec la valeur par défaut du paramètre MTU (Maximum Transmission Unit); les paquets de plus de 1,46 ko ne semblent pas passer à cause de la fragmentation (on peut facilement tester avec ping -s TAILLE -v serveur.foo); à 1460 octets la connexion est stable, et des sessions SSH ont duré plusieurs heures sans problème chez moi. Ensuite on fixe la vitesse de la carte wifi à 11 Mbit/s; la plupart des cartes ont une puissance d'émission supérieure aux vitesses plus basses, et de toute manière on n'aura jamais plus de quelques Mbits avec un hot-spot. Enfin, le réseau FreeWifi utilise un portail captif pour vous authentifier pour une durée assez courte (quelque chose comme 30 minutes); avec mon script post-up, l'authentification se fait de manière automatique et périodique.

Thursday 15 July 2010

Blackberry (OS v5) + abonnement SFR + PC sous Linux

Il est possible d'utiliser un terminal mobile RIM pour connecter son PC sous Linux à Internet à travers le réseau GRPS/EDGE/3G. Ce billet est surtout motivé par le fait que les configurations que l'on trouve sur la toile ne semblent plus fonctionner depuis la mise à jour du Blackberry OS à la version 5. Je vais aussi vous donner quelques astuces pour vous en sortir avec la connexion complètement bridée que l'on obtient alors chez SFR.

Configuration du terminal

Allez dans paramètres, puis dans les options avancées et enfin dans TCP/IP : il faut alors tout cocher (utiliser APN et authentification APN) et remplir websfr partout.

Configuration du PC

J'ai suis parti des fichiers de configuration pris sur ProgWeb - Utiliser son BlackBerry sous Linux, une page très complète et en français, à lire absolument si vous avez un BlackBerry.

Il faut installer les paquets barry-util et ppp. Barry est une collection d'utilitaires pour Blackberry, il comprend notamment pppob qui permet d'utiliser le terminal mobile en tant que modem, il y a des configurations PPP toutes prêtes pour les opérateurs amércains, pour SFR il faudra créer les fichiers soi-même. Pour les distributions non semblables à Debian, tout va se passer pratiquement de la même manière pourvu qu'on sache installer Barry et pppd.

/etc/ppp/peers/barry-sfr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
noipdefault
defaultroute
 
ipcp-restart 7
ipcp-accept-local
ipcp-accept-remote
 
lcp-echo-interval 0
lcp-echo-failure 99
 
nopcomp
noaccomp
noauth
nomagic
noccp
crtscts
pap-timeout 20
pap-restart 20
lcp-restart 10
#novj
user "websfr"
password "websfr"
usepeerdns
 
#decommenter les lignes suivantes pour debugger
#debug
#connect "/usr/sbin/chat -v -f /etc/chatscripts/sfr-chat"
connect "/usr/sbin/chat -f /etc/chatscripts/sfr-chat"
#pty "/usr/sbin/pppob -v -l /tmp/barry.log"
pty "/usr/sbin/pppob"

/etc/chatscripts/sfr-chat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TIMEOUT 10
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'ERROR'
ABORT "NO DIALTONE"
ABORT VOICE
ABORT RINGING
 
SAY 'Starting GPRS connect script\n'
 
'' 'BBT_OS'
'' 'ATZ'
OK 'AT+CGDCONT=1,"IP","websfr"'
ABORT 'NO CARRIER'
SAY 'Dialing...'
OK 'ATD*99#'
CONNECT
~p

Connectez alors le terminal en USB et lancez la connexion avec

pon barry-sfr

Vérifiez alors qu'une interface ppp0 s'est créé et que la route par défaut utilise cette interface :

root@escher:/home/grapsus# ifconfig ppp0
ppp0      Link encap:Protocole Point-à-Point  
          inet adr:X.X.X.X  P-t-P:X.X.X.X  Masque:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:3 
          RX bytes:174 (174.0 B)  TX bytes:222 (222.0 B)
root@escher:/home/grapsus# route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

Vous êtes maintenant connecté.

Notes

Connexion automatique

On peut ajouter cette connexion au fichier /etc/network/interfaces de Debian et automatiser ainsi la connexion :

iface ppp0 inet ppp
	provider barry-sfr
	post-down killall -q -KILL '/usr/sbin/pppob'
	post-up resolvconf -d ath0
	post-up resolvconf -d eth1
	post-up cat /etc/ppp/resolv.conf | resolvconf -a ppp0

et lancer la connexion avec

ifup ppp0

J'ai ajouté des directives qui paramètrent correctement les DNS (eth1 et ath0 sont à remplacer les les noms de vos cartes réseau habituelles), et qui terminent le processus pppob à la fin, ce qui permet de se reconnecter sans avoir à re-brancher son téléphone.

DNS

Les DNS de SFR atterrissent dans le fichier /etc/ppp/resolv.conf, il faut soit le copier vers /etc/resolv.conf à chaque fois, soit utiliser le système ifup avec une directive post-up, comme je l'ai fait ci-dessus.

Lenteur

C'est lent : en GPRS on arrive à peine à 100 kbit/s avec des temps de latence importants.

Connexion bridée

Beaucoup de sites web affichent des pages blanches, de nombreux ports sont bloqués, cette connexion est au final assez pénible à utiliser en l'état. Une solution simple est de paramétrer un serveur SSH sur le port 443 chez vous et de faire passer tout le trafic par là.

Configuration du serveur

Dans /etc/ssh/sshd_config ajouter :

Port 443

Configuration du client

Une fois la connexion SFR établie, on lance

ssh -C -p 443 -D 3333 serveur-maison.bar

SSH lance alors un serveur proxy SOCKS v5 local qui fait transiter les connexions par le tunnel SSH; pour l'utiliser avec Firefox, il faut paramétrer l'adresse du proxy à localhost, port 3333 dans les paramètres réseau.

De manière générale, on peut faire passer n'importe quelle application par le proxy SOCKS avec la bibliothèque tsocks. Il faut paramétrer l'adresse du proxy dans /etc/tsocks.conf :

server = 127.0.0.1
server_type = 5
server_port = 3333

Puis lancer

tsocks application

Tout ça paraît très laborieux, mais une fois qu'on a un peu manipulé ces outils, on arrive, en quelques secondes, à se connecter chez soi de manière sécurisée et profiter au maximum de l'Internet mobile. En cas de doute il suffit de consulter les pages de man pppd, ssh et tsocks.

Édit du 25/07/2010

Suite à des changements chez SFR ma configuration ne fonctionnait plus; j'ai passé pas mal de temps à jouer avec les paramètres PPP et le chat-script pour tout faire remarcher. L'article a été mis à jour en conséquence.

Thursday 14 January 2010

Quelques trucs WebSVN

WebSVN est une jolie interface pour SVN. Le paquet Debian de ce logiciel semble être vraiment à la traîne et il m'a fallu un peu de temps pour avoir une configuration qui tient la route. Je vous présente ici mes trouvailles.

MultiViews

Voici comment avoir de jolies URL comme

http://moi/websvn/depot/dossier/fichier

et non pas

http://moi/websvn/index.php?repname=depot&path=dossier/fichier

Il suffit de décommenter

$config->useMultiViews();

dans /etc/websvn/config.php, puis paramétrer

$locwebsvnhttp = "/websvn";

dans /etc/websvn/wsvn.php et enfin changer les alias apache en

Alias /websvn/templates /usr/share/websvn/templates
Alias /websvn /usr/share/websvn/wsvn.php

dans /etc/websvn/apache.conf.

Tarballs

Pour permettre le téléchargement de tars pour n'importe quel dossier de votre dépôt, il faut modifier les directives suivantes dans /etc/websvn/config.php :

1
2
3
$config->allowDownload();
$config->setDefaultFolderDlMode('gzip');
$config->setMinDownloadLevel(1);

Puis une erreur PHP se présente lorsque l'on veut télécharger un fichier individuel, il suffit de changer la ligne 38 de /usr/share/websvn/dl.php en

$handle = @opendir($dir);

Coloration syntaxique

On a le choix entre Geshi et Enscript. Pour activer geshi, on décommente dans /etc/websvn/config.php :

$config->useGeshi();

et on commente éventuellement dans /etc/websvn/svn_deb_conf.inc :

//$config->useEnscript();

Il y a ensuite un problème d'encodage de caractères : tous les fichiers sont supposés être en UTF-8 et les autres sont mal affichés. Il faut ajouter le code suivant à la ligne 740 de /usr/share/websvn/include/svnlook.php pour détecter automatiquement l'encodage :

1
2
$source = mb_convert_encoding($source, 'UTF-8',
 mb_detect_encoding($source, 'UTF-8, ISO-8859-1', true));

Sunday 10 January 2010

Modifier un paquet Debian rapidement (méthode sale)

Parfois on veut modifier juste un petit bout de fichier de configuration dans un paquet Debian. L'utilisation du classique apt-get source, apt-get build-dep et dpkg-buildpackage est alors très longue et lourde, sans parler de tous les paquets, nécessaires à la recompilation, à installer.

Voici deux scripts de mon cru qui permettent de décompresser un paquet binaire, faire les changements nécessaires et reconstruire le paquet. C'est une méthode qui est sale dans la mesure où elle ne respecte pas les procédures de construction de paquets chez Debian, mais elle est très rapide lorsqu'il faut déployer rapidement une configuration personnalisée.

deb-dirty-extract.sh :

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
 
if [ ! -f "$1" ] ; then
  echo "No such file"
fi
 
DIR=${1%%.deb}
mkdir "$DIR" && cd "$DIR"
ar x "../$1"
mkdir data control
cd data && tar -zxf ../data.tar.gz && cd ..
cd control && tar -zxf ../control.tar.gz

deb-dirty-rebuild.sh :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
if [ ! -f 'debian-binary' -o ! -d 'control' -o ! -d 'data' ] ; then
  echo "No extracted deb file here"
  exit 1
fi
 
if [ -z "$1" -o ! -f "$1" ] ; then
  PKG="../"$(basename $PWD)"-custom.deb"
else
  PKG="$1"
fi
echo "Writing new package to $PKG..."
 
rm -f control.tar.gz data.tar.gz "$PKG"
 
cd data && tar -zcf ../data.tar.gz ./ && cd ..
cd control && tar -zcf ../control.tar.gz ./ && cd ..
ar rc "$PKG" debian-binary control.tar.gz data.tar.gz

Utilisation typique :

wget http://.../.../paquet.deb
deb-dirty-extract.sh paquet.deb
cd paquet
[...] # vos modifications
deb-dirty-rebuild.sh

Tuesday 5 January 2010

Downgrader deluge-torrent sur Debian Sid

Il y a de gros dysfonctionnements dans les derniers paquets du client torrent deluge, notamment l'interface web est inutilisable. Voici un moyen rapide pour revenir à la version précédente, celle de Debian lenny :

dpkg -r deluge deluge-common deluge-gtk deluge-torrent deluge-web deluge-webui
wget http://ftp.de.debian.org/debian/pool/main/d/deluge-torrent/deluge-torrent-common_0.5.9.3-1_all.deb
wget http://ftp.de.debian.org/debian/pool/main/d/deluge-torrent/deluge-torrent_0.5.9.3-1_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-date-time1.34.1_1.34.1-14_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-thread1.34.1_1.34.1-14_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/b/boost/libboost-filesystem1.34.1_1.34.1-14_i386.deb
aptitude install python-dbus
dpkg -i libboost-* deluge-*

- page 1 of 2