Creació de túnels PPTP (Debian/dd-wrt/Mikrotik)
De Guifi.net - Wiki Català
Creació d'un túnel PPTP entre un Server Debian/Ubuntu || dd-wrt i una RB750 de Mikrotik (Client) o Debian/Ubuntu (Client).
- Config costat servidor (Debian/Ubuntu)
apt-get install pptpd
Modifiquem el fitxer de configuració /etc/pptpd.conf: localip 172.30.0.1 remoteip 172.30.0.2-4
El rang d'IP's que utilitzem al punt anterior HA DE SER DIFERENT al rang configurat a les nostres xarxes. localip és la direcció que tindrà el servidor pptp remoteip són les direccions que s'assignaran als clients del túnel.
Tot seguit modifiquem el fitxer d'opcions /etc/ppp/pptpd-options: Modifiquem el nom del servidor pptp: name pptp-solsona
Configurem els servidors de DNS d'aquest fitxer pptpd-options: ms-dns 8.8.8.8 ms-dns 80.58.61.250
Tot seguit donem d'alta els clients (user+psw) al fitxer /etc/ppp/chap-secrets: usuari nom_servidor contrasenya *
user= nom de l'usuari que es connectarà nom_servidor= ha de dir-se igual al "name" que hem definit a pptpd-options contrasenya= la paraula de pas de l'usuari que es connectarà al servidor
- = Indica que se li assignarà qualsevol direcció IP de les que hem definit al fitxer /etc/pprpd.conf
Exemple: user pptp-solsona una_clau_de_pas_molt_fiable *
Finalment només ens resta reiniciar el servei: /etc/init.d/pptpd restart
Ara ens falta crear una nova entrada a la taula d'enrutament per tal que tot el tràfic amb destí a la xarxa client VPN sigui enrutat correctament.
Per aconseguir aquest "reenviament", utilitzem les "ip routes":
ip route show (mostra les entrades existents)
Afegim una nova regla per tal que tot el tràfic contra la xarxa 192.168.103.0/24 sigui reenviat a l'altre extrem del túnel: route add -net 192.168.103.0 netmask 255.255.255.0 gw 172.30.0.2
- Configuració vàlida mentre no reiniciem el sistema
Si volem que l'entrada de la taula d'enrutament sigui persistent, hem d'editar el fitxer /etc/network/interfaces i copiar-hi una configuració de l'estil:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 172.25.2.202 netmask 255.255.255.0 network 172.25.2.0 broadcast 172.25.2.255 gateway 172.25.2.1
- ruta estatica VPN Suria ###
post-up route add -net 192.168.103.0 netmask 255.255.255.0 gw 172.30.0.2 pre-down route del -net 192.168.103.0 netmask 255.255.255.0 gw 172.30.0.2
dns-nameservers 172.25.2.1 8.8.8.8
Finalment només hem d'obrir els ports 1723 TCP i 47 UDP del router que utilitzarem per crear el túnel (172.25.2.201)
- Fi config costat servidor (Debian/Ubuntu)
- Config servidor dd-wrt
Services-> VPN-> PPTP Server Server IP: 172.25.2.254 ;Una direcció IP que estigui lliure a la nostra xarxa Client IP: 172.25.2.250 ;Serà la direcció o direccions que s'assignaran als clients PPTP que es connectin a aquest servidor CHAP Secrets: nom_usuari * Paraula_de_Pas * ;Molt important mantenir aquesta estructura!
Security-> VPN Passthrough IPSec Passthrough: Enable PPTP Passthrough: Enable L2TP Passthrough: Enable (En realitat no és necessari activar-ho tot...)
Setup-> Advanced Routing Operating Mode: Gateway Select Set Number: 1 Route Name: Tunel_Suria Metric: 0 Destination LAN NET: 192.168.103.0 (Xarxa del costat CLIENT del Túnel) Subnet Mask: 255.255.255.0 (Màscara de la xarxa del costat CLIENT) Gateway: 172.25.2.250 (Direcció IP assignada al CLIENT PPTP connectat al túnel)
- Fi config servidor dd-wrt
- Config costat client (Mikrotik)
Configuració Client Mikrotik: PPP-> Interface-> [Add New]-> PPTP Client Name: ;Nom amb el que identificarem el nostre túnel. Exemple: pptp-solsona Connect to: ;hi posem una IP qualsevol. Tal i com veurem més endavant, un script actualitzarà automàticament aquest valor. User: ;nom d'usuari amb el que ens connectarem contra el servidor dd-wrt Password: ;la paraula de pas que hem configurat al servidor dd-wrt Profile: default_encryption Allow: mschap2, mschap1, chap, pap Comment: ;Descripció que identificar el túnel. Exemple: ;Túnel contra servidor dd-wrt de Solsona [Apply] + [OK]
IP-> Firewall-> NAT-> [Add New]: Chain: srcnat Out. Interface: pptp-solsona ;Nom del túnel que hem creat a PPP-> Interface Action: masquerade Comment: ;Masquerade túnel Solsona
IP-> Routes-> [Add New]: Dst. Address: 172.25.2.0/24 ;Direcció de xarxa que tenim a l'extrem del servidor dd-wrt Gateway: 172.25.2.254 Direcció IP del servidor PPTP (dd-wrt) Check Gateway: ping Type: Unicast Distance: 1 Scope: 30 Target Scope: 10 Comment: Ruta per accedir a la xarxa de Solsona mitjançant el túnel
Tot seguit crearem un script per actualitzar la direcció IP del servidor (ja que en el meu cas és dinàmica): System-> Scripts-> [Add New]: Name: IP-Dinamica-VPN ;Nom amb el que identifiquem el nostre script Policy: Marquem tots els check box I aquest és l'script:
- local "nom_interficie_vpn" "pptp-solsona"
- local "nom_servidor_vpn" "el_meu_servidor_de_solsona.no-ip.info"
- local "nova_direccio_ip" [:resolve $"nom_servidor_vpn"]
- local "direccio_ip_actual" [/interface pptp-client get $"nom_interficie_vpn" connect-to]
- if ($"direccio_ip_actual" != $"nova_direccio_ip") do={ /interface pptp-client set [find name=$"nom_interficie_vpn"] connect-to=$"nova_direccio_ip"}
Fixem-nos que a l'anterior script NOMÉS hem de canviar els paràmetres "pptp-solsona" i "el_meu_servidor_de_solsona.no-ip.info"
Finalment, programem un cron que ens executi l'script anterior cada cert temps: System-> Scheduler-> [Add New]: Name: Updt-IP-Solsona Start time: startup Interval: 00:05:00 ;Cada 5 minuts comprovem si el proveïdor ens ha canviat l'IP del servidor PPTP On Event: IP-Dinamica-VPN ;Hem de posar el mateix nom amb el que hem batejat el nostre fantàstic script! Policy: Marquem tots els check box Comment: Actualitza la ip per connectar a la VPN de Solsona
- Fi config costat client (Mikrotik)
- Config costat client (Debian/Ubuntu)
Per connectar/desconnectar al/del servidor utilitzarem les comandes pon i poff respectivament.
Creem un fitxer amb la configuració del servidor on volem connectar al directori /etc/ppp/peers: En el meu cas, creo un fitxer anomenat pptp-solsona, i hi afegeixo la següent configuració:
pty "pptp el_meu_servidor_de_solsona.no-ip.info --nolaunchpppd" name user remotename pptp-solsona require-mschap-v2 require-mppe-128 file /etc/ppp/options.pptp ipparam tunnel
el_meu_servidor_de_solsona.no-ip.info és el nom del servidor on volem connectar user= nom de l'usuari que hem creat al servidor remotename pptp-solsona= nom del servidor que hem definit al fitxer /etc/ppp/pptpd-options del servidor.
Tal i com hem fet al servidor, ara hem d'afegir els usuaris al fitxer /etc/ppp/chap-secrets: usuari nom_servidor contrasenya *
user= nom de l'usuari que es connectarà nom_servidor= ha de dir-se igual al "name" que hem definit a pptpd-options contrasenya= la paraula de pas de l'usuari que es connectarà al servidor
- = Indica que se li assignarà qualsevol direcció IP de les que hem definit al fitxer /etc/pptpd.conf
Exemple: user pptp-solsona una_clau_de_pas_molt_fiable *
Tornem a configurar les ip routes per redirigir el tràfic del túnel contra el servidor: route add -net 172.25.2.0 netmask 255.255.255.0 gw 172.30.0.1
Si volem que aquesta entrada sigui persistent, podem aconseguir-ho editant /etc/network/interfaces (consultar la configuració explicada a #Config costat servidor (Debian/Ubuntu))
Amb aquesta regla aconseguim que tot el tràfic destinat a la xarxa 172.25.2.0/24 (Solsona) sigui reenviat al gateway 172.30.0.1, que es correspon amb la direcció IP del servidor a l'altre extrem del túnel (localip definida a /etc/pptpd.conf del server).
Finalment ja podem connectar al servidor executant la comanda pon pptp-solsona Per desconnectar, amb un poff tallem la connexió.
- Fi config costat client (Debian/Ubuntu)