Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Raspberry PI jako router 3G/4G

W dzisiejszych czasach coraz popularniejsze są oferty mobilnego Internetu. Często są opłacalne cenowo dla tych, którzy nie ściągają zbyt dużo z sieci. Zwykle nie trzeba nawet podpisywać umowy - niektórzy operatorzy oferują dość korzystne oferty Internetu na kartę. Zresztą, nawet jeśli chcemy Internet na umowę, to czasami opłata miesięczna jest mniejsza, gdy nie będziemy brali urządzenia.

W takim bądź razie, jak będziemy odbierać ten Internet? Rozwiązanie jest proste - musimy niestety zainwestować trochę pieniędzy w modem LTE. Jako router rozdzielający sygnał posłuży nam Raspberry Pi. No to do dzieła!

Najpierw logujemy się przez ssh do naszej pięknej malinki. ssh pi@192.168.1.7 Domyślnym hasłem przy systemie Raspbian jest raspberry, a zamiast 192.168.1.7 podstaw adres IP twojej malinki.

Aby w następnych rozdziałach nie było problemu z instalacją pakietów, przeprowadźmy aktualizację repozytoriów poleceniem: sudo apt-get update

Konfiguracja modemu - usb_modeswitch

Podłącz swój modem do Raspberry. Pierwszym problemem na jaki napotykamy jest to, że modem nie zostanie wykryty jako “modem”, ale jako urządzenie pamięci masowej. Widzimy to na poniższym screenie:
Abyśmy mogli przejść do następnego etapu konfiguracji, w katalogu /dev muszą być obecne pliki /dev/ttyUSBx (gdzie x to jakaś cyfra). Możemy przełączyć nasze urządzenie usb w tryb modemu za pomocą prostego programiku zwanego usb_modeswitch.
Instalujemy usb_modeswitch poleceniem: sudo apt-get install usb-modeswitch Teraz wszystko zależy od tego, jaki modem podłączyliśmy do Raspberry. Zwykle wystarczy wydanie polecenia: sudo usb_modeswitch -v defvendor -p defproduct Gdzie za defvendor podstawilibyśmy w naszym przypadku 12d1, a za defproduct 14fe. (Jeśli nie możesz zaskoczyć, skąd się to wzięło, spójrz na wynik polecenia lsusb na pierwszym screenie).

Niestety, taka metoda nie zadziała z modemami (np.: z moim Huawei E3131 od Play), w takim wypadku musimy trochę poszperać w Internecie, aby znaleźć odpowiednią komendę, albo ewentualnie samemu pobawić się z różnymi przełącznikami polecenia usb_modeswitch. W moim wypadku odpowiednia jest komenda: usb_modeswitch -v 12d1 -p 14fe -V 12d1 -P 1506 -M "55534243123456780000000000000011062000000100000000000000000000"

Wydajmy polecenia lsusb, a potem ls /dev/ttyUSB*. Jak widzimy, teraz urządzenie jest widoczne jako modem, a odpowiednie pliki urządzeń. Możemy więc spokojnie przejść do następnego etapu.

Konfiguracja modemu - wvdial

No dobra, mamy modem, który jest wykrywany jako modem, ale co z tego jak urządzenie to nie wie, jak ma się łączyć i z czym ma się łączyć. Do tego służy program wvdial. Zainstalujmy go teraz poleceniem:sudo apt-get install wvdial

Po zainstalowaniu programu możemy zająć się jego konfiguracją. W tym celu należy otworzyć dowolnym edytorem tekstowym plik /etc/wvdial.conf
Sekcja [Dialer Defaults] odpowiada za działania, które zostaną zrealizowane, gdy uruchomimy program wvdial bez żadnych przełączników. Nie będziemy się nią teraz zajmować. Utwórzmy własną sekcję

[Dialer Orange] Modem = /dev/ttyUSB1 Init3 = AT+CGDCONT=1,"IP","internet" Username = "internet" Password = "internet" Phone = "*99#" Dial Command = ATDTW Stupid Mode = yes Dial Attempts = 0 Aby program skorzystał z nowego dialera, będziemy musieli uruchomić program z odpowiednim przełącznikiem (w moim wypadku: wvdial orange).Program wvdial może działać w tle, więc jeśli nie chcesz uruchamiać nowej sesji ssh, możesz dodać znak & na końcu polecenia. Wtedy program nie zostanie połączony z sesją terminala.

No dobra, ale co ten plik konfiguracyjny właściwie robi? Mogę powiedzieć, że po odpowiednim dostosowaniu jest praktycznie uniwersalny (testowałem z sieciami Play i Orange). Omówmy go linijka po linijce.

  • Modem - czyli po prostu plik urządzenia naszego modemu. Jeśli urządzenie tworzy kilka plików (np.: /dev/ttyUSB0, /dev/ttyUSB1 itd.) to musimy metodą prób i błędów dojść do właściwej konfiguracji :)
  • Init3 - AT - są to polecenia, którymi można komunikować się z modemem. Polecenie, które znajduje się w pliku konfiguracyjnym wysyła do modemu żądanie połączenia się z punktem APN o nazwie “internet”. Jeśli nasz operator stosuje inną nazwę APN, musimy zmienić ten ciąg.
  • Username, Password - dane dostępowe do punktu APN
  • Phone - numer telefonu, do którego modem musi się “wzdzwonić” aby uzyskać dostęp do Internetu. W polskich sieciach *99# jest praktycznie uniwersalny.
  • Dial Command - komenda, której używa modem do nawiązywania połączenia. Zwykle jest to ATDTW, ale możliwe są także inne kombinacje (np.: ATDT).
  • Stupid Mode - ciekawa opcja. Kiedy wvdial jest w “głupim trybie” usługa pppd jest uruchamiana automatycznie tuż po tym, jak modem połączy się z serwerem. Nie są podejmowane próby interpretowania komend wysyłanych przez serwer APN. Przyspiesza to proces łączenia, ale może spowodować problemy w przypadku niektórych ISP.
  • Dial Attempts - liczba prób połączenia, które podejmie wvdial. Kiedy wartość wynosi 0, modem będzie próbował połączyć się do skutku.
  • Auto DNS - nie mam tej opcji w moim przykładzie, ale warto o niej wspomnieć. Domyślnie jej wartość ustawiona jest na “on”. Oznacza to, że modem będzie pobierał adresy serwerów DNS od providera. Jeśli chcemy korzystać z własnoręcznie wybranych serwerów DNS, możemy dodać tę opcję do pliku konfiguracyjnego z wartością “off”.
  • Dobrze, po skonfigurowaniu wvdial.conf wydajemy odpowiednie polecenie do uruchomienia połączenia: np.: wvdial orange.
    Ujrzymy mniej więcej taki widok, jeśli modem połączył się poprawnie:
    Dobrze, malinka ma teraz połączenie z Internetem. Jeśli chcesz, możesz spróbować spingować dowolny serwer. Powinna pojawić się odpowiedź. Jeśli jej nie ma, coś musiałeś zrobić źle.

    Konfiguracja stałego adresu IP

    Malinka będzie służyć za naszą “bramę” do Internetu. Aby tak było, nie może mieć adresu IP przydzielanego dynamicznie. Musimy ustawić statyczny adres IP. Nie jest to trudne zadanie. Sposób konfiguracji zależy jednak od tego, czy na swoim Raspberry masz Raspbian Jessie czy Wheezy. Dla Wheezy procedura będzie następująca: należy edytować plik /etc/network/interfaces.
    Szukamy linijki: iface eth0 inet manual. Zmieniamy w niej słówko manual na static. Przed tą linijką dopisujemy natomiast: auto eth0.
    Przykładowa konfiguracja wygląda tak: auto eth0 Iface eth0 inet static address 192.168.1.50 netmask 255.255.255.0 gateway 10.64.64.64 Teraz omówię te trzy linijki pliku:
    • address - ten ciąg cyfr to adres IP naszej malinki
    • netmask - maska sieci, w której znajduje się Raspberry
    • gateway - nasza brama sieciowa. Adres ten możemy odczytać z wyniku działania polecenia wvdial. Podany jest w linijce: remote IP address. Za pośrednictwem tej sieci nasza malinka będzie łączyć się z Internetem.
    Jeśli mamy Raspbiana Jessie, procedura wygląda trochę inaczej. Edytujemy plik /etc/dhcpcd.conf. Na końcu tego pliku dopisujemy naszą konfigurację w następujący sposób: interface eth0 static ip_address=192.168.1.50/24 static routers=10.64.64.64 Przykład mówi sam za siebie. Najpierw podajemy nazwę interfejsu (po słówku kluczowym interface). W następnej linijce podajemy adres ip z maską. Natomiast w ostatniej bramę sieciową.

    Restartujemy malinkę. Po ponownym uruchomieniu spingowanie dowolnego serwera powinno zakończyć się sukcesem.(Nie zapomnij, że jeszcze nie skonfigurowaliśmy automatycznego uruchamiania wvdial i usb_modeswitch. Więc, po ponownym uruchomieniu musisz uruchomić obydwa wspomniane polecenia), a malinka powinna mieć stały adres IP dokładnie taki, jaki podaliśmy w pliku konfiguracyjnym (możemy to sprawdzić za pomocą polecenia ifconfig).

    Reguły IPTables

    No dobra, mamy połączenie z Internetem na malince, ale co z tego, jak żaden inny komputer póki co nie może z tego połączenia korzystać. Aby to było możliwe, musimy odpowiednio skonfigurować przekazywanie pakietów w IPTables. Ogólnie IPTables to taka linuksowa mocno zaawansowana zapora sieciowa. My również w tym momencie będziemy musieli skorzystać z jej możliwości, aby przekierować pakiety idące na interfejs eth0 do ppp0 i na odwrót. Musimy wydać trzy polecenia: sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sudo iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT Pierwsza linijka pozwala nam na skonfigurowanie tzw. Maskarady. Jest to specjalna odmiana NAT-u. Linijka ta ma jeden główny cel - w naszej sieci lokalnej raczej jest więcej urządzeń niż samo Raspberry Pi. Operator natomiast udostępnia nam tylko jeden adres publiczny. Maskarada zamienia adres źródłowy w pakietach pochodzących z sieci lokalnej na globalny adres IP udostępniony przez operatora. Taka bardziej profesjonalna nazwa tego procesu to “maskowanie”. Gdyby nie wymyślano takiego rozwiązania, każdy komputer musiałby mieć swój unikalny adres publiczny, a wtedy pula adresów IPv4 szybciutko by się wyczerpała.

    Zajmijmy się analizą drugiej linijki. Pierwszy parametr oznacza, że zajmujemy się przekierowaniem pakietu. (routingiem). Kolejne dwa parametry oznaczają kolejno źródłowy interfejs (nasza sieć 3G/4G czyli ppp0) oraz docelowy interfejs (eth0). Parametr m pozwala nam zdefiniować reguły, wg których będziemy wykonywać routing pakietów. W naszym poleceniu jest to wymóg połączenia tzw. RELATED (słówko to oznacza, że otrzymany pakiet tworzy nowe połączenie) lub ESTABLISHED (pakiet jest “powiązany” z istniejącą sesją między klientem a serwerem).

    Poprzednia linijka definiowała reguły ruchu od operatora do nas. Natomiast ostatnia linijka definiuje ruch w przeciwnym kierunku. W tym wypadku należy akceptować wszystkie pakiety (-j ACCEPT).

    IPTables skonfigurowany. Teraz musimy jedynie poinformować jądro systemu, że będziemy przekierowywali pakiety. Można to zrobić jednym prostym poleceniem, które mówi samo za siebie: sudo echo 1 > /proc/sys/net/ipv4/ip_forward

    Skonfigurowaliśmy IPTables. Jeśli nie możesz się doczekać, możesz już teraz przeprowadzić próbę naszego małego routerka. Po prostu na drugim komputerze/tablecie/smartfonie ustaw na razie statyczny adres IP (z tej samej sieci, w której jest malinka), a jako bramę sieciową ustaw Raspberry. Jako serwer DNS możesz użyć tworu firmy Google (8.8.8.8). Internet powinien hulać bez problemu.

    Jednak nie ciesz się za wcześnie :) gdyż to nie jest koniec naszej konfiguracji, ponieważ po restarcie będziemy musieli powtórzyć całą naszą ciężką pracę. Poza tym każdy router domowy sam przydziela adresy IP urządzeniom, zwalniając z tego obowiązku użytkownika. Jest to wygodniejsze niż statyczne przydzielanie adresów. A każdy do wygody się szybko przyzwyczaja ...

    Automatyzujemy wszystkie procesy

    usb_modeswitch

    Zacznijmy po kolei, od usb_modeswitch. Nie musimy tutaj nic robić, gdyż odpowiednie reguły udev’a (dla dociekliwych - zajmuje się m.in. obsługą urządzeń podłączanych za pomocą USB) są tworzone automatycznie. Jak chcesz, możesz to sprawdzić, wyświetlając plik /lib/udev/rules.d/40-usb_modeswitch.rules.

    Wvdial

    Wvdial - naszym celem jest automatyczne uruchamianie tego programu przy starcie systemu. Nasza droga do osiągnięcia celu zależy od tego, czy mamy Raspbian Jessie czy Wheezy. W przypadku tego pierwszego musimy utworzyć odpowiedni plik dla systemd.
    Lokalizacja, która nas interesuje to /etc/systemd/system. W tym miejscu znajdują się pliki uruchamiające usługi systemowe użytkownika, takie jak ssh czy dhcp. Tworzymy własny plik. Nazwijmy go np.: wvdial.service (pamiętaj o sudo, gdyż musimy mieć uprawnienia roota, bo inaczej Linux nie pozwoli nam tu grzebać).sudo touch wvdial.servicePotem edytujemy go w dowolnym edytorze tekstowym (profesjonaliści używają vima, ale ja uwielbiam nano za jego prostotę obsługi)sudo nano wvdial.serviceNasz plik konfiguracyjny będzie prosty, wyglądający dokładnie jak ten poniżej: [Unit] BindsTo=dev-ttyUSB1.device After=dev-ttyUSB1.device Description=Wvdial connection Before=network.target Wants=network.target [Service] type=oneshot ExecStart=/usr/bin/wvdial orange [Install] WantedBy=multi-user.target Standardowo omówmy sobie zawartość tego pliku. Pierwsza sekcja [Unit] mówi o ogólnych cechach naszej usługi - kiedy należy ją uruchomić, po czym, przed czym, przez co jest wymagana itd. W naszym wypadku jest ona uruchamiana po utworzeniu pliku urządzenia ttyUSB1 (u ciebie zamiast 1 może być inna cyfra. Będzie to to samo urządzenie, którego użyliśmy przy konfiguracji wvdial), jest wymagana przez usługę dostępu do sieci (Wants=network.target) a więc musi być uruchomiona przed nią (before=network.target).
    Druga sekcja [Service] opisuje, co nasza usługa ma robić. W tym wypadku ma uruchomić polecenie /usr/bin/wvdial orange
    Sekcja [Install] ogólnie decyduje o tym, w jakim trybie systemu ma być uruchamiana nasza usługa. W tym wypadku jest to multi-user, czyli tryb wieloużytkownikowy. Najczęściej system operacyjny pracuje właśnie w takim trybie.
    Dodajemy usługę do autostartu za pomocą polecenia:sudo systemctl enable wvdial.serviceDzięki tym wszystkim naszym wysiłkom modem powinien łączyć się automatycznie z siecią 3G/4G po włączeniu Raspberry Pi.

    Jeśli masz Raspbiana Wheezy na swojej malince, to sprawa jest o wiele prostsza. W tym wypadku wystarczy dopisać nasze polecenie (/usr/bin/wvdial orange na przykład) do pliku /etc/rc.local. Powinno to wystarczyć.

    IPTables

    Reguły IPTables także nie są automatycznie zapisywane. Musimy o to zadbać sami.
    Aby to zrobić, przechodzimy na konto roota (sudo su albo su). Wydajemy polecenie:iptables-save > /etc/firewall.confNazwa pliku może być oczywiście inna, ale wydaje mi się, że ta najlepiej się kojarzy.

    Teraz, kiedy zapisaliśmy aktualną konfigurację firewalla, musimy sprawić jeszcze, aby była wczytywana automatycznie. Możemy oczywiście napisać plik usługi systemd, ale prostszym rozwiązaniem będzie utworzenie skryptu, który zostanie automatycznie uruchomiony przy tworzeniu interfejsów sieciowych. Pliki takie znajdują się w katalogu /etc/network/if-up.d Tworzymy tam nowy plik np.: iptables. Zamieszczamy w nim następującą treść: #!/bin/sh iptables-restore < /etc/firewall.conf

    Zapisujemy plik. Musimy także uczynić ten plik plikiem wykonywalnym. Służy do tego polecenie:chmod +x /etc/network/if-up.d/iptablesOstatnim krokiem jest modyfikacja pliku /etc/sysctl.conf. Dopisujemy w nim linijkę net.ipv4.ip_forward=1.

    Konfiguracja serwera DHCP

    Serwer DHCP w skrócie odpowiada za przydzielanie adresów IP. Jego instalacja i konfiguracja jest bardzo prosta. Najpierw instalacja:sudo apt-get install isc-dhcp-server.
    Po instalacji pakietu edytujemy plik konfiguracyjny /etc/dhcp/dhcpd.conf (oczywiście, korzystając z uprawnień roota). Podstawowa konfiguracja wygląda tak:subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100-192.168.1.200; option routers 192.168.1.50; option domain-name-servers 8.8.8.8; } Adres IP, który występuje po słówku subnet to nasz adres sieci. Netmask natomiast to maska tej sieci. To, co znajduje się pomiędzy klamrami to jej konfiguracja.
    • range - opisuje zakres przydzielanych adresów IP. Możesz ustawić inny zakres ale pamiętaj, że musi się on zgadzać z tym, co pokazuje nam maska podsieci.
    • option routers - jest to adres bramy sieciowej, którą przydziela serwer DHCP
    • option domain-name-servers - są to adresy serwerów DNS. Możemy ustawić także zapasowe serwery DNS (wtedy wymieniamy kolejne po przecinku).
    To już praktycznie koniec naszej ciężkiej pracy. Wystarczy teraz uruchomić usługę DHCP poleceniem /etc/init.d/isc-dhcp-server start oraz dodać ją do autostartu:
    • sudo update-rc.d /etc/init.d/isc-dhcp-server defaults (dla Raspbian Wheezy)
    • sudo systemctl enable isc-dhcp-server.service (dla Raspbian Jessie)
    No i voila - możemy się cieszyć własnym routerem udzielającym dostępu do sieci komórkowej. Możemy oczywiście kupić gotowy router spełniający to samo zadanie, ale nie zawsze jest to opłacalne, gdyż Raspberry ma kilka niezaprzeczalnych zalet:
    • Malinka ma lepsze parametry od większości najtańszych routerów obsługujących modemy 3G/4G
    • Raspberry pozwala nam kontrolować ilość zużywanego transferu
    • Malinka może zastąpić nam także inne urządzenia, co pomoże zaoszczędzić kilka złotych na rachunkach za prąd
    • i wiele innych...

    Na koniec mała uwaga - jeśli w sieci masz inny router, który posiada uruchomiony serwer DHCP, wyłącz go. Jeśli w tej samej sieci pracują dwa serwery DHCP, możesz trafić na różne “anomalie”, które m.in. mogą utrudnić dostęp do Internetu.
    Na koniec dwa screeny na dowód tego, jak dobrze działa nasz nowy serwer:

     

linux oprogramowanie porady

Komentarze

0 nowych
mordzio   15 #1 30.12.2015 10:14

Sposób dla leniwych: pobieramy obraz OpenWrt (https://wiki.openwrt.org/toh/raspberry_pi_foundation/raspberry_pi) i po sprawie;)

tylko_prawda   11 #2 30.12.2015 10:56

@mordzio: Tak, ale wtedy nie możesz np. postawić na malinie VPN :/

Autor edytował komentarz.
mordzio   15 #3 30.12.2015 12:12

@tylko_prawda: Przecież OpenWrt obsługuje OpenVPN i VPN PPTP

jarodebombel   7 #4 30.12.2015 17:14

Fajny wpis, ale dla mnie to nie patent... Mam prepaidowy internet na patyku z softem Play'a w Plusie. Ażeby dobić środki, robie to w tym programie. A z Malinki to chyba nie możliwe, choć mogę się mylić...

  #5 31.12.2015 01:12

@jarodebombel: długo myślałem(chyba) nad tym co napisałeś. Co to znaczy "dopić środki" ? Uzupelnic konto kasą ? do tego wystarczy wykonac przelew ktory jest od 10 ? 15 lat ?

  #6 31.12.2015 08:46

@karol221-10 - To nie działanie usm-modeswitch z E3131 wynika z wersji tego pierwszego, przynajmniej ja nie miałem problemów z przełączaniem w Debianie Wheezy, a po przejściu na Jessie już tak, okazało się wtedy, iż usb-modeswitch 2.2.0 w gałęzi stable jest wadliwy, po wrzuceniu 2.2.5 z backportów problem zniknął. Skoro Raspbian bazuje na Debianie to może tu trzeba szukać przyczyn.

@jarodebombel - każdy operator ma stronę WWW do zarządzania, Play ma Play24, Plus ma swoje rozwiązanie gdzie logujesz się numerem i 4 ostatnimi cyframi PUK - z poziomu tych stron można doładowywać konto. A do wysyłania kodów USSD z CLI to są odpowiednie skrypty na GitHubie.

tylko_prawda   11 #7 31.12.2015 21:29

@mordzio: Ale wtedy będzie ruterem, niczym więcej.

mordzio   15 #8 01.01.2016 12:16

@tylko_prawda: A to nie takie było założenie tego wpisu?

tylko_prawda   11 #9 01.01.2016 20:39

@mordzio: Założenie tego wpisu było takie, że RPi pełni funkcję routera na Raspbianie. Tytuł to nie "Przerabiamy RPi na router".

Yansi   11 #10 04.01.2016 10:03

Opisz lepiej jak zrobić z RPi modem 3G/4G który łączy się z komputerem przez USB. ;)

karol221-10   10 #11 04.01.2016 10:38

@Yansi: ciekawy temat :) Być może się nim zajmę w przyszłości.

dansys80   4 #12 05.01.2016 21:42

Wpis trochę na siłę, Rasbery pi nie nadaje się w roli routera. Najwyżej może być tylko hotspotem.

karol221-10   10 #13 06.01.2016 10:18

@dansys80: Czy ja wiem... u mnie taka konstrukcja chodziła pół miesiąca i nie mogę powiedzieć, żeby było źle.

silos100   4 #14 21.01.2016 18:04

Czy jest możliwość ustawienia dostępu do tego routera także przez kartę WiFi wpiętą w RaspberryPi tak jak przez kablowy eth0 czyli zrobienie access pointa ?

karol221-10   10 #15 22.01.2016 15:09

@silos100: Bez problemu można takie cos zrobić. O ile dobrze pamiętam, służy do tego hostapd.

  #16 05.02.2016 14:00

A jaki max transfer da się wycisnąć na malinie na lte ?
szukam zamiennika router który max dobija do 30Mbps Downloadu

karol221-10   10 #17 08.02.2016 19:33

@g3neric (niezalogowany): Ja wyciągnąłem max 35mbit/s, ale podejrzewam, że możliwy jest wyższy wynik. Porty USB w malince mają przepustowość 100Mbit/s, więc w praktyce te 80-90Mbit/s powinno być.

  #18 13.07.2016 22:12

Mówiłeś że testowałeś na Play, no więc wziąłem w ciemno Twoje pliki konfiguracyjne i niestety pojawia się komunikat 'dialing timed out'. Sprawdziłem jak zaleca się konfigurować Internet w Play i wszędzie piszą login: brak. Domyślam się że nie chodzi o wpisanie "brak" xD
Poza tym stupid mode wywalił się jak pierwszy raz modem nie mógł się połączyć. Ponowne uruchomienie wvdial kończy się porażką gdy próbuje ponownie wysłać drugi komunikat (zapomniałem jego kod).
Jakieś pomysły?

karol221-10   10 #19 15.07.2016 17:44

@Diversi (niezalogowany): Przede wszystkim, może twój Raspberry zainicjował modem pod inną nazwą. Spróbuj /dev/ttyUSB2 lub /dev/ttyUSB0. U mnie najczęściej to było przyczyną problemów.
Jeśli chodzi o login i hasło, to możesz wpisać blank.

  #20 15.07.2016 20:42

@mordzio:
A masz moze pojecie czy obsłuzy L2TP?