blog-image

Rendre mobile MyTinyDC

  • dHENRY
  • 18/11/2018
  • (Durée de lecture : 4 mn)

Update : Attention cette documentation est obsolète

Habitant en Inde, et bien que connecté à la fibre 300Mbps, nous sommes confrontés de temps à autres à des coupures, dues aux ruptures de câbles, pannes du réseau électrique… Le seul moyen d’être connecté à l’internet reste le téléphone mobile 4G. Dans cet article, je vais décrire pas à pas comment connecter votre téléphone mobile au Datacenter pour que le routeur du Datacenter devienne routeur principal vers l’internet.

Préparation du routeur

Avant de commencer, connectez-vous à la console du routeur de votre Datacenter. Et exécutez la commande : tail - /var/log/messages
Je connecte mon téléphone au routeur du Datacenter avec un câble USB (Raspberry PI3 ou Rock64). J’active la fonction de partage de connexion sur mon téléphone (je ne rentre pas dans le détail, dépend du téléphone, de la version de l’OS, cherchez du côté “Hotspot Tethering”. Après activation les traces vont défiler…

Ce qui nous intéresse c’est la dernière ligne :

... rndis_host 1-1.4:1.0 **usb0**: register 'rndis_host' at usb-3f980000.usb-1.4, RNDIS device, **cd:00:66:55:88:99**

Le Kernel a bien détecté quelque chose, dans ce contexte, il s’agit d’une interface réseau. Je vais activer cette interface réseau dans la configuration du serveur. Éditez le fichier /etc/network/interfaces pour ajouter ces lignes

auto usb0
allow-hotplug usb0
iface usb0 inet dhcp

Enregistrez les modifications, puis désactiver et réactiver la fonction Hotspot de votre téléphone.

Exécutez maintenant la commande :

ip address

Vous verrez des lignes concernant cette interface :

85: usb0:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
   inet 192.168.xxx.xxx/24 brd 192.168.xxx.xxx scope global usb0
      valid_lft forever preferred_lft forever

Votre Datacenter est maintenant bien connecté au téléphone.

Routage du trafic

Votre Datacenter est normalement connecté au routeur principal de votre infrastructure, il dispose donc d’une route vers cette infrastructure, pour la connaître :

route -n

La route vers les réseaux inconnus, est la route indiquée par :

0.0.0.0 [adresse ip du routeur principal].

On va la supprimer.

Exécutez :

route del default

ou son équivalent

route del -net 0.0.0.0 gw [adresse ip du routeur principal]

() Pour ajouter une route par défaut, utilisez la commande :

route add -net 0.0.0.0 gw [adresse ip du routeur principal]

Désactiver et réactiver le Hotspot. Le téléphone est serveur DHCP dans ce contexte, il va donc indiquer à votre serveur toute la configuration nécessaire pour que ce téléphone soit utilisé en tant que routeur.

Exécutez :

route

La route “default” apparaît. Votre serveur peut se connecter à internet.

Règles Firewall (iptables)

Dans mon cas il s’agit d’une solution de secours, je vais donc être très large dans les règles de Firewall. Votre routeur étant un “routeur”, le transfert réseau entre les cartes doit être activé. Pour rappel :

echo "1" > /proc/sys/net/ipv4/ip_forward

Autoriser le serveur à joindre l’internet

J’autorise toute sorties initiée par le serveur vers l’internet

iptables -A OUTPUT -o usb0 -j ACCEPT

J’autorise les entrées pour les communications initiées par le serveur

iptables -A INPUT -i usb0 -j ACCEPT -m state --state ESTABLISHED,RELATED

A cette étape, tapez :

wget https://www.mytinydc.com

la commande doit s’exécuter normalement en créant un fichier index.html, supprimer le fichier :

rm index.html

La commande ping pourrait être aussi efficace mais certains fournisseurs 4G ne laissent pas passer ce type de signal.

Autoriser les autres serveurs du Datacenter à joindre l’internet

# J'active d'abord le Masquerading sur la carte réseau usb0
iptables -A POSTROUTING -o usb0 -j MASQUERADE

# J'autorise le FORWARD entre le réseau du Datacenter, dans mon cas, il est sur l'interface eth0 et l'interface connectée au téléphone
iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT
# et le retour
iptables -A FORWARD -i usb0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Connectez-vous à un des serveurs situés dans le datacenter, et exécutez la commande : **wget https://www.mytinydc.com ** suppression du fichier créé …

MyTinyDC peut être transporté n’importe où…

Aller plus loin

  • Mon réseau local est accessible sur eth1, puis-je accéder à l’internet en passant par mon MyTinyDC ? Oui, il suffit de répéter l’opération précédente en remplaçant eth0 par eth1… Mais aussi de modifier la “Gateway” (passerelle par défaut) de tous les appareils connectés au réseau local, en la remplaçant par l’adresse IP de l’interface eth1… Grâce à cette configuration, j’ai pu poster cet article, tout en étant connecté à NETFLIX :) avec mon Android 4G… le fournisseur Fibre en Inde est HS depuis 4.00PM hier…
  • Si vous être confrontés fréquemment à des coupures sur la ligne internet fixe, il pourrait être judicieux de stopper le serveur DHCP du réseau local (généralement la box, ou le routeur principal) et de créer un service DHCP sur la sortie réseau local (eth1) de MyTinyDC. Ainsi la route par défaut des appareils connectés au réseau local restera inchangée, vous n’aurez plus qu’à brancher le téléphone sur le Datacenter et changer la route par défaut, en cas de panne Fibre. Notez que vous pouvez automatiser cette partie !

Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)

CETTE DOCUMENTATION EST LIVRÉE “EN L’ÉTAT”, SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.