1 votos

En MacOS, ¿cómo puedo evitar una VPN para un sitio específico utilizando su nombre de host?

Estoy configurando un IKEv2 VPN en macOS 10.12.3. Funciona, pero me gustaría configurar sitios web específicos para la derivación de la VPN.

Soy consciente de un método que utiliza la route comando para agregar una ruta estática, sino que sólo funciona para una dirección IP específica. Si el sitio que me estoy conectando a los cambios de su dirección IP (que es una posibilidad), a continuación, su tráfico va a empezar a ir a través de la VPN de nuevo.

¿Cómo puedo eludir el VPN utilizando el nombre de host del sitio? por ejemplo, cualquier solicitud para www.somewebsite.com se que no uso el VPN, independientemente de lo que la dirección IP www.somewebsite.com resuelve?

1voto

klanomath Puntos 19587

La manera más simple para crear una estática y persistente de la ruta a un host es la creación de una secuencia de comandos addroute.sh (de la root:rueda 755) en /usr/local/bin. Reemplazar el nombre de host y la puerta de enlace, aunque.

#!/bin/bash

sleep 10
route -n add -host $(dig +short example.com) 192.168.0.1

y cargar la secuencia de comandos con el lanzamiento de un demonio usr.addroute.plist (root:rueda 644) en /Library/LaunchDaemon/:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>usr.addroute</string>
        <key>ProgramArguments</key>
            <array>
                <string>/bin/sh</string>
                <string>-c</string>
                <string>/usr/local/bin/addroute.sh</string>
            </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/usr.addroute.err</string>
        <key>StandardOutPath</key>
        <string>/tmp/usr.addroute.out</string>
</dict>
</plist>

Carga con: sudo launchctl load /Library/LaunchDaemon/usr.addroute.plist.

Si todo funciona, retire el Estándar de* teclas/cadenas en el plist y los relacionados con los archivos en /tmp.

El sleep 10 línea es una maza de enfoque - una ruta sólo puede ser añadido después de un cierto punto en el tiempo: la red tiene que ser para la interfaz específica y puede ser reemplazado con algo más elegante descritos en esta respuesta aquí.


Dependiendo de la VPN o de su entorno por defecto DNS de capacidades también puede que tenga que agregar una ruta para un servidor DNS (por ejemplo, los de Google 8.8.8.8) y modificar el comando dig a dig @8.8.8.8 +short example.com.


Si reiniciar el host rara vez y los hosts remotos' IPs cambian con frecuencia, utilice la siguiente secuencia de comandos (que puede ser mejorado probablemente):

#!/bin/bash

sleep 10

Hostname=hostname
GateWay=gateway_IP
IPHost=$(dig +short $Hostname)
RouteExist=$(netstat -nr -f inet | grep $IPHost | wc -l)
NewRoute=$(netstat -nr -f inet | grep $IPHost | awk '{print $1}')
OldHost=$(cat /usr/local/bin/addroute)

if [ $RouteExist -eq 0 ]
then
    route -n add -host $IPHost $GateWay
    RouteExist=1
    NewRoute=$(netstat -nr -f inet | grep $IPHost | awk '{print $1}')
    echo $NewRoute > /usr/local/bin/addroute 
fi

if [ $IPHost != $OldHost ]

then
    route -n delete -host $OldHost $GateWay
    NewRoute=$(netstat -nr -f inet | grep $IPHost | awk '{print $1}')
    echo $NewRoute > /usr/local/bin/addroute  
fi

y plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>usr.addroute</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>/usr/local/bin/addroute.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/usr.addroute.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/usr.addroute.out</string>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>

Un proxy adicionales de archivo que se necesita:

sudo touch /usr/local/bin/addroute 

Por favor, ajuste el StartInterval (en segundos) en su plist como necesaria e introduzca un adecuado nombre de host y la IP de puerta de enlace en la secuencia de comandos de shell.

El primer if rutina agrega una ruta a un host remoto después de arrancar su anfitrión y - más tarde - una nueva ruta si la IP del host remoto cambios. El segundo if rutina quita obsoleta en la ruta.

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