Acceder a internet depuis son IPhone : Iphone en Routeur 3G

De OpenWikiBSD
Aller à : navigation, rechercher
  • Vous trouvez que la solution du proxy ( présentée ici) est trop limitée au web ?
  • Vous souhaiteriez accéder à tous les ports, tous les protocoles , lire votre courrier avec un client (pop3,imap..) et même à votre VPN en UDP/1194 (for instance) préféré depuis partout ? Bref, avoir un vrai routeur filtrant et ne pas avoir un usage limité de l'internet ?
  • Vous êtes coincés loin d'un point d'accès Wifi/ADSL et vous voulez VRAIMENT lire vos mails depuis votre portable et non depuis le minuscule écran de votre téléphone ?
  • etc..


Sans souci !

Solution Geek-compliant

Prérequis

  • Un Iphone Jailbreaké, c'est
  • Les paquets VI Improved, OpenSSH, Bigboss recommended tools
  • Un forfait 3G (il)limité. Pourquoi (il)limité ? En fait, au delà d'un certain volume mensuel de données, le débit d'effondre...encore plus)
  • Éventuellement un AP Wifi.

Pour la suite, soit vous suivez les explications et effectuez les manips à la main, soit vous lancez ces scripts.

Sur l'Iphone

Rappelez-vous que cet OS tourne avec une base FreeBSD, et que le parefeu qui va avec est l'excellentissime pf ! Besoin de rien de plus pour transformer votre GeekPhone en parfait routeur NAT...

  • Menu Réglages

Si il y a un AP Wifi entre PC et l'Iphone, alors configurez le avec le bon SSID, le bon mot de passe WPA2, mais utilisez un réseau en @IP statique. Autrement, la config DHCP écrase la route par défaut ,celle de la 3G et...plus d'accès Internet!

  • En SSH

Activez le routage des paquets IPv4 entre les interfaces :

sysctl -w net.inet.ip.forwarding=1
vim /etc/pf.conf

Oui, c'est vim et non vi qui doit être installé.

3G_IF=pdp_ip0
WI_IF=en0
WI_LAN="192.168.1.0/24"

#On traduit (RFC 1918) les paquets IPv4
nat on $3G_IF from $WI_LAN -> $3G_IF

#On n'effectue aucun filtrage IP
pass out quick
pass in quick on $WI_IF from $WI_LAN to any keep state

Je vous conseille de coller tout ça dans un script à lancer après chaque reboot du téléphone. (Le sysctl repasse à 0 au reboot du téléphone).

Sur le portable

sudo route del default 
sudo route add default gw  @IP_WIFI_Iphone
sudo sed -i "1inameserver 194.51.3.56" /etc/resolv.conf


Manifestement, c'est le serveur DNS dédié de chez Orange pour être récursif prou les clients mobile : ftm-dns1.rain.fr (194.51.3.56)

Sinon, le workaround a donc été d'utiliser son DNS perso par le VPN, et ainsi, d'avoir une résolution DNS sans ouvrir son serveur à tout l'internet en mode récursif..


Scripts

  • Sur l'IPhone, une fois pour toutes :
    • Si vous avez un forfait illimité = Tous les protocoles:
vim /etc/pf.conf


3G_IF=pdp_ip0
WI_IF=en0
WI_LAN="192.168.1.0/24"

#On traduit les paquets
nat on $3G_IF from $WI_LAN -> $3G_IF

#On n'effectue aucun filtrage IP
pass out quick 
pass in quick on $WI_IF from $WI_LAN to any keep state

touch /etc/pf.os
    • Si vous avez un forfait Internet = Seulement le web


touch /etc/pf.os


vim /etc/pf.conf

3G_IF=pdp_ip0
WI_IF=en0
WI_LAN="192.168.1.0/24"
TCP_OK="{53,80,443}"
UDP_OK="{53}"

#On traduit les paquets
nat on $3G_IF from $WI_LAN -> $3G_IF

#On filtre en sortie
pass out quick on $3G_IF proto tcp from any to any port $TCP_OK
pass out quick on $3G_IF proto udp from any to any port $UDP_OK
pass out quick on $3G_IF proto icmp
pass out quick on $WI_IF keep state
pass in quick on $WI_IF from $WI_LAN to any keep state


  • Sur le portable, une fois pour toutes :

si l'IPhone a pour @IP 192.168.1.100

mkdir -p /usr/script
vim /usr/script/3G.sh

#!/bin/bash
# Turn Iphone into a Wifi-3G router
# Philippe Schwarz
# 2010 October
# GPL v3

DNS_ORANGE=194.51.3.56
DNS_SFR=
DNS_BOUYGUES=
DNS_FREE=

#Modifier seulement ces deux paramètres en fonction de votre environnement
WIFI_IPHON_IP=192.168.1.100
FAI=$DNS_ORANGE
WAN_IPHON_IP=`ssh root@$WIFI_IPHON_IP ifconfig pdp_ip0 |grep -v mtu| awk '{print $2}'`
echo "@IP 3G de l'IPhone : $WAN_IPHON_IP"
echo "@IP Wifi de l'IPhone : $WIFI_IPHON_IP"

sudo route del default 
sudo route add default gw $WIFI_IPHON_IP
sudo sed -i "1inameserver $FAI" /etc/resolv.conf
ssh root@$WIFI_IPHON_IP sysctl -w net.inet.ip.forwarding=1
ssh root@$WIFI_IPHON_IP route delete default
ssh root@$WIFI_IPHON_IP route delete default
ssh root@$WIFI_IPHON_IP route add default $WAN_IPHON_IP
ssh root@$WIFI_IPHON_IP pfctl -d
ssh root@$WIFI_IPHON_IP pfctl -e -f /etc/pf.conf
PING=`ping -c 1 www.free.fr |grep loss |awk '{print $6}'`
if [ "$PING" == "0%" ]
then
echo "Connexion 3G opérationnelle"
else
echo "Souci avec la Connexion 3G "
fi
chmod +x /usr/scrip/3G.sh


  • Sur le portable, au début de la session, après l'authentification wifi :
/usr/script/3G.sh

C'est tout.

Au final

traceroute www.openbsd-edu.net
traceroute to www.openbsd-edu.net (82.237.239.48), 30 hops max, 60 byte packets
 1  iPhone-de-polyp.local (192.168.1.102)  13.845 ms  14.366 ms  14.814 ms
 2  10.164.1.1 (10.164.1.1)  123.673 ms  141.720 ms  143.454 ms
 3  10.164.1.2 (10.164.1.2)  163.248 ms  164.806 ms  165.809 ms
 4  www.openbsd-edu.net (82.237.239.48)  189.405 ms  191.194 ms  203.029 ms

Solution JCD-compliant

Jeune Cadre Dynamique dans le TGV avec son Laptop et juste un câble USB-IPhone :-)

Merci à mes geek-étudiants de BTS de m'avoir informé de l'existence de cette appli.

Merci Clément G. & Thomas D.

Prérequis

  • Câble USB de l'iphone
  • Iphone jailbreaké (est-ce certain ??)
  • Une linuxette
sudo apt-get install libimobiledevice-utils ipheth-utils  ipheth-dkms
  • Aller sur [1] avec votre laptop {Oui, inutile de le faire avec le telephone, l'opération suivante ne marche plus } et récupérer sur cette page le fichier de config correspondant à votre ISP mobile.
  • S'envoyer le fichier par mail vers le téléphone et l'installer; vous vous retrouvez avec un nouveau profil {Réglages/Général/Profils/}
  • Ensuite, j'ai essayé de suivre simplement{Réglages/Général/Réseau/Partage de connexion}, mais ça n'a jamais voulu marcher.
  • Puis, j'ai tenté de modifier à la mano, comme indiqué ici.

Résultat : Un redémarrage plus tard, j'ai ...perdu le menu !

  • Au final, j'ai installé par Cydia: MyWi, qui:
    • Marche au quart de tour sans rien faire
    • Permet de router en USB, en Wifi, en Bluetooth
    • a une période d'essai de 7j. Oui, après c'est payant.
    • Marche en USB donc ne suce pas trop la batterie du tel..
    • Possède un compteur d'octets montants et descendants !
  • J'écris ces lignes depuis MyWi!


Rem: N'oubliez pas d'activer l'user agent de votre browser à Iphone 3.0, ça pourrait vous éviter des ennuis avec votre gentil fournisseur.

Solution Free Mobile compliant

Encore plus simple:

  • on active le mode partage de connexion sur l'Itruc
  • On allume 3G et Bluetooth, donc on vide la batterie..
  • Sur l'ordi :
sudo apt-get install bluetooth   bluez-utils   gnome-bluetooth  bluez-compat
sudo pand --connect `sudo hcitool scan |grep "Iphone"| awk '{print  $1 }'` -n
sudo ifup bnep0


  • Mieux pour gagner un peu de temps en évitant la recherche des voisins BT :
#!/bin/bash
modprobe bnep
modpobe ipheth
pand --connect @MAC_BT_Tel -n
sleep 2
echo"Cx BT / IPhone"
echo  "nameserver 212.27.40.240" |sudo tee -a  /etc/resolv.conf
ifup bnep0

Pour la déconnexion :

#!/bin/bash
ifdown bnep0
pand -K

Soucis

Débit

Sans être catastrophique, le débit n'est pas fabuleux, mais ce n'est pas l'objectif.

En_Images

Pertes de connexion

Dès que l'écran se verrouille, je perds la cx wifi..donc plus d'accès Internet. Placer le verrouillage d'écran sur le max.

Dès qu'un appel GSM a lieu, coupure du lien.(Mais un tcpdump sur le téléphone montre que le vpn reste en place..)

La batterie....

Déjà que l'IPhone est anémique de ce côté, mais là, ça en devient terrible !

Pas plus de 5h-6h à ce rythme...

Ne comptez pas partir sans ressources longtemps..

Forfait

Attention ! selon votre forfait, le coût peut révéler quelques ..menues variations :

Exemple chez Orange :

  • Forfait Internet : N'inclue que les connexions aux ports TCP/80 et TCP/443. Le nom du forfait devrait donc être forfait web à mon sens.

Si vous vous connectez à autre chose ou si vous avez activé le push des mails de l'Iphone, ça risque de vous coûter vite assez cher, car hors-forfait.