Instalace a konfigurace PPTP VPN serveru na Ubuntu + L2 Broadcast

By | 12/07/2022

Last Updated on 11/01/2023 by administrator

Instalace a konfigurace PPTP VPN serveru na Ubuntu + L2 Broadcast

Instalace a konfigurace PPTP VPN serveru na Ubuntu + L2 Broadcast

Motivace:

Tento článek popisuje instalaci a konfiguraci PPTP VPN serveru na Ubuntu.

Článek vznikl především proto, že testujeme hry na LAN párty a bylo potřeba vidět vytvořenou hru na LAN síti jako bych byl s oběma počítači na jedné LAN domácí síti. To vyřešilo povolení broadcastu.

PPTP MS-CHAPv2 zranitelný vůči slovníkovým útokům, doporučuji ho jen používat v případě velmi silného hesla.

OS:

Implementace byla prakticky prováděna na Ubuntu 22.04 LTS a Ubuntu 20.04 LTS

Implementace [1]:

1. Instalace PPTP serveru:

Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů:

apt update

Nainstalovat PPTP server:

sudo apt-get install pptpd -y

2. Přidání DNS serverů pro PPTP klienty:

Přidat DNS servery v pptpd-options souboru:

sudo vi /etc/ppp/pptpd-options

V souboru pptpd-options najít následující řádek:

#ms-dns 10.0.0.1
#ms-dns 10.0.0.2

a přepsat jej na libovolné DNS servery, v tomto případě budou použity public Google DNS servery:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

3. Vytvoření PPTP uživatelů:

Přidat PPTP uživatele v chap-secrets souboru:

sudo vi /etc/ppp/chap-secrets

Příklad vytvoření dvou uživatelů user1 a user2 s heslem v souboru chap-secrets:

user1 pptpd NejakeSilneHeslo1 *
user2 pptpd NejakeSilneHeslo2 *

Pozn. 1: Přes jednoho PPTP uživatele se může připojit více zařízení (není to jeden uživatel per jedno zařízení).

Pozn. 2: Jelikož PPTP protokol již byl prolomený, doporučuji vygenerovat co nejsilnější heslo (aspoň 16místné heslo v kombinaci s velkými a malými symboly a čísly)

4. Vytvoření PPTP subnetu:

Vytvoření VPN subnetu pro PPTP uživatele se provede v /etc/pptpd.conf souboru:

sudo vi /etc/pptpd.conf

a přidat následující řádky. Parametr localip IP adresu PPTP VPN serveru. Parametr remoteip definuje PPTP VPN IP adresy pro připojené uživatele:

localip 192.168.89.1
remoteip 192.168.89.100-200

5. Povolení forwardingu a NAT (MASQUERADE):

Aby mohl být klientský VPN provoz směrován do internetu je potřeba v souboru sysctl.conf zapnout směrování IPv4 paketů:

sudo vi /etc/sysctl.conf

V souboru sysctl.conf odkomentovat následující řádek:

net.ipv4.ip_forward=1

Aby se aplikovaly změny v souboru sysctl.conf a následně i po restartu Ubuntu serveru, provést příkaz níže:

sudo sysctl -p

Aby došlo ke správnému routingu mezi VPN klienty a internetem, je potřeba upravit soubor přidat pravidlo iptables níže. Toto NAT pravidlo nastavuje, že všechny pakety, co přijdou z jakoukoliv se zdrojovou IP adresou se budou překládat (maskovat) na adresu odchozího rozhraní (v tomto případě na IP adresu z rozhraní enp0s3.:

sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Aby se výše uvedené pravidlo iptables pro NAT nahodilo po rebootu je potřeba jej přidat do rc.local souboru, který slouží ke spouštění příkazů při startu systému:

sudo vi /etc/rc.local

Do souboru rc.local dopsat:

#!/bin/bash
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Je nutné povolit práva pro spouštění po restartu:

chmod 744 /etc/rc.local

6. Konfigurace UFW a Forward policy:

Přeskočit tento bod, pokud není nakonfigurovaný UFW, což lze zjistit příkazem sudo ufw status.

Pokud je nakonfigurovaný firewall, je nutné povolit provoz TCP/1723 a protokol GRE (pro připojení z jakékoliv zdrojové IP adresy):

sudo ufw allow proto gre from 0.0.0.0/0
sudo ufw allow 1723/tcp

Proto by mohly být defaultně forwardovány všechny pakety mezi síťovými rozhraními Ubuntu je nutné povolit Default Forward Policy na Accept. [2] Přejít do /etc/default/ufw souboru:

sudo vi /etc/default/ufw

a přepsat DEFAULT_FORWARD_POLICY=”DROP” na DEFAULT_FORWARD_POLICY=”ACCEPT”:

DEFAULT_FORWARD_POLICY=”ACCEPT”

Pro aktivaci konfigurace v before.rules provést UFW restart. Tímto nedojde k aktivaci UFW ale pouze k načtení provedené konfigurace. Díky tomu se konfigurace neztratí ani po rebootu Ubuntu serveru:

sudo service ufw restart

7. Nastartování PPTP serveru:

Restartovat PPTP process:

sudo service pptpd restart

Aby se PPTP server aktivoval po rebootu Ubuntu aplikovat příkaz níže:

sudo systemctl enable pptpd

Volitelně – Povolení L2 Broadcastu mezi sítěmi:

Pokud je potřeba aby fungoval broadcast mezi PPTP VPN sítí (PPTP uživateli) a uživateli na domácí síti, je potřeba povolit parametr bcrelay (broadcast relay) v souboru pptpd.conf:

Otevřít /etc/pptpd.conf soubor.

sudo vi /etc/pptpd.conf

odkomentovat parametr bcrelay, který povoluje zasílání broadcast zpráv mezi PPTP VPN klienty a domácí síti a dopsat za něj jméno rozhraní na Ubuntu serveru (v tomto případě se jedná o síťové rozhraní enp0s3). Síťové rozhraní lze zjistit z výpisu ip a.

bcrelay enp0s3

Pozn. Jelikož testujeme hry na LAN párty, tak v praxi jsem tento parametr bcrelay potřeboval mít nastavený abych viděl vytvořenou hru na LAN síti jako bych byl s oběma počítači na domácí síti.

Důležité upozornění: Aby šel broadcast vidět, musí být všichni účastníci připojení na PPTP VPN serveru. Metrika na síťovém PPTP rozhraní musí být menší než na ethernetovém či WiFi rozhraní daného PPTP klienta. V praxi stačilo manuálně nastavit metriku na 1 na PPTP síťovém rozhraní. Při změně metriky je nutné se opětovně přihlásit k PPTP serveru. Kliknout zde pro nastavení metriky pro Windows na PPTP rozhraní. Při jakýchkoli problémech restartovat PPTP process na Ubuntu serveru. Konfigurace byla vyzkoušena na WIN 10 a WIN 11.

Nakonec restartovat PPTP process (pokud jsou nějací PPTP klienti již připojení tak dojde k jejich odpojení):

sudo service pptpd restart

Hotovo. Konfigurace PPTP VPN serveru proběhla úspěšně.

Logy:

cat /var/log/syslog | grep pptp

Ověření funkce PPTP serveru:

sudo service pptpd status

Výpis příkazu sudo service pptpd status:

● pptpd.service - PoPToP Point to Point Tunneling Server
     Loaded: loaded (/lib/systemd/system/pptpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-07-03 15:05:21 UTC; 4s ago
       Docs: man:pptpd(8)
             man:pptpctrl(8)
             man:pptpd.conf(5)
   Main PID: 3481 (pptpd)
      Tasks: 1 (limit: 1033)
     Memory: 392.0K
        CPU: 1ms
     CGroup: /system.slice/pptpd.service
             └─3481 /usr/sbin/pptpd --fg

Alternativní ověření:

ps -A | grep pptpd

Výpis příkazu ps -A | grep pptpd:

3481 ?        00:00:00 pptpd

Ověření připojení PPTP klientů k PPTP serveru:

Všechny aktuální připojené PPTP klienty na PPTP server lze vidět z výpisu

ip a

Částečný výstup příkazu ip a, ukazuje, že je připojený jeden PPTP client:

15: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1396 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp
    inet 192.168.89.1 peer 192.168.89.100/32 scope global ppp0
       valid_lft forever preferred_lft forever

Datum a čas připojení a odpojení (od – do) jednotlivých PPTP uživatelů s jejich veřejnými IP adresami, lze zjistit příkazem níže:

last | grep ppp

Výpis last | grep ppp příkazu:

user1 ppp0         62.24.64.78       Sun Jul  3 15:51    gone - no logout
user1 ppp0         31.84.87.94       Sun Jul  3 15:05 - 15:42  (00:37)

Řešení problémů:

1) Chyba „Cannot determine ethernet address for proxy ARP“

Při výpisu service pptpd status (částečný výpis) se zobrazí hláška:

Jul 03 15:05:36 ubuntu22 pppd[3487]: Cannot determine ethernet address for proxy ARP
Řešení problému:

Při testování PPTP různými způsoby se ukázalo, že hláška nic neafektuje.

Zdroj:

[1] https://www.linuxbabe.com/linux-server/setup-your-own-pptp-vpn-server-on-debian-ubuntu-centos

[2] https://www.snel.com/support/how-you-should-set-up-a-vpn-with-pptp/

Další články:

Článek, jak nakonfigurovat StrongSwan VPN serveru na Ubuntu 20.04.

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *