Est-il possible d'activer ou de supprimer un tunnel iOS OnDemand basé sur un site accessible via un périphérique mobile?


1

Disons que si accéder à one.example.com doit toujours faire apparaître le tunnel, comment cela peut-il être exprimé avec OnDemandRules? Ou si two.example.com doit toujours démolir le tunnel?

La référence de clé de profil de configuration indique que ce dernier cas pourrait être traité en utilisant une DomainActionvaleur with NeverConnectqui "ne déclencherait jamais une tentative de connexion VPN". Ce qui serait, bien que mieux que rien, pas exactement ce que je cherche - sauf que même cela ne fonctionne pas comme prévu (si j'ai bien compris la documentation):

<key>OnDemandRules</key>
<array>

  <dict>
    <key>Action</key>
    <string>EvaluateConnection</string>
    <key>ActionParameters</key>
    <array>
      <dict>
        <key>DomainAction</key>
        <string>NeverConnect</string>
        <key>Domains</key>
        <array>
          <string>two.example.com</string>
        </array>
      </dict>
    </array>
  </dict>

  <dict>
    <key>URLStringProbe</key>
    <string>http://a.url.that.returns.a.two.hundred.ok/</string>
    <key>Action</key>
    <string>Connect</string>
  </dict>

</array>

D'après ce que je comprends, à mesure que le OnDemandRulestableau de dictionnaires est évalué à chaque tentative de connexion, et si le périphérique accède à two.example.com, le premier dictionnaire correspondra et le tunnel ne sera pas activé . Si le périphérique accède à un autre domaine, par exemple one.example.com, le premier dictionnaire ne correspond pas, le deuxième dictionnaire correspond et le tunnel est activé. Cela ne fonctionne pas, cependant, et le tunnel n'est jamais évoqué. Si l'ordre est modifié et que le Connectdictionnaire est en haut, le tunnel est toujours activé (y compris lors de l'accès à two.example.com ).

Ma compréhension de la situation est-elle complètement différente ou la documentation et / ou la mise en œuvre Apple sont-elles en quelque sorte brisées? Quelqu'un a-t-il proposé OnDemandRules qui peut être utilisé pour établir ou interrompre de manière sélective une connexion VPN en fonction des sites auxquels le périphérique accède?


Edit: Le tunnel peut être activé "par domaine" en utilisant les règles suivantes (cela suppose qu’aucun résolveur local n’est présent):

<key>OnDemandRules</key>
<array>

  <dict>
    <key>Action</key>
    <string>EvaluateConnection</string>
    <key>ActionParameters</key>
    <array>
      <dict>
        <key>RequiredDNSServers</key>
        <array>
          <string>127.0.0.1</string>
        </array>
        <key>DomainAction</key>
        <string>ConnectIfNeeded</string>
        <key>Domains</key>
        <array>
          <string>one.example.com</string>
        </array>
      </dict>
    </array>
    <key>URLStringProbe</key>
    <string>http://a.url.that.returns.a.two.hundred.ok/</string>
  </dict>

  <dict>
    <key>Action</key>
    <string>Disconnect</string>
  </dict>
</array>

Cependant, cela échoue du fait que la résolution du nom de domaine échoue pour la première fois, ce qui entraîne l'échec du chargement de la page initiale dans Safari. Après le rechargement d'une page, la page est affichée et le tunnel est activé. Cela se produit même si, au lieu de 127.0.0.1, une adresse de serveur DNS réelle travaillant dans le tunnel est fournie. Y at-il un moyen de ne pas échouer la recherche initiale?

De plus, ce dernier dictionnaire ( Disconnect) n'est jamais atteint et le tunnel reste actif pendant un certain temps. Comment puis-je faire le "contraire" de ce qui précède et démanteler le tunnel pour certains noms de domaine? Le DomainActionde NeverConnectne fait pas cela.

Réponses:


1

Toutefois, cela a pour conséquence que la résolution du nom de domaine échoue pour la première fois, ce qui entraîne l'échec du chargement de la page initiale dans Safari. Après le rechargement d'une page, la page est affichée et le tunnel est activé. Cela se produit même si, au lieu de 127.0.0.1, une adresse de serveur DNS réelle travaillant dans le tunnel est fournie. Y at-il un moyen de ne pas échouer la recherche initiale?

Si vous utilisez un serveur DNS réel, la recherche initiale n'échouera pas sur iOS 9.2. C'est un bogue introduit depuis iOS 9.3 et Apple ne l'a pas corrigé sur la version iOS 9.3.2.

iOS 9.3 beta VPN à la demande ignore les serveurs useDNSS

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.