Deux sites sur des liaisons mobiles rencontrent le même problème dans les deux sens : aucun ne peut accepter une connexion IPv4 non sollicitée, donc aucun ne peut jouer le serveur dans un tunnel direct. L’architecture qui fonctionne place un tiers joignable au milieu : chaque site se connecte vers l’extérieur et le milieu ne réachemine que le trafic que vous approuvez. Ce milieu peut être un routeur que vous exploitez ou un produit qui présente les pairs, et ce n’est pas la même chose. Les étapes ci-dessous sont ordonnées pour que chacune produise une preuve avant que la suivante en dépende.

Aucun des deux sites ne peut être appelé, donc les deux doivent appeler vers l’extérieur

Confirmez la contrainte avant de concevoir autour. Si l’opérateur attribue une adresse privée à l’interface WAN, aucune redirection de port sur le routeur du site ne la rendra joignable, car la traduction se fait plus haut. Une adresse IPv6 publique peut exister sur la même liaison et changer complètement la conception, c’est pourquoi la vérification couvre les deux familles. Notez la réponse par site, car les deux ont rarement des contraintes identiques même lorsqu’ils partagent un opérateur.

Le cas mobile ordinaire ressemble à une adresse de la plage traduite de l’opérateur avec une route par défaut qui la traverse. Ce n’est pas une panne à réparer ; c’est la raison d’être du concentrateur. Ce que vous cherchez, c’est toute adresse qu’un tiers peut atteindre sans que le site ait parlé en premier.

Deux commandes répondent à la question d’adressage du site devant lequel vous vous trouvez. Exécutez-les sur le routeur du site, pas sur un portable derrière lui :

ip -4 addr show scope global
ip -6 addr show scope global

Qui présente les pairs, et qui porte les paquets

La présentation et le transport sont des tâches distinctes que les produits regroupent souvent sans rendre la frontière visible. Un mécanisme de rencontre aide deux pairs à trouver un chemin candidat ; un relais porte leurs paquets quand aucun chemin direct n’existe. Acheter un service qui présente les pairs ne vous donne pas un routeur, et cette différence décide si la conception a besoin d’un concentrateur.

La traversée a son propre vocabulaire, et les mots décrivent des rôles plutôt que des garanties. La spécification ICE décrit les candidats et les vérifications de connectivité, STUN décrit une façon d’en apprendre sur la traduction d’adresses, et TURN décrit le transport relayé pour les applications qui l’implémentent. Aucun de ces mécanismes n’apparaît dans une passerelle classique parce que vous l’avez pointée vers une adresse de découverte. Vérifiez la traversée comme une capacité du produit, et supposez le relais jusqu’à ce qu’un test démontre le contraire.

Une route par site, possédée par un pair

Le concentrateur a besoin d’un tunnel par site, d’un préfixe LAN distinct derrière chacun et d’une route pour chaque préfixe qui nomme son propriétaire. Dans l’exemple, le concentrateur est 10.61.0.1, le site A est 10.61.0.11 avec le LAN 10.60.10.0/24, et le site B est 10.61.0.12 avec le LAN 10.60.20.0/24. Chaque route ci-dessous pointe vers le pair qui possède le préfixe plutôt que vers l’interface du tunnel :

ip route add 10.60.10.0/24 via 10.61.0.11 dev wg0
ip route add 10.60.20.0/24 via 10.61.0.12 dev wg0
sysctl net.ipv4.ip_forward
ip route get 10.60.20.55 from 10.60.10.77

Le réacheminement doit être activé, sinon les paquets s’arrêtent au concentrateur sans erreur qui indique la cause. La dernière commande répond à la vraie question, car elle demande quel chemin un paquet prendrait du LAN du site A au LAN du site B avec la source incluse dans la recherche. Traitez une recherche qui nomme l’interface du tunnel comme une preuve et une qui retombe sur la route par défaut comme une route manquante, non comme un mystère. Restreignez ensuite le transit délibérément, car un concentrateur qui réachemine entre tous les pairs transforme deux sites en réseau plat et la politique d’accès que vous croyiez avoir cesse de s’appliquer.

Décidez aussi où le chiffrement se termine. Quand le concentrateur détient les deux extrémités du tunnel, l’exploitant de cette machine et sa charge de travail rejoignent le modèle de confiance et de disponibilité, et sa bande passante devient une partie du chemin.

Gardez chaque mappage vivant à travers l’opérateur

Chaque site initie son propre tunnel, et chacun doit garder le mappage de traduction vivant sinon l’opérateur l’oublie. Un keepalive côté initiateur préserve ce mappage entre les poignées de main. Limitez les préfixes autorisés à l’adresse du concentrateur et au LAN distant, pour qu’un pair compromis ne puisse pas revendiquer un préfixe qu’il ne possède pas :

[Peer]
PublicKey = <hub public key>
Endpoint = 192.0.2.10:51820
AllowedIPs = 10.61.0.1/32, 10.60.20.0/24
PersistentKeepalive = 25

Reproduisez le bloc sur l’autre site avec son propre préfixe distant, et résistez à l’envie d’autoriser toute la plage du tunnel. Une poignée de main qui s’arrête et reprend depuis un nouveau port source est la signature d’un mappage expiré, et les horodatages de la poignée de main sont la preuve que c’est arrivé. Un intervalle plus court que le délai de l’opérateur prévient l’expiration au lieu de la réparer après coup. Quand l’opérateur change son comportement de traduction, attendez-vous à ce que ces minutages changent avec lui.

Prouvez les deux sens, puis prouvez la reprise

La vérification est directionnelle, donc un ping de A vers B prouve la moitié de la conception et rien sur la route de retour. Vérifiez le chemin de réponse avec la même recherche consciente de la source sur le concentrateur, puis répétez le test depuis l’autre côté. Les poignées de main fraîches font aussi partie de la preuve, car un tunnel resté inactif une heure teste peut-être un ancien mappage :

wg show wg0 latest-handshakes
ping -c 3 10.60.20.55
traceroute -n 10.60.20.55

Testez ensuite la panne que vous attendez, pas le succès que vous voulez. Redémarrez la liaison d’un site et confirmez que le tunnel revient sans qu’un humain touche l’une ou l’autre extrémité, car une conception qui exige un exploitant après chaque changement chez l’opérateur est inachevée. Consignez le chemin principal, l’alternative IPv6 quand elle existe, et le comportement quand le concentrateur est indisponible. Le concentrateur fait désormais partie de votre modèle de disponibilité, alors écrivez-le au lieu de le découvrir pendant une panne.

Articles similaires