Voglio connettere diverse LAN situate su edifici remoti.
Il sito "centrale" ha un computer Linux che esegue OpenVPN. Ogni sito remoto esegue anche OpenVPN.
- il sito centrale ha una LAN numerata 192.168.0.0/24
- numerosi siti remoti sono anche numerati 192.168.0.0/24
- Non posso / non voglio / non voglio / comunque modificare la numerazione LAN
- Non ho controllo sulla maggior parte degli OpenVPN remoti
Devo quindi:
1. definire le LAN virtuali
2. configurare un NAT 1: 1 per ciascun sito
3. il NAT 1: 1 deve essere configurato sul router centrale
.
Quindi ogni sito ha una LAN 10.10.x.0 / 24.
Quando un computer vuole raggiungere, ad esempio, 192.168.0.44 sul sito 12, deve solo inviare un paquet al 10.10.12.44
Gestire una VPN non è un problema per me. Attualmente collego oltre 60 siti. Ma non trovo un modo semplice per fare questo NAT 1: 1.
Ecco un esempio di un pacchetto inviato dal sito centrale a un sito remoto e il suo pacchetto di risposta:
Ho fatto alcuni test con iptables NETMAP ma non riesco a farlo funzionare perché non trovo un modo per modificare sorgente + destinazione dopo la decisione di routing.
Preferisco evitare la nuova --client-nat
funzionalità di OpenVPN.
Forse devo forzare il routing con ip route
? O eseguire il looping doppio nello stack di rete con veth
?
Nota: non voglio usare il travestimento. Solo 1/1 NAT.
EDIT:
non è possibile con una normale configurazione openVPN. Perché un pacchetto da un sito remoto è indistinguibile da un pacchetto da un altro sito: entrambi hanno indirizzi di origine e destinazione simili ed entrambi provengono dalla stessa interfaccia tun (o tap). Quindi non è possibile effettuare il source-NAT.
Soluzione 1: eseguire il NAT sui siti remoti. Non è possibile nel mio caso. Devo farlo solo sul sito centrale.
Soluzione 2: imposta una VPN per ciascun sito remoto. Quindi avrò un tun per ciascuno. Penso che questo possa essere ok. Non molto efficiente in termini di memoria ma ok.
Soluzione 3: imposta un tunnel (non crittografato) all'interno della VPN per ciascun sito. Ciò fornirà un'interfaccia per ciascuno. I tunnel semplici non sono multipiattaforma (per la mia conoscenza). Ad esempio GRE o ipip o sit sono ok per Linux, ma alcuni siti distanti eseguono solo un computer Windows, quindi openVPN è installato su di esso. Così impossibile installare un semplice tunnel. Un'altra opzione è quella di utilizzare un tunnel più complicato (quale?) Ma l'overhead sul sistema e sul sysadmin potrebbe essere più grande di avere più VPN
Soluzione 4: compilare l'ultimo openVPN, perché include una funzionalità NAT 1: 1. Lo provo questa settimana.