1 votes

Comment puis-je informer les clients Mac OS et iOS des routes VPN ?

Sur mon réseau domestique (10.0.1.0/24), j'ai mes Macs et mes appareils iOS (les autres n'ont pas d'importance). Les clients du réseau local ont un accès IPv4 et IPv6 (natif) via un Airport Extreme (AEBS) connecté à un modem câble sur Comcast (je n'ai pas de meilleur choix). J'ai besoin d'un VPN pour accéder à certaines ressources professionnelles et il serait pratique que le VPN "fonctionne" sur l'écran que j'ai sous la main. Pour éviter de gérer un client VPN sur chaque appareil, j'exécute OpenVPN sur mon serveur (10.0.1.252).

Lors de la connexion au VPN, le serveur reçoit les routes statiques typiques ajoutées et j'ai activé la redirection et le NAT pour que le trafic de $private_lan -> <vpn_netblocks> est correctement acheminé par NAT dans le tunnel VPN (tun0). Mon récurseur DNS fonctionne sur ce serveur et sait qu'il doit transmettre certaines requêtes DNS aux serveurs DNS internes. Tout fonctionne.

La dernière étape consiste à faire connaître le VPN aux clients du réseau local. Leur route par défaut est l'AEBS (10.0.1.1). C'est idéal parce que l'AEBS et le modem câble ont leur propre batterie et que le réseau reste opérationnel plusieurs heures après une coupure de courant. Pour que les clients du réseau local puissent accéder au VPN, ils doivent connaître les routes plus spécifiques disponibles sur le serveur. Sous Mac OS, l'ajout manuel de routes statiques comme celle-ci fonctionne :

route add 10.7.0.0/16 10.0.1.252

La question est de savoir comment informer automatiquement les appareils Mac et iOS de la disponibilité de ces routes. Je ne peux pas ajouter de routes statiques à l'AEBS (je serais ravi qu'on me prouve le contraire !). Modifier la route IPv4 par défaut pour qu'elle pointe vers le serveur est mon dernier recours.

J'ai essayé d'ajouter les routes à dhcpd.conf comme routes statiques (code d'option dhcp 121), comme documenté dans RFC 3442 . Voici les parties pertinentes de mon dhcpd.conf :

# options for static routes
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

subnet 10.0.1.0 netmask 255.255.255.0 {
      option rfc3442-classless-static-routes 16, 10,7, 10,0,1,252;
      option ms-classless-static-routes      16, 10,7, 10,0,1,252;
      # needed b/c this overrides option routers
      option rfc3442-classless-static-routes  0, 10,0,1,1;
      option ms-classless-static-routes       0, 10,0,1,1;
}

Les options sont servies par dhcpd mais elles sont ignorés par Mac OS X . Est-ce qu'il y a :

  1. Une autre option DHCP qui fonctionne ?
  2. Si je configure OSPF ou RIP, cela fonctionnera-t-il pour les appareils Mac et iOS ?
  3. Quelque chose comme le protocole de découverte des voisins pour IPv4 ?

Les pointeurs vers une documentation connue pour fonctionner sont très appréciés.

Update

  1. Ajouté dhcpd.conf montrant ma configuration
  2. Ajout d'un lien vers la discussion Apple citant l'absence de support pour le RFC 3442

1voto

Michal Sokolowski Points 111

Ad.1 Je ne suis pas un expert OS X mais vous pouvez essayer de configurer l'option DHCP 249 (ms-classless-static-routes) comme ceci :

option ms-classless-static-routes 24, 192, 168, 16, 192, 168, 6, 1; 
24 - mask (number of bits)
192, 168, 16 - network address
192, 168, 6, 1 - gateway

Il y a aussi l'option DHCP 33 (Single route) : - https://ercpe.de/blog/advanced-dhcp-options-pushing-static-routes-to-clients

Itinéraire unique

Il est très facile de pousser une seule route. La valeur de configuration consiste de deux paires d'adresses IP en hexadécimal. La première adresse est l'hôte de destination destination, la seconde est le routeur.

Exemple :

Destination: 192.168.123.234 (Hex: C0:A8:7B:EA)
Router: 10.34.72.42 (Hex: 0A:22:48:2A)

La valeur est : C0:A8:7B:EA:0A:22:48:2A

Note : Ceci est la configuration de pfsense, pour l'utiliser dans dhcpd vous devez convertir les hexagones en décimales.

Il est possible que vous ayez fait une erreur, pouvez-vous nous montrer la configuration de dhcpd ?

Une très bonne description est ici : https://ercpe.de/blog/pushing-static-routes-with-isc-dhcp-server

Pousser des routes statiques vers vos clients dhcp avec pfsense était délicat. parce que vous devez spécifier les informations du réseau et du routeur en tant que valeurs hexagonales brutes. Accomplir la même tâche avec le serveur DHCP de l'ISC est plus facile. Tout d'abord, nous devons déclarer l'option dhcp dans la portée globale au serveur :

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

La deuxième ligne est pour les clients Windows, parce que MS a décidé d'utiliser l'adresse de l'utilisateur. option dhcp 249 au lieu de l'option 121 existante. L'étape suivante consiste à déclarer ces options dans notre définition de sous-réseau :

 subnet 192.168.1.0 netmask 255.255.255.0 {
     ... other options ....
     option rfc3442-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2;
     option ms-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, ;
 }

Le format des options est le suivant :

<netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>

où les octets ayant la valeur 0 sont omis. Encore une fois, vous devez inclure l'itinéraire par défaut dans les options parce que les clients dhcp sont autorisés à ignorer l'option routeurs x.x.x.x. Ainsi, l'option de la ligne rfc3442-classless- static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2 spécifie les informations de routage suivantes :

24, 192, 168, 123, 10, 10, 10, 1: 192.168.123.0/24 via 10.10.10.1 0,
192, 168, 1, 2: 0.0.0.0 via 192.168.1.2 (default route)

N'oubliez pas de lire également les commentaires.

Il y a également un autre fil de discussion @ serverfault qui peut être utile :

https://serverfault.com/questions/248821/does-the-os-x-dhcp-client-support-classless-static-routes-rfc3442

Une autre chose : connaissez-vous l'option "push" d'OpenVPN ? Vous pouvez pousser les routes directement via le serveur OpenVPN en ajoutant une option comme celle-ci :

push "route 192.168.16.0 255.255.255.0 192.168.6.1" 

Ce qui signifie passer une route statique au client pour le réseau 192.168.16.0 et le masque 255.255.255.0 via 192.168.6.1.

0voto

Alex Points 962

Ne pouvez-vous pas simplement configurer la passerelle par défaut de vos clients LAN pour qu'elle pointe vers le serveur OpenVPN ? C'est déjà un routeur, qui devrait connaître toutes les routes correctes.

Je suppose que c'est sur votre réseau local pour que les clients locaux puissent l'atteindre. Il saura transférer les données vers le réseau OpenVPN. Il transmettra les données à votre routeur frontalier, ou enverra une redirection ICMP pour les systèmes essayant de communiquer avec Internet.

0voto

MW_hk Points 131

Il semble que la réponse correcte à la question soit "vous ne pouvez pas".

Mac OS X (et iOS) ne supporte pas la RFC 3442 et bien que Mac OS X 10.10 inclut toujours la page de manuel de routed, le binaire n'est plus présent.

Il existe des solutions de contournement.

  1. Pour informer les clients de Mac OS X des routes plus spécifiques, on peut exécuter un démon de routage sur Mac OS X via un paquetage logiciel appelé quagga qui inclut ripd et ospfd, qui peuvent ensuite apprendre les routes OpenVPN à partir des démons équivalents sur le serveur (routed, quagga, zebra). C'est beaucoup de travail pour éviter le point 2.

  2. Faites pointer la route IPv4 par défaut vers le serveur (au lieu du routeur) et utilisez un bail DHCP court. Lorsque le serveur n'est pas disponible, le bail DHCP expire rapidement et les périphériques récupèrent un nouveau bail de l'AEBS avec lui-même comme passerelle par défaut.

(Oui, j'ai deux serveurs DHCP sur mon réseau local, je le fais depuis plus de dix ans, le dhcpd du serveur l'emporte sauf quand il est en panne, c'est-à-dire qu'il fonctionne parfaitement).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X