Wyszukiwanie

Szukaj publikacji

Wpisz co najmniej 2 znaki, aby rozpocząć wyszukiwanie.

    Powrot do wpisow

    Pptp Tunnel Configuration

    Jak zestawić tunel PPTP na Ubuntu Server, uruchamiać go automatycznie po starcie systemu i dodać trasę do sieci zdalnej.

    Uwaga: technologia legacy. PPTP jest protokołem przestarzałym i nie powinien być wybierany do nowych wdrożeń. Ten tekst pozostaje dokumentacją integracji ze starszą infrastrukturą. W nowych rozwiązaniach należy rozważyć współczesne mechanizmy, takie jak WireGuard lub prawidłowo skonfigurowany IPsec.

    VPN i tunelowanie

    Tunelowanie w kontekście VPN to sposób przesyłania danych pomiędzy urządzeniem użytkownika a siecią docelową przez dodatkową, logiczną warstwę połączenia. W praktyce ruch jest przenoszony bezpiecznym kanałem, czyli tunelem, co ogranicza ryzyko podsłuchu, manipulacji albo śledzenia transmisji w sieci publicznej.

    VPN może wykorzystywać różne protokoły, między innymi:

    • PPTP
    • L2TP/IPsec
    • OpenVPN
    • WireGuard
    • SSTP
    • IKEv2/IPsec

    Każdy z tych protokołów da się wdrożyć w Linuksie, ale ich charakter jest różny. PPTP i L2TP/IPsec są prostsze, ale ustępują bezpieczeństwem nowszym rozwiązaniom. OpenVPN i WireGuard oferują nowocześniejsze podejście, a IKEv2/IPsec dobrze sprawdza się w wybranych scenariuszach mobilnych.

    Czym jest PPTP

    PPTP, czyli Point-to-Point Tunneling Protocol, to jeden z najstarszych i najprostszych protokołów używanych do zestawiania połączeń VPN. Wykorzystuje szyfrowanie MPPE i standardowo port 1723, dzięki czemu jest łatwy do uruchomienia, ale wyraźnie słabszy od nowszych rozwiązań, takich jak OpenVPN czy WireGuard.

    W Linuksie tunel PPTP opiera się na GRE (Generic Routing Encapsulation) w połączeniu z MPPE, tworząc wirtualny most pomiędzy urządzeniami.

    Cel tego wpisu

    W tym artykule pokazuję konfigurację połączenia PPTP na Ubuntu Server. Sam sposób postępowania będzie jednak zbliżony również na innych dystrybucjach Linuksa.

    Na co dzień mam do czynienia z różnymi tunelami VPN, zwykle zestawianymi natywnie albo przy użyciu klientów własnościowych w systemie Windows. W pewnym momencie chciałem sprawdzić, jak wygląda analogiczne połączenie zestawione na Ubuntu Server. Poniżej zebrałem wynik tych prac w formie krótkiego, praktycznego HOW-TO.

    Plan wdrożenia

    Konfiguracja tunelu PPTP na Ubuntu obejmuje zwykle kilka prostych kroków:

    1. Zainstalowanie klienta VPN pptp-linux
    2. Wygenerowanie konfiguracji tunelu przy użyciu pptpsetup
    3. Zestawienie aktywnego tunelu PPTP
    4. Sprawdzenie, czy połączenie zostało poprawnie uruchomione
    5. Dodanie automatycznego uruchamiania po restarcie systemu
    6. Dodanie trasy do sieci zdalnej w modelu split tunneling
    7. Rozszerzenie zadania cron o konfigurację tej trasy

    Instalacja klienta VPN

    Instalacja pakietu:

    sudo apt install pptp-linux

    Wygenerowanie konfiguracji tunelu

    Do przygotowania konfiguracji można użyć narzędzia pptpsetup:

    sudo pptpsetup --create myvpn --server NNN.NNN.NNN.NNN --username USER_NAME --password USER_PASSWORD --encrypt --start

    To polecenie tworzy między innymi dwa podstawowe pliki:

    • /etc/ppp/peers/myvpn, czyli konfigurację połączenia dla demona pppd
    • /etc/ppp/chap-secrets, czyli dane uwierzytelniające wykorzystywane przez CHAP

    Jeżeli konfiguracja zostanie wygenerowana poprawnie, zwykle nie ma potrzeby ręcznego edytowania tych plików.

    Włączanie i wyłączanie tunelu

    Sterowanie połączeniem jest proste:

    sudo pon myvpn      # tunel on
    
    sudo poff myvpn    # tunel off

    Debugowanie tunelu

    Najprostszy sposób weryfikacji to sprawdzenie, czy po zestawieniu połączenia pojawił się interfejs ppp0:

    ifconfig ppp0
    
    ip a | grep ppp0

    Można też zajrzeć do logów systemowych:

    journalctl -xe | grep pppd
    
    sudo cat /var/log/syslog | grep pppd

    Jeżeli interfejs ppp0 jest widoczny, a logi nie pokazują błędów uwierzytelniania ani problemów z negocjacją sesji, tunel powinien być aktywny.

    Automatyczne zestawianie tunelu po restarcie

    Jeżeli połączenie ma być uruchamiane automatycznie po starcie systemu, najprościej dodać wpis do cron:

    sudo crontab -e
    @reboot sleep 15 && pon myvpn

    Kilkunastosekundowe opóźnienie daje systemowi czas na pełne podniesienie sieci przed próbą zestawienia tunelu.

    Dodanie trasy do sieci zdalnej

    Domyślnie ruch serwera wychodzi zwykłym interfejsem sieciowym i standardową bramą. Jeśli chcesz mieć dostęp do urządzeń po drugiej stronie tunelu, trzeba dodać trasę do sieci docelowej. To właśnie podstawowy wariant split tunneling.

    Doraźne dodanie trasy wygląda tak:

    sudo ip route add 10.10.10.0/24 dev ppp0

    Dzięki temu ruch do wskazanej podsieci zostanie skierowany przez tunel PPTP, zamiast przez domyślną trasę systemu.

    Trwała konfiguracja trasy w cron

    Jeżeli tunel ma startować automatycznie, sensownie jest od razu dodać do harmonogramu również konfigurację trasy:

    sudo crontab -e
    @reboot sleep 15 && pon myvpn && sleep 10 && ip route add 10.10.10.0/24 dev ppp0

    To rozwiązanie zakłada, że połączenie potrzebuje chwili, aby się zestawić, zanim system spróbuje dodać trasę przez ppp0.

    Uwagi końcowe

    PPTP nadal bywa przydatny tam, gdzie trzeba połączyć się ze starszą infrastrukturą albo zachować zgodność z istniejącym środowiskiem. W nowych wdrożeniach lepiej zwykle wybierać nowsze protokoły, ale w praktyce administracyjnej nadal zdarzają się sytuacje, w których PPTP pozostaje po prostu wymaganym standardem po drugiej stronie połączenia.

    Na Ubuntu Server jego konfiguracja jest dość prosta: instalujesz klienta, generujesz konfigurację, uruchamiasz tunel, a potem dodajesz automatyzację i trasę do sieci zdalnej. Jeżeli zależy Ci na szybkim i powtarzalnym zestawieniu połączenia, taki model sprawdza się całkiem dobrze.