venerdì 4 aprile 2014

Split Tunneling + VPN + VMware (Windows, Mac OS X, Linux)

Mi è capitata l'esigenza di monitorare intere classi di apparati tramite VPN (in questo caso erano Cisco, ma è indifferente).
Purtroppo il router aziendale non supportava il Cisco Client, in quanto si trattava di una customizzazione di linux in cui il client vpnc si rifiutava di funzionare, ma forse il problema era il concentratore, antichissimo e in gestione a terzi. Per farla breve, l'unico apparato in grado di connettersi era una macchina Windows con a bordo XP o 2003 Server, tramite l'ordinario Cisco VPN Client o addirittura il VPN client integrato. Questo però mi impediva di svolgere operazioni che potevo compiere solo tramite server linux, ma ho trovato la soluzione forzando il 2003 Server (o XP... non avrebbe fatto differenza) a fare da gateway a una pletora di macchine virtuali linux.
192.168.101.0 è la LAN dell'ufficio
192.168.101.1 è il router di connettività
192.168.101.19 è il server WIndows 2003 Server che useremo come gateway VPN per via di RAM e CPU abbondanti (serve a ospitare le virtual machines)
VMware VIRTUAL MACHINE (NO PLAYER, es. VMware Workstation, Fusion, etc)
VMware Player non permette di editare il Virtual Networking, quindi non è adatto.
Concettualmente il VPN client di Microsoft permette di fare da gateway di connessione, sia per le VM ospitate al suo interno (VMware Workstation, Fusion ed altri futuri paritetici), ma anche per tutte le macchine della LAN.

WINDOWS CON CLIENT VPN E VMWARE WORKSTATION GIA' INSTALLATO
START / ESEGUI / regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\Bind sposta in alto \Device\NdisWanIp riavvia
Connessione VPN / Proprietà / Rete / TCPIP / Proprietà:
  • DNS server remoto (es. 10.0.0.101)
  • Avanzate lascia flag gateway predefinito
Connessione VPN / Proprietà / Avanzate:
  • consenti ad altri utenti
  • scegli VMnet8 (è l'interfaccia di NAT di VMware)
  • il sistema automaticamente imposta VMnet8 a 192.168.0.1, se è un secondo gateway (es. ridondante) metti un indirizzo diverso es. 192.168.0.2
Connetti la VPN e controlla quale indirizzo abbia il gateway, es.172.16.1.1.
VMware Workstation / Edit / Virtual Network Editor, sostituisci VMnet8 "Use local DHCP" il default 192.168.137.0 con 192.168.0.0.
START / ESEGUI / cmd
  • route print (in basso non ci sono rotte statiche)
  • route -p add 172.16.0.0 mask 255.255.0.0 172.16.1.1 metric 1
  • (route -p sta per "persistent", cioè statica, si conserva al riavvio)
  • ping 10.0.0.101 e anche ping google.it
  • se non pinga google:
    • route delete 0.0.0.0
    • route add 0.0.0.0 mask 0.0.0.0 192.168.1001.1 metric 0
LINUX NELLA VM (usa la classe della VMnet8)
Le Virtual Machines devono avere 2 interfacce di rete (/etc/network/interfaces): eth0 è su VMnet8, eth1 invece in è bridge su VMnet1

sudo -i
nano /etc/networking/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

#QUESTA E' LA LAN TRA MACCHINE VMWARE
auto eth0
iface eth0 inet static
   address 192.168.0.20
   netmask 255.255.255.0
   gateway 192.168.0.1
   dns-nameservers 10.0.0.101 10.0.0.102

#ATTENZIONE! QUESTA E' LA LAN ORDINARIA DELLE MACCHINE DELL'UFFICIO
auto eth1
iface eth1 inet static
   address 192.168.101.20
   netmask 255.255.255.0
   gateway 192.168.101.1
   dns-nameservers 192.168.101.1 208.67.222.222


/etc/init.d/networking restart

Considerati alcuni problemi di rotte di default (0.0.0.0 / 0) che ritornano, preferisco fare un cronjob di questo tipo:

# m h  dom mon dow   command
*/1 * * * * /home/conf/network_fab.sh

#!/bin/bash
sudo /sbin/route del -net 10.0.0.0/8 gw 192.168.0.1 dev eth0
sudo /sbin/route del -net 172.16.0.0/12 gw 192.168.0.1 dev eth0
sudo /sbin/route add -net 10.0.0.0/8 gw 192.168.0.1 dev eth0
sudo /sbin/route add -net 172.16.0.0/12 gw 192.168.0.1 dev eth0
sudo /sbin/route delete default dev eth0

e ci puoi infilare tutte le reti raggiungibili dal gateway remoto che ora raggiungi via VPN

OSX (ricorda di usare l'IP di Windows nella LAN come gateway)
sudo route -n add 10.0.0.0/8 192.168.101.19
sudo route -n add 172.16.0.0/12 192.168.101.19
Windows XP e 2003 (ricorda di usare l'IP di Windows nella LAN come gateway)

route -p add 10.0.0.0 mask 255.0.0.0 192.168.101.19 metric 1
route -p add 172.16.0.0 mask 255.255.0.0 192.168.101.19 metric 1

Nessun commento:

Posta un commento