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.