1 votos

¿Es posible activar o desactivar un túnel iOS OnDemand en función de un sitio al que se accede desde un dispositivo móvil?

Digamos que si se accede a uno.ejemplo.com siempre debe traer el túnel, ¿cómo se puede expresar esto con OnDemandRules? O si dos.ejemplo.com ¿se debe derribar siempre el túnel?

El Referencia de la clave del perfil de configuración afirma que este último caso podría manejarse de alguna manera utilizando un DomainAction con valor NeverConnect que "no activar nunca un intento de conexión a la VPN". Lo que sería, aunque mejor que nada, no es exactamente lo que estoy buscando - excepto que incluso esto no funciona como se espera (si he entendido la documentación correctamente):

<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>

Tengo entendido que como el OnDemandRules se evalúa en cada intento de conexión, y si el dispositivo está accediendo a dos.ejemplo.com, el primer diccionario coincidiría y el túnel no aparecería. Si el dispositivo accede a otro dominio, por ejemplo one.example.com, el primer diccionario no coincidiría, el segundo diccionario sí, y el túnel aparecería. Sin embargo, esto no funciona y el túnel nunca aparece. Si se cambia el orden y el Connect está en la parte superior, entonces el túnel siempre aparece (incluso cuando se accede a dos.ejemplo.com ).

¿Estoy entendiendo mal todo el asunto, o es que la documentación o/y la implementación de Apple está rota de alguna manera? ¿Alguien ha creado OnDemandRules que pueda utilizarse para activar o desactivar selectivamente una conexión VPN en función de los sitios a los que accede el dispositivo?


Editar: El túnel puede ser levantado "por dominio" usando las siguientes reglas (esto asume que no hay un resolvedor local presente):

<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>

Sin embargo, esto sufre del hecho de que la resolución del nombre de dominio primero falla, causando que la carga inicial de la página falle en Safari. Después de una recarga de la página, ésta se muestra y el túnel aparece. Esto sucede incluso si en lugar de 127.0.0.1 se proporciona una dirección de servidor DNS real, que funciona detrás del túnel. ¿Hay alguna manera de que no falle la búsqueda inicial?

Además, este último diccionario ( Disconnect ) nunca se alcanza, y el túnel se mantiene durante algún tiempo. ¿Cómo puedo hacer lo "contrario" de lo anterior y derribar el túnel para algunos nombres de dominio? El DomainAction de NeverConnect no lo hace.

1voto

spookylukey Puntos 2249

Sin embargo, esto sufre del hecho de que la resolución del nombre de dominio primero falla, causando que la carga inicial de la página falle en Safari. Después de una recarga de la página, ésta se muestra y el túnel aparece. Esto sucede incluso si en lugar de 127.0.0.1 se proporciona una dirección de servidor DNS real y que funcione detrás del túnel. ¿Hay alguna manera de que no falle la búsqueda inicial?

Si está utilizando un servidor DNS real, la búsqueda inicial no fallará en iOS 9.2. Es un error introducido desde iOS 9.3 y Apple no lo ha corregido en la versión de lanzamiento de iOS 9.3.2.

iOS 9.3 beta VPN On Demand ignora useDNSServers

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X