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

Ustawienia TCP/IP interfejsu głównego

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

Mostek sieciowy

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

Poprawne ustawienia TCP/IP

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

Logi serwera OpenVPN







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

Mostek Sieciowy

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

Ustawienia TCP/IP

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
remote  1194
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