Creació de túnels PPTP (Debian/dd-wrt/Mikrotik)

De Guifi.net - Wiki Català

Revisió de 19:26, 13 març 2012; Jfigueras (Discussió | contribucions)

(dif) ←Versió més antiga | Versió actual (dif) | Versió més nova→ (dif)

Creació d'un túnel PPTP entre un Server Debian/Ubuntu || dd-wrt i una RB750 de Mikrotik (Client) o Debian/Ubuntu (Client).

  1. 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

  1. 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

      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)

  1. Fi config costat servidor (Debian/Ubuntu)
  1. 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)

  1. Fi config servidor dd-wrt
  1. 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

  1. Fi config costat client (Mikrotik)
  1. 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ó.

  1. Fi config costat client (Debian/Ubuntu)
Eines de l'usuari