Tunel VPN P2P
Ostatnia zmiana: 2019-08-21 18:48

Metod tworzenia tuneli jest bardzo dużo, można dzięki nim tworzyć bardzo ciekawe konfiguracje sieci - można by tu wymienić OpenVPN, WireGuard, tinc czy zwykły ssh. Jednym z projektów jest n2n - program pozwalający na tworzenie tuneli VPN wykorzystując metodę Peer-to-Peer.

Aby uruchomić tunel potrzebujemy dwóch elementów: serwera (zwanego tutaj supernode), z publicznym adresem IP oraz klientów (zwanych tutaj edge) którzy będą się łączyć do supernode. Czym więc to się różni np. od OpenVPN? O ile OpenVPN wymaga serwera z odpowiednią konfiguracją, o tyle supernode wystarczy uruchomić na adresie publicznie dostępnym w sieci. Supernode nie wymaga konfiguracji czy haseł, działa tylko jako przekaźnik dla połączonych klientów.

Instalacja

Pakiet obecnie dostępny jest tylko w moim repozytorium:


    # opkg update
    # opkg install n2n-v2

Jeżeli chcemy także uruchomić supernode:


    # opkg install n2n-v2-supernode

Konfiguracja klienta (edge)

Zawarta jest w pliku /etc/config/n2n. Do działania wymagane jest określenie kilku parametrów:
- adres IP. Musi być unikalny dla każdego edge. Można także wykorzystać dhcp, ale nie jest to przedmiotem tego opracowania. Domyślna maska - 255.255.255.0:


    # uci set n2n.@edge[0].ipaddr=1.2.3.4

Pamiętajmy: każdy węzeł powinien mieć unikalny adres.
- adres IP i port supernode. Należy tu podać adres własnego serwera lub wykorzystać jeden z publicznie dostępnych w internecie:

 
    # uci set n2n.@edge[0].supernode=88.86.108.50
    # uci set n2n.@edge[0].port=86

- tzw. community, czyli nazwa naszej sieci VPN. To jeden z elementów oznaczających nasz VPN, musi być taki sam dla wszystkich węzłów:


    # uci set n2n.@edge[0].community=nazwa_sieci

- hasło, dzięki któremu węzły mogą się ze sobą komunikować


    # uci set n2n.@edge[0].key=tajne_haslo

- routing, domyślnie nie zmieniamy tablic routingu


    # uci set n2n.@edge[0].route=0

Zapisujmy wszystko


    # uci commit n2n

Uruchomienie



    # /etc/init.d/n2n enable
    # /etc/init.d/n2n start

Powinien pojawić się nowy interfejs o nazwie edge0 (można to sprawdzić poleceniem ifconfig), natomiast w logach (logread) powinna być informacja o nawiązaniu połączenia z supernode.

Testy połączenia

Zakładamy że dysponujemy routerem z Gargoyle, z modemem LTE (a więc za natem), na którym zainstalowaliśmy i uruchomiliśmy n2n. Aby dostać się do zasobów Gargoyle wystarczy zainstalować n2n na innym komputerze podając inny adres z tej samej klasy, czyli nadajemy adres np. 1.2.3.5 i wystarczy wydać standardowe polecenie np.


    $ ssh root@1.2.3.4

lub w przeglądarce wpisać po prostu http://1.2.3.4

Na komputerze z Linuksem można uruchomić demon poleceniem


    # edge -a 1.2.3.5 -c nazwa_sieci -k tajne_haslo -l 88.86.108.50:86

Dla klientów Windows można zainstalować odpowiedni program dostępny pod tym adresem.

Zakończenie

N2N jest bardzo prostym i skutecznym programem. Nie zajmuje wiele zasobów i pamięci, więc można go powszechnie stosować na routerach.

Na ten ciekawy program uwagę zwrócił Tomasz Szelejewski, za co bardzo dziękuję.