Aller au contenu

Partager sa connexion internet ADSL vers son terminal Android


Recommended Posts

quelqun peu mexpliquer comment je peu proceder jai rien compri a ce tuto merci:

La connexion 3G étant un peu faible sur mon lieu de travail, j’ai décidé de partager la connexion internet de mon PC fixe vers mon terminal Android via le câble USB.

Voici la marche à suivre…

Pré-requis

Votre terminal sous Android doit être rooté. Vous aurez besoin d’accéder à un shell sur votre téléphone, le plus simple étant d'utiliser l'outil adb fourni avec le SDK Android. Votre terminal Android doit également vous permettre de partager votre connexion réseau via USB.

Pour vous faire gagner un peu de temps, vous pouvez récupérer la version 1.0.29 (version d'août 2012) d'adb ici (md5sum : 5a0fddd64f0563e18994900acbeaa5e2).

Personnellement, j’ai fait la manipulation sur un PC fonctionnant sous Ubuntu 12.04 (precise) 64 bits auquel j’ai connecté un téléphone HTC Wildfire CyanogenMod 7.2.0 stable, Android 2.3.7.

Connexion au téléphone via adb

Après avoir relié le périphérique Android au PC en USB, on active le débogage USB sur le terminal Android. Sur mon téléphone, ça se passe dans le menu : Préférences > Applications > Développement.

screenshot-1353344389890.png

Après avoir éventuellement donné les droits nécessaires pour l'exécution d'adb, on le lance avec la commande suivante.

1

$ ./adb shell

Note : selon les cas, et les terminaux, adb peut nécessiter les droits root, dans ce cas redémarrer le serveur en utilisant sudo (se référer au manuel d'adb).

Si l'opération s'est correctement déroulé, le terminal affiche désormais le prompt du téléphone : #. Le téléphone utilise BusyBox.

Configurer le PC comme passerelle pour l'accès internet du terminal Android

On active ensuite l'interface réseau sur le port USB au niveau du téléphone (sur mon téléphone, ça se passe dans le menu : Préférences > Réseau > Partage de connexion).

screenshot-1353344428009.png

La connexion est automatiquement reconnue par NetworkManager sur l'ordinateur comme on peut le voir ci-dessous.

1

2

3

4

5

6

7

8

9

$ ifconfig usb0

usb0 Link encap:Ethernet HWaddr 3e:d7:7f:2e:00:00

inet adr:192.168.42.67 Bcast:192.168.42.255 Masque:255.255.255.0

adr inet6: fe80::::fe2e:58d1/64 Scope:Lien

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Packets reçus:4 erreurs:0 :0 overruns:0 frame:0

TX packets:52 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 lg file transmission:1000

Octets reçus:817 (817.0 B) Octets transmis:13183 (13.1 KB)

Nous notons pour plus tard l'adresse IP du PC sur le réseau monté via le port USB ainsi que l'adresse du réseau :

  • addresse IP du PC : 192.168.42.67
  • adresse et masque du réseau : 192.168.42.0/24

Les commandes suivantes exécutée sur le PC permettent d'activer la redirection des paquets provenant de la connexion activée sur ce réseau (ici 192.168.42.0/24, à adapter selon votre cas).

1

2

3

4

$ sudo sysctl -w net.ipv4.ip_forward=1

[sudo] password for kevin:

net.ipv4.ip_forward = 1

$ sudo iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE

Sur le téléphone, nous ajoutons la route indiquant au téléphone d'envoyer tous les paquets vers le PC qui servira de passerelle (l'adresse 192.168.42.67 étant également à adapter), puis nous vérifions que notre commande a été prise en compte.

1

2

3

4

# ip route add default via 192.168.42.67

# ip route

192.168.42.0/24 dev usb0 src 192.168.42.129

default via 192.168.42.67 dev usb0

On termine en spécifiant les DNS de notre choix (ici ce sont ceux de Google qui sont spécifiés).

1

2

3

# cat /system/etc/resolv.conf

nameserver 8.8.8.8

nameserver 8.8.4.4

À ce stade la connexion à internet fonctionne correctement, comme le confirme un ping sur le serveur DNS de Google.

1

2

3

4

# ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=49 time=10.7 ms

64 bytes from 8.8.8.8: icmp_seq=2 ttl=49 time=11.9 ms

Problème de DNS avec Free Mobile

Néanmoins j'ai rencontré un soucis au niveau de la résolution de domaine. Il semble que le DNS spécifié dans resolv.conf ne soit pas utilisé, le téléphone continuant d'adresser ses requêtes vers le DNS Free Mobile (la faute à l'application FreeMobile Config ?). Un ping sur un nom de domaine ou une requête nslookup ne recevant aucune réponse.

1

2

3

4

5

6

7

8

# ping google.com

^C

# nslookup google.com

Server: 212.27.40.240

Address 1: 212.27.40.240

^C

La solution présentée ici consiste, à partir du PC et à l'aide d'iptables, à rediriger de façon sauvage les paquets destinés au DNS Free (212.27.40.240) vers le DNS de Google (8.8.8.8), par exemple. Le téléphone ne s'en rend pas compte, mais c'est désormais le DNS que j'ai choisi qui répondra à ces requêtes.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

$sudo iptables -t nat -A PREROUTING -d 212.27.40.240 -m udp -p udp --dport 53 -j DNAT --to 8.8.8.8

$sudo watch -n 1 iptables -t nat -nvL

Every 1,0s: iptables -t nat -nvL Fri Sep 28 11:48:07 2012

Chain PREROUTING (policy ACCEPT 1592 packets, 226K bytes)

pkts bytes target prot opt in out source destination

31 2092 DNAT udp -- * * 0.0.0.0/0 212.27.40.240 udp dpt:53 to:8.8.8.8

Chain INPUT (policy ACCEPT 1007 packets, 176K bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 2755 packets, 176K bytes)

pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 2755 packets, 176K bytes)

pkts bytes target prot opt in out source destination

615 44349 MASQUERADE all -- * eth0 192.168.42.0/24 0.0.0.0/0

C'est un peu sale, mais ça marche.

1

2

3

4

5

6

# ping google.com

PING google.com (173.194.39.36) 56(84) bytes of data.

64 bytes from mrs02s04-in-f4.1e100.net (173.194.39.36): icmp_seq=1 ttl=55 time=18.4 ms

64 bytes from mrs02s04-in-f4.1e100.net (173.194.39.36): icmp_seq=2 ttl=55 time=17.7 ms

64 bytes from mrs02s04-in-f4.1e100.net (173.194.39.36): icmp_seq=3 ttl=55 time=17.9 ms

^C

Je ne suis pas réellement satisfait de cette dernière solution. Si vous avez une solution à me proposer pour le problème de serveur DNS, je suis preneur !

Lien vers le commentaire
Partager sur d’autres sites

"Personnellement, j’ai fait la manipulation sur un PC fonctionnant sous Ubuntu 12.04 (precise) 64 bits auquel j’ai connecté un téléphone HTC Wildfire CyanogenMod 7.2.0 stable, Android 2.3.7."

d'autres questions Wap ? ^_^

Akram , la manip se fait sous Linux dans le terminal server...tu peux installer un Linux (comme UBUNTU) en parallele a ton windows sans souci ( le souci n°1 c'est tes drivers sous Linux....)

de maniere generale, attaquer les dns ou autres d'un tel n'est pas si evident (ni stable en cas de changement par l'operateur, qui n'averti jamais) ; et c'est ce que tu dois faire pour que le ace voit le pc comme une adresse "passerelle" .

je te deconseille ce genre de manip'...tout en etant motivé pour que tu test quand meme ! :P

Modifié par Ryujin
Lien vers le commentaire
Partager sur d’autres sites

Tu sais, adb shell tu peux le pousser sur ton tel avec windows aussi. ;)

Pour le x10 mini pro j'avais du l'utilisé :) t es mignon quand même va

Tien Akram tu comprendras plus de truc avec ça: http://wiki.frandroid.com/wiki/Cours_sur_l'utilitaire_Android_ADB

ps: Ryujin regarde aussi va ;)

Modifié par Wʎp
Lien vers le commentaire
Partager sur d’autres sites

il me semble qu il te faut les sdk android sur le pc. Et adbshell c est la commande a faire sous windows pour rentrer dans le tel.

Enfin je crois :D

Detends toi ,lol !

t'as mal cru et t'as mal lu ,coco ! ^_^

essaie de la rentrer dans une commande windows pour voir...

Modifié par Ryujin
Lien vers le commentaire
Partager sur d’autres sites

Detends toi ,lol !

t'as mal cru et t'as mal lu ,coco ! ^_^

Dis t-il en parlant tout le temps sarcastiquement sur tout les sujets ;)

BREF !!!!!!

Akram, il te faut Ubuntu pour ton TUTO, car y'a pas d'autres solutions (j'en ai vue pour windows, mais le retours sont pas top, même pas top top... bref, pourri quoi)

y'a d'autres solutions sinon pour profiter de ta connexion android sur ton PC en ce prenant un peu moins la tête.

Par le Bluetooth : tuto (si tu n'a pas de bluetooth sur ton pc, il existe des petites clef USB Bluetooth (je sais pas le nom lol pourtant j'en ai un sur mon pc de bureau: exemple)

Et sinon par le Wifi. logique ^^

Modifié par Wʎp
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...