¿Cómo acceder simultáneamente a dispositivos IPv4 en 2 redes 10/24 diferentes cuando se usan 2 conexiones VPN activas?

0

Después de que una empresa se venda a diferentes partes, puede terminar con una situación en la que la antigua red 10.0.0.0/8 se divide en dos o más redes diferentes, como 10.0.0.0/24 y 10.0.1.0/24.

Ahora deseo acceder a ambas redes al mismo tiempo usando Mavericks cliente VPN incorporado. Una red VPN está en L2TP, la otra PPTP.

Sin embargo, solo se puede acceder a los dispositivos en la primera conexión VPN establecida, y no a las computadoras en la segunda red. La única excepción es la IP remota (gateway) de la conexión VPN # 2.

¿Cómo puedo solucionar este configurar y olvidar ?

Nota: con configurar y olvidar quiero decir que no quiero tener pasos adicionales al "marcar" un perfil de conexión VPN ya existente.

    
pregunta Pro Backup 10.04.2016 - 00:02

1 respuesta

0

problema de enrutamiento

El problema aquí es que ambos perfiles de conexión VPN están en una red 10, que oficialmente viene con una máscara de red de /8 a.k.a. 255.0.0.0 a.k.a. 0xff000000 . Entonces, al establecer ambas conexiones VPN a la vez, terminas con solo un destino en la tabla de enrutamiento para el 10-network . Y esa entrada de enrutamiento enrutará todo el tráfico 10.x.x.x a la primera conexión ppp establecida, a excepción de las direcciones IP locales y remotas en la segunda conexión ppp.

$ netstat -nr -f inet
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.0.1        UGSc           10        0     en0
default            10.0.1.1           UGScI           0        0    ppp0
default            10.0.0.1           UGScI           0        0    ppp1
10                 ppp0               USc             1        0    ppp0
10.0.0.1           10.0.0.12          UHr             2        0    ppp1
10.0.1.1           10.0.1.200         UHr             1        0    ppp0

Solución de enrutamiento

La solución es extender manualmente la tabla de enrutamiento con las entradas deseadas. No es necesario eliminar la entrada 10, solo agregar nuevas entradas de ruta. Siempre que las entradas de ruta recién agregadas se dirijan a una subred más pequeña, la entrada tendrá preferencia. Lea esto como: cuando la subred tiene un número /X más alto. Por ejemplo, /24 es mayor que /8 , por lo que una entrada 10/24 tendrá preferencia sobre una entrada de enrutamiento 10/8 . Básicamente, agregue una nueva entrada de enrutamiento después de haber establecido la segunda conexión VPN, como: $ sudo /sbin/route -n add -net 10.0.2.0/24 -interface ppp1

Solución de automatización

Es engorroso y puede introducir errores al tener que ingresar la ruta manualmente después de haber establecido la conexión VPN secundaria. Afortunadamente, hay una solución integrada en el daemon ppp que utiliza if-up , como se puede leer en $ man pppd . Cada vez que se establece una conexión ppp (VPN) que utiliza direccionamiento IPv4, se llama a un script ( /etc/ppp/if-up ) donde puede ejecutar sus reglas / comandos personalizados a.k.a. hooks.

El siguiente script está ampliamente comentado y debería explicarse por sí mismo.

Es posible que tu Mac no tenga este script ( $ ls /etc/ppp ). En ese caso, créelo ( $ sudo touch /etc/ppp/ip-up ) con e x permisos imputables ( $ sudo chmod +x /etc/ppp/ip-up ).

#!/bin/sh
#
# This script is run by the pppd after the link is established.
# It should be used to add routes, set IP address, etc.
#
# Tested with Mavericks (Mac OS X 10.9)
#
# This script is called with the following arguments:
# Arg   Name            Example
# $0    Script full location    /etc/ppp/ip-up
# $1    Interface name      ppp0
# $2    TTY device      <blank>
# $3    Speed           0
# $4    Local IP address    10.0.0.200
# $5    Remote IP address   10.0.0.1
# $6    LAN gateway     192.168.0.1
# source for $1-$6 is $ man -P 'less -p "    /etc/ppp/ip-up"' pppd

# ppp.log for non english systems do still have an english timestamp
export LC_TIME="C";

# Note: there is no static assignment for ppp0 to PPTP and ppp1 to L2TP
#       therefore $1 isn't useful to differentiate VPN networks

# To debug, uncomment the line below
#echo "$(date +%c) : \=$5" >> /var/log/ppp.log

# Add your routing table corrections here
# note: 2>&1 will redirect errors to the standard output
case "$5" in
10.0.0.1) OUT=$(exec /sbin/route -n add -net 10.0.0.0/24 -interface "$1" 2>&1) ;;
10.0.1.1) OUT=$(exec /sbin/route -n add -net 10.0.1.0/24 -interface "$1" 2>&1) ;;
esac

# If standard output is not empty, log it prepended by a timestamp
[ ! -z "$OUT" ] && echo "$(date +%c) : $OUT" >>/var/log/ppp.log

# There is automatic route removal on ppp disconnect.
# So no need to manually remove the above route(s) in /etc/ppp/ip-down

Gracias por la idea de jalbrecht2000 en enlace

    
respondido por el Pro Backup 10.04.2016 - 00:02

Lea otras preguntas en las etiquetas