V článku si představíme open-source projekt PoPToP, kterým snadno a rychle na linuxovém počítači zprovozníme PPTP server se šifrováním, tedy VPNku, ke které je možno se připojit z Windows bez nutnosti cokoliv instalovat.
Datum: 09.03.2007 Autor: Petr Šťastný Rubrika: Linux Diskuze: 0
Operační systém Windows má v sobě integrovaného PPTP klienta (Point to Point Tunneling Protocol), kterým se dá na několik kliknutí nakonfigurovat a spustit VPN spojení ke vzdálené síti. Samotné PPTP pouze vytvoří tunel mezi klientem a serverem, k šifrování se zde používá protokol MPPE (Microsoft Point-to-Point Encryption), který si zde také zprovozníme.
Jak již bylo řečeno, PoPToP je open-source implementace protokolu PPTP pro Linux, vydaná pod licencí GNU GPL, používající autentifikační protokol MSCHAPv2 a šifrování MPPE. Bohužel však nepodporuje kompresi přenášených dat protokolem MPPC. Instalace a konfigurace je snadná. Značná výhoda tohoto protokolu je, že ho nativně ovládají Windows 95/98/Me/NT/2000/XP/Vista.
Software si stáhneme z www.poptop.org, rozbalíme a pro kompilaci a instalaci použijeme ve vznklém adresáři se zdrojovými kódy tradiční sekvenci příkazů:
./configure make make install
Podpora protokolu MPPE, který bude komunikaci v tunelu přes PPTP šifrovat, je nutná v jádře Linuxu. Jádra verze 2.6.15 a vyšší jej obsahují, u jádra starší verze musíme nainstalovat potřebný modul pomocí DKMS (Dynamic Kernel Module Support), který nalezneme na stránce http://sourceforge.net/project/showfiles.php?group_id=44827&package;_id=120221 . Z uvedeného odkazu je třeba stáhnout soubor kernel_ppp_mppe-1.0.2-3dkms.src.rpm, což je samotný modul, a případně systém DKMS, který nám tento modul zkompiluje a připojí k jádru.
Ke kompilaci modulu je třeba mít k dispozici zdrojové kódy používaného jádra (resp. hlavičkové soubory). Pomocí RPM nainstalujeme nejprve DKMS a poté zdrojové kódy modulu, které by se měly ihned automaticky zkompilovat a aktivovat. Pokud se tato fáze nezdaří, lze tak učinit ručně pomocí následujících příkazů:
dkms build -m kernel_ppp_mppe -v 1.0.2 dkms install -m kernel_ppp_mppe -v 1.0.2
Konfigurace PPTP se nachází v několika souborech:
/etc/pptpd.conf obsahuje IP adresu serveru (kterou je vhodné také přiřadit síťovému rozhraní, které bude s klienty komunikovat), rozsah IP adres, které se budou dynamicky přidělovat klientům, a odkaz na další konfigurační soubor.
option /etc/ppp/options.pptpd localip 10.10.10.1 remoteip 10.10.10.11-254
/etc/ppp/options.pptpd obsahuje další konfiguraci - zákaz použití starších autentizačních protokolů PAP, CHAP a MSCHAPv1, vyžadování autentizace přes MSCHAPv2 a šifrování MPPE se 128bitovým klíčem. Dále lze klientům přidělovat DNS servery, aktivujeme ARP proxy pro oznamování MAC adresy serveru pro IP adresy klientů, zapneme používání lock souboru a zakážeme několik dalších šifrovacích algoritmů tak, aby vše fungovalo nejlépe s klienty Windows, a nakonec vypneme logování chyb na standardní chybový výstup (loguje se pak do systémového logu přes syslog).
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 10.10.10.1 ms-dns 10.10.10.2 proxyarp lock nobsdcomp novj novjccomp nologfd
Nakonec nás čeká soubor /etc/ppp/chap-secrets, do kterého se na každý řádek uvede (odděluje se mezerami) přihlašovací jméno klienta, PPTP program, heslo a pevná IP adresa. Pokud není IP uvedena, přiděluje se dynamicky podle rozhsahu, uvedeném v pptpd.conf
franta pptpd frantovo_heslo pepa pptpd pepovo_heslo 10.10.10.25
V tomto případě uživatel franta bude dostávat IP adresu automaticky, uživatel pepa dostane vždy 10.10.10.25.
Prostým zavoláním příkazu:
pptpd
spustíme PPTP server. Případné chyby hledejte buď na výstupu programu nebo v systémovém logu.
Ve Windows běžným způsobem v Síťových připojení vytvoříme nové VPN připojení, kde je pro správnou funkčnost s PoPToP potřeba nastavit následující věci:
Tím by mělo být vše hotové. Praktické zkušenosti s tímto systémem jsou dobré, nikdy se nevyskytl žádný problém.
K tomuto článku nebyl dosud vložen žádný diskuzní příspěvek, ale můžete tak učinit jako první.