VPN (Tunelowanie)
- PPTP
- L2TP/IPsec
- OpenVPN
- WireGuard
- SSTP
- IKEv2/IPsec.
PPTP
Działania praktyczne
Dlaczego konfigurowałem PPTP na Ubuntu Server?
Na co dzień mam do czynienia z różnymi tunelami VPN - w większości przypadków są one zestawiane natywnie, jak również z wykorzystaniem klientów własnościowych w systemach Windows.
W przypadku wykorzystywania połączeń natywnych w Windows zastanawiałem się, jak wyglądałoby zestawienie analogicznego tunelu na Ubuntu Server. Wyniki moich przemyśleń poniżej.
Agenda wdrożenia tunelu PPTP na Ubuntu
- zainstalowanie klienta VPN (pptp-linux)
- wygenerowanie konfiguracji tunelu (pptsetup), co de facto sprowadza się do utworzenia wszystkich wymaganych plików konfiguracyjnych, niezbędnych do ustanowienia połączenia i do uwierzytelnienia użytkownika
- zestawienie aktywnego tunelu PPTP - uruchomienie demona PPPD z użyciem przygotowanej uprzednio konfiguracji
- debugowanie tunelu - czy został poprawnie zestawiony, czy też może wystąpiły błędy
- konfiguracja harmonogramu (cron), aby tunel zestawiał się automatycznie po każdorazowym uruchomieniu systemu
- dodanie trasy do sieci docelowej (tzw. split tunneling), co umożliwi komunikację z urządzeniami po drugiej stronie tunelu
- rozbudowanie harmonogramu (cron) z uwzględnieniem trasy do sieci docelowej
- uwagi końcowe
HOW-TO
-
Instalacja klienta VPN (pptp-linux):
sudo apt install pptp-linux
-
Wygenerowanie konfiguracji tunelu (pptsetup)
sudo pptpsetup --create myvpn --server NNN.NNN.NNN.NNN --username USER_NAME --password USER_PASSWORD --encrypt --start
Narzędzie
pptpsetup
utworzy następujące pliki konfiguracyjne:/etc/ppp/peers/myvpn
- zawierający konfigurację połączenia (protokół, serwer, parametry) dla demona PPPD/etc/ppp/chap-secrets
- dane uwierzytelniające użytkownika, wykorzystywane przez protokół CHAPPoprawnie wygenerowana konfiguracja umożliwi prawidłowe zestawienie tunelu PPTP przez demona PPPD, dzięki czemu nie będzie potrzeby ręcznej edycji w/w plików konfiguracyjnych.
-
Sterowanie połączeniem VPN - włączanie/wyłączanie tunelu:
sudo pon myvpn
# tunel onsudo poff myvpn
# tunel off -
Debugowanie tunelu
Wyświetlanie informacji o połączeniu - pojawienie się w wynikach interfejsu ppp0 będzie oznaczało zestawienie tunelu (nawiązanie połączenia):
ifconfig ppp0
ip a | grep ppp0
Przeglądanie logów systemowych:
journalctl -xe | grep pppd
sudo cat /var/log/syslog | grep pppd
-
Zestawianie tunelu po każdorazowym uruchomieniu systemu (CRON)
sudo crontab -e
@reboot sleep 15 && pon myvpn
-
Dodanie trasy do sieci zdalnej
Ruch sieciowy serwera przechodzi przez domyślny interfejs sieciowy eth0 i bramę domyślną. Aby zapewnić dostęp z serwera do urządzeń znajdujących się w sieci zdalnej należy odpowiednio skonfigurować tzw. split tunneling, czyli dodać trasę do sieci docelowej. Dzięki temu część ruchu sieciowego, adresowanego do sieci zdalnej, będziemy mogli przekierować bezpośrednio do szyfrowanego tunelu VPN.
Dodanie trasy w sposób doraźny:
sudo ip route add 10.10.10.0/24 dev ppp0
-
Modyfikacja zadania CRON o konfigurację trasy
Aby dodać trasę w sposób trwały, możemy rozbudować zadanie cron o konfigurację trasy:
sudo crontab -e
@reboot sleep 15 && pon myvpn && sleep 10 && ip route add 10.10.10.0/24 dev ppp0