Connecter un vieux Mac à Internet avec MacTCP

J’utilise depuis pas mal de temps maintenant un Raspberry Pi qui sert de serveur de partage en AppleTalk pour les vieux Mac. Mais la solution a un défaut, elle ne permet pas de se connecter à Internet depuis une (très) vieille machine. J’ai finalement trouvé une solution.

Pour le partage en AppleTalk, un Raspberry Pi avec A2Server suffit. N’importe quel Mac connecté au réseau devrait voir le partage AFP, qu’il soit connecté via une carte réseau classique ou avec un adaptateur LocalTalk vers Ethernet. Pour partager des données facilement sans sortir des disquettes, c’est très efficaces : je télécharge les données depuis un appareil moderne, je les place sur le serveur et les vieux Mac y ont accès.

Pour l’accès à Internet, c’est un peu différent. Sur les vieilles machines qui n’ont pas de connecteur Ethernet ou sur certaines qui en ont un mais ne supportent pas bien OpenTransport (ou pour garder l’accès à AppleTalk en même temps), le trafic IP va être encapsulé dans des trames AppleTalk. Et dans ce cas-là, un programme supplémentaire va être nécessaire. Il s’agit de MacIPGW, que j’avais déjà utilisé avec un Macintosh Classic, mais en n’ayant pas compris le fonctionnement exact.

Dans mon essai l’année dernière, j’utilisais un Raspberry Pi avec deux interfaces, une connectée en direct au Mac (via un adaptateur) et l’autre connectée à mon réseau. En réalité, ce n’est pas nécessaire dans certains cas. Techniquement, le programme va créer un second réseau qui va servir pour les appareils qui font de l’IP over AppleTalk et effectuer le bridge entre TCP/IP et ce réseau. Dans l’absolu, il n’y a pas besoin de deux interfaces en direct : tant que les trames AppleTalk arrivent sur le Raspberry Pi, ça fonctionnera. En pratique, ce n’est pas toujours le cas, spécialement si vous utilisez un réseau Wi-Fi. Beaucoup de points d’accès ne laissent en effet pas passer l’AppleTalk, et la seule solution consiste souvent à installer un point d’accès Apple (et je ne suis pas totalement certain que les modèles récents en 11ac le fassent).

J’avoue que compiler MacIPGW reste une horreur : sans installer A2Server (qui doit utiliser des réglages spécifiques), impossible dans mon cas. Une fois A2Server présent, voici les commandes.

git clone https://github.com/zero2sixd/macipgw
cd macipgw
make
sudo make install

Ensuite, il faut activer le routage interne sous Debian : sudo sysctl -w net.ipv4.ip_forward=1

Enfin, activer le routage vers l’interface interne. Au départ, je branchais un Mac en direct au Raspberry et je renvoyais le trafic sur une seconde interface. En pratique, une seule suffit, tant que le réseau laisse passer l’AppleTalk.

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

La commande redirige tout ce qui passe sur le réseau 192.168.2.x sur l’interface réseau (l’Ethernet, eth0).

J’ai placé les deux lignes dans /etc/rc.local pour un lancement au démarrage sans soucis.

L’étape suivante, bizarrement, ne fonctionne pas dans le script de démarrage. Impossible de faire fonctionner le script (si un expert en Linux passe par là).

sudo macipgw -d0x111 -n 8.8.8.8 192.168.2.0 255.255.255.0

La commande lance MacIPGW, qui va créer un réseau en 192.168.2.0 avec 8.8.8.8 comme DNS.

Sur le Mac

Sur le Mac, plusieurs possibilités. Soit la machine supporte OpenTransport et dispose d’une prise Ethernet : pas besoin de tout ças. Avec les modèles qui ne supportent pas OpenTransport (où si vous voulez éviter ce logiciel pas très efficace), vous devez par MacTCP. Autrefois payant, on le trouve facilement sur le Net.

Avec MacTCP, trois possibilités : un adaptateur LocalTalk vers Ethernet (nécessite MacIPGW), une carte Ethernet (comme là) configurée pour utiliser de l’IP over AppleTalk (EtherTalk, nécessite MacIPGW) ou la même carte Ethernet configurée en Ethernet classique.

Première étape (ici sous System 7.1), configurer l’AppleTalk sur la bonne interface. LocalTalk dans le premier cas, EtherTalk dans le second.

AppleTalk

AppleTalk

MacTCP est un vieux programme qui ne supporte pas le DNS et les vieilles normes pour attribuer des IP à l’époque ne fonctionnent plus réellement en 2016. La solution consiste donc à passer en adressage manuel. Première chose, choisir la bonne interface : LocalTalk, EtherTalk ou simplement Ethernet. Quelle que soit l’adresse IP affichée, cliquez sur More…

ecran-6

Si vous passez par MacIPGW, il faut cliquez sur Manually dans la zone Obtain Address. Dans Routing Information, l’adresse doit être 192.168.2.1. La zone IP Address n’a pas d’intérêt, le logiciel s’en occupe. Enfin, dans la zone DNS, le Domain doit être juste un . et l’adresse IP celle de votre DNS (ici mon Mac mini, mais sinon 8.8.8.8 suffit). Une fois que c’est fait, faites OK et modifiez le champ IP Address. Le programme va vous obliger à redémarrer, c’est normal.

Les réglages manuels

Les réglages manuels

Si vous vous passez de MacIPGW, en passant direct en Ethernet, mettez simplement les adresses de votre réseau en utilisant une adresse fixe qui n’a pas été attribuée par le DHCP.

Normalement, si MacIPGW a été lancé, que le trafic AppleTalk arrive bien et que tout est configuré proprement, ça doit marcher. Sur mon Performa 450 (un 68030 avec 12 Mo de RAM), Netscape 2 sans JavaScript fonctionne pour afficher des pages. N’espérez pas des débits élevés en LocalTalk, mais ça va un peu plus vite qu’un modem de l’époque.

Il y a du trafic

Il y a du trafic


Google

Google


Autopromo

Autopromo