PO CO TO WSZYSTKO? PO CO OPENVPN?
Wiele gier lanowych działa na zasadzie broadcastów UDP - pakietów, które nie przechodzą przez internet czy zwykłe tunele VPN (np. pptp) albo trzeba się zdrowo napocić, aby przechodziły (o ile to możliwe).
Symptom jest taki, że mimo zestawionego połączenia w grze nie widać gry założonej po drugiej stronie - a jeżeli nie da się wpisać konkretnego IP (jakaś taka dziwna moda teraz panuje...) to już kaplica - po prostu w tzw. lobby nie zobaczymy żadnej gry.
Można sobie z tym poradzić instalując dodatkowe oprogramowanie, jak np. hamachi - ale ma to swoje minusy. Po pierwsze - zdaża się, że serwery hamachi są przeciążone i nie można wtedy korzystać z ich sieci. Po drugie - jeżeli zostanie wykryty błąd w hamachi, może się okazać, że ktoś zdobędzie nieautoryzowany dostęp do naszych danych. Po trzecie - teoretycznie dane które przesyłamy mogą być składowane lub logowane gdzieś w internecie na serwerach hamachi - my tego nie wiemy.
OpenVPN jest darmowym oprogramowaniem o otwartym kodzie (opensource) dostępnym na różne systemy operacyjne, co nie gwarantuje, ale bardzo podnosi poziom bezpieczeństwa. Jest to połączenie punkt-punkt (a w zasadzie coś o architekturze gwiazdy z jednym punktem centralnym - serwerem OpenVPN, oraz połączonymi z nimi klientami OpenVPN) więc nie ma obawy, że dane są gdzieś logowane. I nie jesteśmy uzależnieni od żadnego kolejnego dostawcy (poza tym, od którego mamy łącze).
Poniżej znajduje się w miarę dokładna instrukcja, jak za pomocą OpenVPN stworzyć tunel, dzięki któremu będziemy mogli pograć w LANie poprzez internet :-)
Nie jest on tak prosty, jak instalacja hamachi, ale cóż - chcemy być niezależni - musimy trochę pocierpieć :-)
Poradnik testowany na Windows XP - z Vistą bywają niestety problemy, acz w pewnym zakresie da się to skonfigurować
SERWER OPENVPN
Na wstępie należy spisać dotychczasowe ustawienia IP naszej karty sieciowej - będą nam jeszcze potrzebne :-)
Sprawdzisz je w panelu sterowania, we właściwościach głównego interfejsu sieciowego -> właściwościach TCP/IP.
Przykład tego co zobaczymy poniżej
Trzeba też się przygotować na krótką utratę połączenia sieciowego - więc miej otwartą przeglądarkę z poniższą instrukcją.
Ściągnij i zainstaluj paczkę - dla systemu Windowsa ze strony http://openvpn.se/download.html - paczkę openvpn-2.0.9-gui-1.0.3-install.exe (lub nowszą).
Dla innych systemów ze strony http://www.openvpn.net/index.php/access-server/download-openvpn-as.html (ale wtedy poniższy poradnik można traktować jako wskazówki - jest stworzony dla Windowsa)
Po instalacji pojawi sie nowy interfejs sieciowy TAP. Nastepnym krokiem jest stworzenie mostka sieciowego.
W ustawieniach sieciowych tworzymy mostek z interfejsu sieciowego TAP oraz lokalnego
Następnie - właściwości mostka sieciowego -> właściwości protokołu TCP/IP i przywracamy poprzednie ustawienia IP.
Potem w "Zaawansowane" dodajemy IP, który dedykujemy VPNowi. Powinno to wyglądać mniej więcej tak jak poniżej
Od tej pory powinna wrócić łączność sieciowa - jeżeli tak się nie stało, usuń mostek sieciowy, przywróć poprzednie ustawienia tcp/ip dla interfejsu sieciowegi i znajdź inny poradnik ;-)
Jeżeli twój pecet nie ma publicznego IP (nie jest pingowalny z internetu) należy przekierować port UDP 1194 na twojego peceta. Jak? To już musisz sam znaleźć, bo zależy od routera/serwera.
No i teraz dopiero zaczyna się prawdziwa zabawa...
Zakładam, że zainstalowałeś OpenVPN w C:\Program Files\OpenVPN\
Stwórz katalog C:\Program Files\OpenVPN\easy-rsa\keys\
Uruchamiamy konsolę (start -> uruchom -> wpisujemy cmd i enter) i następne skrypty uruchamiamy przeciągając skrypty na okno cmd.exe i uruchamiające je tam.
Najpierw rozszerzamy ścieżkę poleceń wykonywalnych, wpisujemy
set PATH=%PATH%;c:\program files\openvpn\bin
Następnie przechodzimy do ścieżki C:\Program Files\OpenVPN\easy-rsa\ i przenosimy na okno cmd skrypt init-config.bat i uruchamiamy.
Kolejny skrypt który tak uruchamiamy to vars.bat, potem clean-all.bat i build-dh.bat
Teraz uruchamiamy skrypt build-ca.bat i albo udzielamy odpowiedzi na kolejne pytania, albo wszędzie wciskamy enter i uznajemy, że domyślne są OK - nie jest to specjalnie istotne, ważne aby później na klientach udzielić takich samych odpowiedzi, więc domyślne nie są złe.
Kolejnym skryptem jest build-key-server.bat ale z parametrem client, czyli w oknie cmd.exe powinno być C:\cośtam>"C:\Program Files\OpenVPN\easy-rsa\build-key-server.bat" client
Tutaj generalnie udzielamy takich samych odpowiedzi jak wcześniej, przy czym w polu "Common name" wpisujemy nazwe serwera - na przykład serwer.vpn
Reszta może być domyślna. Na ostatnie dwa pytania odpowiadamy pozytywnie (będzie wybór y/n - chcemy podpisać certyfikat).
Kopiujemy pliki ca.crt client.crt client.key dh1024.pem do katalogu C:\Program Files\OpenVPN\config\ oraz tworzymy w tym katalogu plik server.ovpn z zawartością
mode server proto udp port 1194 dev tap0 # VPN Server Subnetmask Start-IP End-IP server-bridge 10.10.10.2 255.255.255.0 10.10.10.50 10.10.10.100 keepalive 10 120 verb 3 comp-lzo client-to-client dh dh1024.pem ca ca.crt cert client.crt key client.key
Dobra - od strony serwera to prawie tyle - uruchamiamy OpenVPN-GUI (jeżeli nie był uruchomiony), klikamy prawym przyciskiem myszy w tray'u na ikonce OpenVPN i wybieramy "Connect" - powinniśmy zobaczyć coś podobnego jak poniżej
KLIENT OPENVPN
Zaczynamy od instalacji OpenVPN-GUI jak w przypadku serwera, potem ponownie spisujemy aktualne ustawienia sieciowe.
Jeżeli komputer nie ma publicznego IP, także trzeba przekierować port UDP 1194 na prywatny IP (klienta) - ewentualnie otworzyć ten port na firewallu.
W ustawieniach sieciowych tworzymy mostek z interfejsu sieciowego TAP oraz lokalnego
Następnie - właściwości mostka sieciowego -> właściwości protokołu TCP/IP i przywracamy poprzednie ustawienia IP (podobnie jak na serwerze).
Potem w "Zaawansowane" dodajemy IP, który dedykujemy VPNowi. Powinno to wyglądać mniej więcej tak jak poniżej
Od tej pory powinna wrócić łączność sieciowa - jeżeli tak się nie stało, usuń mostek sieciowy, przywróć poprzednie ustawienia tcp/ip dla interfejsu sieciowegi i znajdź inny poradnik ;-)
Tworzymy katalog C:\Program Files\OpenVPN\easy-rsa\keys\
Uruchamiamy konsolę (start -> uruchom -> wpisujemy cmd i enter) i następne skrypty uruchamiamy przeciągając skrypty na okno cmd.exe i uruchamiające je tam. Jeżeli na Windowsie Vista wywali wam komunikat o braku uprawnień, nadajcie je dla katalogu easy-rsa. Jakie? Nie wiem, ja dałem wszystkie na czas instalacji ;-)
Najpierw rozszerzamy ścieżkę poleceń wykonywalnych, wpisujemy
set PATH=%PATH%;c:\program files\openvpn\bin
Następnie przechodzimy do ścieżki C:\Program Files\OpenVPN\easy-rsa\ i przenosimy na okno cmd skrypt init-config.bat i uruchamiamy.
Kolejny skrypt który tak uruchamiamy to vars.bat, potem clean-all.bat
Kolejnym skryptem jest build-ca.bat
Odpowiedzi analogiczne jak przy serwerze, i ważne - odpowiedzi muszą być takie, jak przy generowaniu CA na serwerze.
Teraz pora na build-key.bat z parametrem client (podobnie jak przy serwerze, ale tutaj jest inny skrypt), czyli w oknie cmd.exe powinno być C:\cośtam>"C:\Program Files\OpenVPN\easy-rsa\build-key-server.bat" client
UWAGA - pamiętaj o parametrze "client" do wykonania polecenia :-) Jeżeli nie wiesz o co chodzi - popatrz do części serwerowej - w innym przypadku uzyskasz pliki .crt .key oraz .csr
W pytaniu o "Common name" podajemy nazwę hosta, np. klient1.vpn, klient2.vpn etc
Kopiujemy z katalogu C:\Program Files\OpenVPN\easy-rsa\keys\ plik client.key do katalogu C:\Program Files\OpenVPN\config\. Jeżeli nie masz tego pliku a masz .key - nie dodales parametru klient do wywoływanego polecenia.
Teraz stworzony request trzeba podpisać na serwerze - w tym celu przesyłamy plik client.csr na serwer i kopiujemy do ścieżki C:\Program Files\OpenVPN\easy-rsa\keys\
Kolejne czynności wykonujemy na serwerze.
W ścieżce C:\Program Files\OpenVPN\easy-rsa\ tworzymy skrypt sign.bat z poniższą zawartością
@echo off cd %HOME% openssl ca -days 3650 -out %KEY_DIR%\client.crt -in %KEY_DIR%\client.csr -config %KEY_CONFIG%
Jak wcześniej otwieramy konsolę i w starym stylu uruchamiamy skrypt vars.bat a następnie stworzony przed chwilą sign.bat
Potwierdzamy chęć podpisania certyfikatu.
Teraz z serwera z katalogu C:\Program Files\OpenVPN\easy-rsa\keys\ kopiujemy pliki client.crt oraz ca.crt na klienta do katalogu C:\Program Files\OpenVPN\config\
Na kliencie w ścieżce C:\Program Files\OpenVPN\config\ tworzymy plik client.ovpn z poniższą treścią
client dev tap proto udp remote1194 nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3
Już prawie koniec - uruchamiamy OpenVPN-GUI (jeżeli nie był uruchomiony), klikamy prawym przyciskiem myszy w tray'u na ikonce OpenVPN i wybieramy "Connect" - jeżeli pojawi się informacja o połączeniu - sukces :-)
NAJCZĘSTSZE PYTANIA I ODPOWIEDZI
Q: Korzystam z BlueConnecta i nie bardzo jest możliwość stworzenia mostka sieciowego między interfejsem BlueConnecta a TAPem.
A: Jeżeli masz LANową kartę sieciową - nie powinno być problemu. Po prostu użyj jej do mostka sieciowego. W zasadzie to nawet bezpieczenijsza konfiguracja w kontekście dostępu do PCta
Q: Po wygenerowaniu kluczy klienckich nie mam plików client.crt czy client.key - czemu?
A: Nie postępowałeś zgodnie z instrukcją generowania plików - nie dodałeś do polecenia parametru "client"
Q: Jak z tym rozwiązaniem sprawdza się Windows Vista?
A: No więc średnio. Udało się stworzyć wszystko poza działającym mostkiem sieciowym. Tak więc jedynym wyjściem było, aby to na tym komputerze, który ma zainstalowaną Vistę hostować gry. Jakby były dwie Visty - byłby zapewne problem.
Q: A co jeżeli nie mamy stałego IP i nie chcemy cały czas modyfikować konfiguracji OpenVPN?
A: Zawsze można skorzystać z usług takich jak www.dyndns.org
Q: Jest szansa na mniej upierdliwą konfigurację na klientach? Aby nie trzeba było za każdym razem generować kluczy, przesyłać je na serwer i podpisywać?
A: Tak, można tak zrobić. Można raz wygenerować klucz, a potem jedynie dystrybuować jeden zestaw klucza, certyfikatu i certyfikatu CA.
Aby móc z tego skorzystać, do konfiguracji OpenVPN na serwerze trzeba dodać linię
duplicate-cn