VPN - Virtual Private Networking

Publié le par cagliostro

Siedząc wczoraj w pracy miałem sporo czasu wolnego ( problem który dostałem udało mi się rozwiązać dużo przed czasem), w związku z czym zacząłem szperać w internecie. Jako, że połączenie do naszej farmy serwerów odbywa się za pomocą VPN, postanowiłem zgłębić ten temat. Wcześniej używałem tej technologii kilkukrotnie, jednak nigdy nie dowiedziałem się więcej niż ogólny schemat działania.
Pierwszym miejscem do którego trafiłem była strona projektu OpenVPN : http://openvpn.org
Za jej pomocą trafiłem na bardzo przydatny artykuł: http://www.sans.org/rr/whitepapers/vpns/1459.php
oraz prezentację : http://openvpn.org/papers/BLUG-talk/
Opisują one różnice pomiędzy poszczególnymi rodzajami sieci VPN ( IPSec oraz implementacjami przestrzenii użytkownika), strategie kryptograficzne stosowane przy drugim podejściu ( implementowanym przez projekt openVPN),różnice pomiędzy połączeniami mostowymi i routowanymi itp...
Czytając powyższe teksty wpadłem na pomysł, że wygodnie było by mieć skonfigurowane połączenie VPN z moją siecią domową. Bardzo często potrzebuję komunikować się z komputerami mojego brata albo mamy ( Mieszkam stosunkowo daleko od nich i podróż 1000 km aby zainstalować program byłą by mało opłacalna ;) ) i wygodniej było by mieć bezpośrednie połączenie bez konieczności przechodzenia firewalla. Również oni mogli by bezpośrednio widzieć moje foldery współdzielone przez SMB. Postanowiłem więc skonfigurować openVPN na moim serwerze oraz laptopie.
Obie maszyny działają pod kontrolą najnowszego testowego Debiana ( obecnie tuż przed wydaniem Lenny'ego... tak, wiem, że na serwerach nie powinno instalować się testowych dystrybucji, ale ten służy głównie do moich eksperymentów i nie jest to w żaden sposób istotna maszyna produkcyjna. Dlatego istotne jest abym miał dostęp do świeżego oprogramowania).

Dobry i bardzo zwięzły opis instalacji i konfiguracji  znalazłem na http://openvpn.net/wiki/Bridged_Mode_OpenVPN_Server_on_Debian_HOWTO (obecnie jest niedostępne więc nie mogę zmodyfikować WIKI, dlatego kilka swoich uwag napiszę tutaj.... kopia jest dostępna pod adresem http://64.233.183.104/search?q=cache:jU7NvEE8ltUJ:vickeryj.freeshell.org/notes/open_vpn_howto.htm+Bridged_Mode_OpenVPN_Server_on_Debian_HOWTO&hl=en&ct=clnk&cd=1&client=iceweasel-a ).

Topologia mojej sieci wygląda następująco:

Moim celem było, aby mój komputer znajdujący się daleko od sieci domowej widoczny był pod adresem z sieci lokalnej oraz, aby komputery z sieci lokalnej widziały go podobnie.
Powyższy artykuł całkiem nieźle opisywał, jak należy przejść przez cały proces... w związku z tym nie mam zamiaru przepisywać go. Jeste jednak kilka uwag, które mogą się przydać każdemu, kto będzie chciał dokonać czegoś podobnego w przyszłości.

Uwagi do opisu konfiguracji przedstawionego w powyższym artykule:

1) (!!!) Konfiguracja opisana w artykule nie działa bez modyfikacji na komputerze będącym routerem. Przed uruchomieniem skryptu openvpn-bridge Należy koniecznie wykomentować z niego wszytki linie dotyczące bramy ! (Właśnie ten komputer jest bramą ! ... linii powinno być dokłądnie 3: konfiguracja, ustawienie bramy, przywrócenie poprzedniej bramy). Jeżeli konfigurujemy serwer zdalnie i nie zrobimy tego, możemy stracić możliwość komunikacji z nim i konieczne będzie poproszenie kogoś będącego na miejscy aby przywrócił poprawne ustawienia routingu albo zrestartował maszynę.

2) Po pierwszym nawiązaniu połączenia VPN (tym testowym) na komputerze będącym klientem zostaje automatycznie ustawiony interfejs sieciowy tun0 oraz tablice routingu. Na serwerze nie są one ustawiane, co jest całkowicie naturalne !!! W powyższym tekście nie jest to wspomniane, co może prowadzić do zamieszania i wątpliwości. Interfejsy są poprawnie ustawiane dopiero przy uruchamianiu skryptu openvpn-bridge.

3) Należy uważać na ustawienia czasu. Na moim serwerze czas był przesunięty z tajemniczych powodów o kilka godzin do przodu. Ma to znaczenie przy generowaniu kluczy SSL ( terminy ważności). W efekcie zanim przestawiłem czas oraz wygenerowałem klucze ponownie, połączenie nie było nawiązywane ponieważ certyfikat nie był jeszcze ważny

4) Uwaga na ustawienia firewalla. Jeśli nie będzie odpowiedniego wpisu dla iptables, pomimo, że wszystkie kroki zostaną wykonane  poprawnie, nie będzie możliwe routowanie pomiędzy hostami w różnych częściach mostowanej sieci ! W przypadku zwykłej maskarady przy użyciu ipmasq wystarczy wywołać polecenie
/etc/init.d/ipmasq restart
Po uruchomieniu koputera wszystko powinno domyślnie działać pod warunkiem, że kolejność uruchamiania skryptów jest poprawna ! ( interfejsy sieciowe oraz most powinny być ustawiane przed włączaniem maskarady)


Obecnie wszystko zdaje się działać poprawnie. Mój komputer sam ustawia sobie połączenie po uruchomieniu systemu oraz dostaje numer ip z puli ustawionej w konfiguracji serwera. Dodałem wpisy w /etc/hosts dla maszyn z sieci lokalnej i poza wolniejszym transferem ( routowanie przez internet i enkapsulacja w pakietach UDP) nie widzę żadnej różnicy w dostępie do sieci. Czekam aż moja rodzina wróci do domu i okaże się, czy nie zepsułem żadnych ustawień mogących odciąć im dostęp do internetu/sieci lokalnej

Uwagi końcowe


1) Potencjalnie można by wykorzystać VPN do ukrywania swojego ruchu sieciowego przed providerem ... można by ustawić domyślną bramę po drugiej stronie tunelu. Oczywiście przenosi to problem na inną stronę a nie likwiduję go. Trzeba tylko pamiętać o ustawieniu ręcznie tablicy routingu do serwera do którego łączymy się przez VPN

2)  Po raz pierwszy miałem do czynienia z infrastrukturą dotyczącą mostów sieciowych pod linuksem.... i jestem bardzo mile zaskoczony. Narzędzia są łatwe w obsłudze a cały proces niezwykle logiczny. W ciągu kilku minut byłem w stanie nauczyć się o co w tym wszystkim chodzi.

3) Artykuły wymienione na początku tego tekstu stanowią znakomite wprowadzenie do zagadnień związnych z kryptografią. Wymagana jest chyba tylko znajomoś podpisywania/szyfrowania za pomocą asymetrycznej pary kluczy.

4) OpenVPN jest ciekawym projektem pozwalającym na ustawienie sieci w szybki i względnie bezproblemowy sposób. Pomimo, że podążałem za prostymi instrukcjiami dotyczącymi konfiguracji, wszystkie kroki były zrozumiałe i nie miał bym większych problemów ze zmodyfikowaniem ustawień aby rozwiązywały inny problem. Myślę, że większość osób powinna mieć podobne odczucia.

Publié dans Komputery

Commenter cet article