Chcę podłączyć kilka sieci LAN znajdujących się na odległych budynkach.
Witryna „centralna” ma komputer z systemem Linux i OpenVPN. Na każdej zdalnej stronie działa również OpenVPN.
- strona centralna ma sieć LAN o numerze 192.168.0.0/24
- kilka zdalnych stron jest również ponumerowanych 192.168.0.0/24
- Nie mogę / nie chcę / nie chcę / cokolwiek modyfikować numeracji LAN
- Nie mam kontroli nad większością zdalnych OpenVPN
Następnie muszę:
1. zdefiniować wirtualne sieci LAN
2. skonfigurować NAT 1: 1 dla każdej witryny
3. NAT 1: 1 należy skonfigurować na centralnym routerze
.
Tak więc każda witryna ma sieć LAN 10.10.x.0 / 24.
Gdy komputer chce dotrzeć, powiedzmy, 192.168.0.44 na stronie 12, wystarczy wysłać paquet na 10.10.12.44
Obsługa VPN nie stanowi dla mnie problemu. Obecnie łączę ponad 60 witryn. Ale nie znajduję prostego sposobu na zrobienie tego NAT 1: 1.
Oto przykład pakietu wysłanego z witryny centralnej do witryny zdalnej i jego pakietu odpowiedzi:
Zrobiłem kilka testów z iptables NETMAP, ale nie mogę sprawić, aby działało, ponieważ nie znajduję sposobu na modyfikację źródła + miejsca docelowego po decyzji o routingu.
Wolę unikać nowej --client-nat
funkcji OpenVPN.
Może muszę wymusić routing ip route
? A może dwukrotnie zapętlić w stos sieciowy veth
?
Uwaga: nie chcę używać maskarady. Tylko 1/1 NAT.
EDYCJA:
Nie jest to możliwe przy regularnej konfiguracji openVPN. Ponieważ pakiet ze zdalnej strony jest nierozróżnialny od pakietu z innej strony: oba mają podobne adresy źródłowe i docelowe, a oba pochodzą z tego samego interfejsu tun (lub tap). Więc nie jest możliwe, aby go pobrać.
Rozwiązanie 1: wykonaj translację NAT na zdalnych stronach. W moim przypadku niemożliwe. Muszę to zrobić tylko na stronie centralnej.
Rozwiązanie 2: skonfiguruj jedną sieć VPN dla każdej zdalnej witryny. Więc mam jeden tun dla każdego. Myślę, że to może być w porządku. Niezbyt wydajna pamięć, ale w porządku.
Rozwiązanie 3: skonfiguruj (niezaszyfrowany) tunel w sieci VPN dla każdej witryny. To da jeden interfejs dla każdego. Proste tunele nie są wieloplatformowe (ku memu knoledge). Na przykład GRE, ipip lub sit są w porządku dla Linuksa, ale na niektórych odległych stronach działa tylko jeden komputer z Windows, więc jest na nim zainstalowany openVPN. Tak niemożliwe jest ustawienie prostego tunelu. Inną opcją jest użycie bardziej skomplikowanego tunelu (który?), Ale narzut w systemie i na sysadminie może być większy niż w przypadku posiadania wielu sieci VPN
Rozwiązanie 4: skompiluj najnowszy openVPN, ponieważ zawiera on funkcję NAT 1: 1. Testuję w tym tygodniu.