À quoi bon sinon mettre l’iPhone sur son socle ??
Heureusement, un programme fort pratique est disponible : nommé usbmux, il permet de rediriger des ports de l’iphone lors d’une connection USB.
Mais servons nous-en pour faire plus : par exemple, pour avoir du SSH, du VNC et de l’AFP en ayant installé depuis Cydia openssh, veency et netatalk (vive l’iPhone libre !) :
$ python tcprelay.py -t 22:12222 5900:55900 548:55548
Forwarding local port 12222 to remote port 22
Forwarding local port 55900 to remote port 5900
Forwarding local port 55548 to remote port 548
Par contre pour se rappeler des ports locaux correspondants, c’est pas facile...
Ne pourrait-on pas faire plus simple que ssh -P 12222 localhost ou Pomme-K afp://localhost:55548 ?
Heureusement, les adresses IP ont plus d’une astuce dans leur sac. Tout le monde connait les classes A, B et C privées, pour configurer un réseau local.
Par contre, saviez-vous que 127.0.0.0/8 est aussi réservé, mais pour des tests sur la machine locale ? Utilisons donc des adresses 127 pour configurer des alias et réutiliser les mêmes ports, et pouvoir dire ssh iphone ou afp://iphone tout en ayant un serveur SSH ou AFP sur 127.0.0.1
Sous OSX, rajouter l’adresse d’alias de 127.0.0.1, par exemple:
# ifconfig lo0 alias 127.0.0.3 up
On peut bien sur en mettre plus !
ifconfig lo0 alias 127.1.1.2
ifconfig lo0 alias 127.1.1.3
ifconfig lo0 alias 127.1.1.4
ifconfig lo0 alias 127.1.2.48
ifconfig lo0 alias 127.1.3.5
ifconfig lo0 alias 127.1.3.6
Dans tcprelay, remplacer HOST="localhost" par HOST = "iphone"
Déclarer «127.0.0.3 iphone iphone.localdomain » dans /etc/hosts ou dans bind si vous utilisez OSX-Server
Ensuite, sous root (vu que des ports privilégiés sont utilisés) lancer :
# python tcprelay.py -t 22:22 5900:5900 548:548
Attention - netatalk est très pratique pour accéder en AFP à tout le contenu de son iphone, automatiquement et depuis le Finder, mais il peut poser un problème de sécurité, surtout si vous continuez à utiliser le mot de passe par défaut et des réseaux Wifi publics.
Comme indiqué sur Creating a toggle for netatalk on the iPhone « Rob Garth - Mildly Useful Stuff, créez un toogle.
Bon, c’est pas mal, mais pourquoi ne pas rajouter un reverse-tethering tant qu’on y est ? Ainsi, l’iphone accèdera au net par la connection USB... moins cher et plus rapide que le 3G ou l’EDGE !
Pour commencer, configurez simplement un accès ssh sans mot de passe SSH comme indiqué sur iphone passwordless access - Community Ubuntu Documentation
Ensuite, sur votre machine lancez :
pppd debug logfile /tmp/iphone-ppp.log updetach noauth passive pty "/usr/bin/ssh -P iphone -o Batchmode=yes /usr/sbin/pppd nodetach notty noauth" ipparam vpn 192.168.9.1:192.168.9.3
L’iphone sera accessible sur 192.168.9.3, et positionnera comme route par défaut 192.168.9.1 - votre machine OSX où si vous faites du NAT, vous offrirez l’accès internet à votre iPhone en USB !
Pas mal pour une machine où on a juste mis un suivi de port par un script python, non ?
Par contre, mobile safari et les autres ne marche pas. Étrange !
D’autant plus que si l’on pingue ce bon vieux 4.2.2.4, il répond !!
Pour la résolution de domaine, l’iPhone est réputé être buggé : Solving the iPhone's DNS Issues - Jay Freeman (saurik)
Surtout, le DNS se modifie différemment que sous d’autres Unix : inutile de modifier /etc/resolv.conf, qui est en fait autogénéré.
La bonne solution : utiliser ce script comme expliqué sur Configure DNS lookups from the terminal - Mac OS X Hints, et tout fonctionne alors très bien :
#!/bin/bash
if [ $# -lt 2 ] ; then
echo "Use: $0 <domain> <1.Nameserver> [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi
PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)
scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
À conserver comme dns.sh
Ainsi, on a une connection complète en utilisant le script suivant:
#!/bin/sh
ifconfig lo0 alias iphone.localdomain up
python tcprelay.py -t 22:22 5900:5900 548:548
pppd debug logfile /tmp/iphone-ppp.log updetach noauth passive pty "/usr/bin/ssh -P iphone -o Batchmode=yes /usr/sbin/pppd nodetach notty noauth" ipparam vpn 192.168.9.1:192.168.9.3
ssh -P iphone -o Batchmode=yes ./dns.sh localdomain 192.168.9.1
Ouf, ce fut long ! Gagnez un peu de temps en vous procurant les scripts sur la page Téléchargements, mais n’oubliez pas d’adapter les IP à votre réseau local qui utilise peut être déjà certaines plages en 192.168, et surtout à rajouter iphone et iphone.localdomain dans /etc/hosts ou bind !

0 commentaires:
Enregistrer un commentaire