onoedigt » OpenVPN i Tomato - łączenie dwóch odległych sieci sieci

OpenVPN i Tomato - łączenie dwóch odległych sieci sieci

December 27th, 2011
Po kilku dniach walk z 2 routerami i OpenVPN udało się mi w końcu połączyć dwie sieci LAN. Może jeszcze nie jest to idealne rozwiązanie, ale najważniejsze, że działa stabilnie i według postawionych założeń. Ponieważ konfiguracja zajęła mi kilka dni (mimo że nie jest to skomplikowane musiałem przekopać się przez kilka stron wyników wyszukiwania w Google'u) dlatego postanowiłem napisać krótki tutorial, który zaoszczędzi następnym, nie mającym nic ciekawszego do roboty, osobom trochę czasuWstępPewnego pięknego dnia zachciało się mi skonfigurować OpenVPN na moim routerze z Tomato. Najważniejsze dla mnie było to, aby osoba podpięta przez tunel miała bezproblemowy dostęp do zasobów sieciowych (zasoby Windows, HomeGroup, drukarki). OpenVPN umożliwia dwa tryby - routed mode (poprzez interfejs tun) oraz bridged mode (interfejs tap). Konfiguracja zajęła nie więcej niż 30 minut i od tej pory mogłem z dowolnego miejsca podpiąć się do mojej sieci domowej poprzez OpenVPN. Wtedy zaświtał mi diabelski plan - a po co niby mam kazać mojemu tacie łączyć się poprzez OpenVPN jeśli mogę tak skonfigurować jego sieć, aby sama łączyła się z moją i wszystko działało w tle? No i zaczęło się ;-)Założenia i wymaganiaMamy dwie sieci LAN, które chcemy połączyć w jedną. W moim przypadku "sieć matka" znajduje się w Krakowie, "sieć córka" w Tarnobrzegu.Dwa routery z Tomato na pokładzie (z obsługą OpenVPN). Oczywiście można użyć innego firmware, ale sam używałem pomidorka więc i tutorial będzie jemu poświęconyTrochę czasuNasza "sieć matka" musi mieć publiczne IP.KonfiguracjaNa początek musimy wygenerować klucze dla naszego serwera OpenVPN oraz klienta. W tym miejscu odsyłam do HOWTO, w którym jest napisane jak to zrobić. Kiedy mamy już wygenerowane klucze warto podpicować trochę konfigurację Tomato. A przede wszystkim adresację naszej sieci. Warto zmienić poczciwe 192.168.1.0/24 na coś innego. Istnieje wysokie prawdopodobieństwo, że sieć z jakiej podłączamy się do naszej ma taką adresację co może spowodować pewne problemy. Dlatego warto zmienić na np: 10.65.2.0/24, lub inną według własnego uznania ;-). Oprócz tego powinniśmy skonfigurować sobie DDNS (zakładka Basic w Tomato)Teraz pora zająć się naszym OpenVPN. W moim przypadku działa on na routerze Linksys E4200. Poniższy filmik przedstawia konfigurację serwera OpenVPN. Jednak my wprowadzimy w nim kilka modyfikacjiW moim przypadku konfiguracja wygląda następująco:Najważniejsze, aby w zakładce Basic w Client address pool ustawić zakres adresów, który obejmuje naszą sieć matkę oraz sieć córkę. Nie wiem czemu, ale bez tego nam to wszystko nie zadziałała. Oprócz tego w zakładce Advanced musimy zaznaczyć checkboksy przy Manage Client-Specific Options oraz Allow ClientClient. Następnie zapisujemy zmiany.W ustawieniach routera, który będzie pełnić rolę serwera OpenVPN musimy także dodać kilka wpisów do firewalla. W Tomato w zakładce Administration -> Scripts -> Firewall dopisujemy (nazwy interfejsów należy zmienić tak, aby pasowały dla konfiguracji naszego routera):iptables -I FORWARD -i br0 -o tap21 -j ACCEPTiptables -I FORWARD -i tap21 -o br0 -j ACCEPTW tej chwili nasz serwer jest już w 100% gotowy. Możemy to sprawdzić łącząc się z jakiegoś komputera spoza naszej sieci. Pozostaje nam już tylko jedna rzecz - nasz klient.Zakładam, że już posiadacie wygenerowane klucze dla klienta, jeśli nie to pora je wygenerować. Oprócz tego musimy zmienić adresację sieci. W naszej "sieci matce" ustawiłem IP routera na 10.89.9.1, a DHCP na zakres 10.89.9.2 - 10.89.9.51. W "sieci córce" ustawiłem adres routera na 10.89.9.200, a zakres DHCP na 10.89.9.201 - 10.89.9.220. Jak widać obie sieci mają tę samą adresację tylko inną pulę adresów.A sama konfiguracja klienta wygląda następująco:Jak już skończymy konfigurację pozostaje nam tylko odpalić klienta i upewnić się, że wszystko działa. To wszystko ;-)PodsumowanieJak widać konfiguracja OpenVPN nie jest specjalnie skomplikowana. Co prawda bridge mode jest trochę bardziej upierdliwy od routed mode (w drugim przypadku nie musimy przejmować się adresacją w naszych 2 sieciach, mogą nawet mieć całkowicie różną co ułatwia administrowanie). Jednak w moim przypadku, przy nie dużej liczbie urządzeń bridge-mode okazał się idealny szczególnie, że chciałem, aby bez problemu działała windowsowa grupa domowa, network discovery itd.