Come accedere simultaneamente ai dispositivi IPv4 su 2 diverse reti 10/24 quando si utilizzano 2 connessioni VPN attive?

0

Dopo che un'azienda è stata venduta a parti diverse, si potrebbe finire con una situazione in cui la vecchia rete 10.0.0.0/8 è divisa in due o più reti diverse, come 10.0.0.0/24 e 10.0.1.0/24.

Ora desidero accedere a entrambe le reti contemporaneamente utilizzando il client VPN Mavericks integrato. Una rete VPN è su L2TP, l'altra PPTP.

Tuttavia, è possibile raggiungere solo i dispositivi nella prima connessione VPN stabilita e non i computer nella seconda rete. L'unica eccezione è l'IP remoto (gateway) della connessione VPN n. 2.

Come posso risolvere questo impostare e dimenticare ?

Nota: con imposta e dimentica voglio dire che non voglio avere passaggi aggiuntivi quando "componi" un profilo di connessione VPN già esistente.

    
posta Pro Backup 10.04.2016 - 00:02
fonte

1 risposta

0

Problema di routing

Il problema qui è che entrambi i profili di connessione VPN sono in una rete 10, che ufficialmente ha un /8 a.k.a. 255.0.0.0 a.k.a. 0xff000000 netmask. Quindi, quando si stabiliscono entrambe le connessioni VPN contemporaneamente, si finisce con una sola destinazione nella tabella di instradamento per 10-network . E quella voce di routing indirizzerà tutto il traffico 10.x.x.x alla prima connessione ppp stabilita, eccetto per gli indirizzi IP locali e remoti nella seconda connessione 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

Soluzione di routing

La correzione è di estendere manualmente la tabella di routing con le voci desiderate. Non è necessario rimuovere la voce 10, aggiungere solo nuove voci di percorso. Finché le voci di instradamento appena aggiunte indirizzano una sottorete più piccola, la voce avrà una preferenza. Leggi questo come: quando la sottorete ha un numero maggiore di /X . Ad esempio /24 è maggiore di /8 quindi una voce 10/24 avrà una preferenza su una voce di routing 10/8 . In sostanza aggiungi una nuova voce di routing dopo aver stabilito la seconda connessione VPN, ad esempio: $ sudo /sbin/route -n add -net 10.0.2.0/24 -interface ppp1

Soluzione di automazione

È ingombrante e può introdurre errori quando si deve inserire manualmente il percorso dopo aver stabilito la connessione VPN secondaria. Fortunatamente esiste una soluzione integrata nel demone ppp usando if-up , come puoi leggere in $ man pppd . Ogni volta che viene stabilita una connessione ppp (VPN) che utilizza l'indirizzamento IPv4, viene chiamato uno script ( /etc/ppp/if-up ) in cui è possibile eseguire le regole personalizzate / i comandi a.k.a. hook.

Lo script sotto è ampiamente commentato e dovrebbe essere auto esplicativo.

Il tuo Mac potrebbe non avere questo script ( $ ls /etc/ppp ). In tal caso, crealo ( $ sudo touch /etc/ppp/ip-up ) con e x permessi ecutable ( $ 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

Grazie per l'idea di jalbrecht2000 su link

    
risposta data 10.04.2016 - 00:02
fonte

Leggi altre domande sui tag