miercuri, 21 ianuarie 2015

Tunel IPsec & why I'm too old for this sh*t

In opinia mea exista o varsta dupa care nu este indicat sa mai faci "tunele". De ce?
"Tunelul" (orice fel de tehnologie, nu conteaza) implica un task/proiect care are, cel putin 1 data, o faza de "la mine merge, problema e la tine" (in cazul special al "tunelelor ipsec", aceasta se intampla de mult mai multe ori decat 1 data...). Ergo, I'm too old for this sh*t.
Un caz real, ultimul dintr-un istoric lung de astfel de interactiuni (pe durata carierei mele), va fi povestit in cele ce urmeaza.

Niste unii trebuie sa acceseze o resursa interna. Bineinteles ca vrei sa limitezi accesul la plaja de resurse interne si in acelasi timp sa ai un minim de control asupra comunicatiei (care trebuie sa fie si criptata, datele fiind sensibile in unele cazuri). Bun, veti spune, e zona propice sa inseram un cuvant care denumeste tehnologia ca si solutie in aceste tipuri de cazuri : tunelul.
In acest caz special, premisa era ca totul va merge "din prima" din 2 motive :
1. am facut asta de mult prea multe ori
2. oamenii ceilalti aveau experienta (cel putin declarativa) cu tehnologia asta (si variatiunea (adica, IPSec) a fost aleasa chiar de ei, pentru ca "deja avem N tunele de acest fel")
3. initierea "proiectului" a inceput cu un email care continea configul folosit de ei in situatii similare (copy&paste, engage!)

De ce nu ar fi mers "din prima" / "simplu" si "rapid" :
1. inca caut sysadmin (suplinesc acest rol in acest moment)
2. vorbim despre "tunel" (vezi primul si al 2-lea paragraf)

Bun.
Am primit emailul initiator, am facut copy&paste-ul de rigoare, am pornit ipsec. Succes - nimic gresit in loguri (ba mai mult, zicea ca merge), "ipsec status" zice ca e up&running, testez din capatul de tunel si raspunde IP-ul de test din capatul celalalt (via tunnel - discutam aici de clase private, in ambele parti, routate prin tunel - nu avea cum sa mearga _decat_ prin tunel).
Wow, cool! Merge din prima! Raspund mailului, tunelul e up, case closed.

But wait. Vine primul raspuns - "la noi nu se ridica tunelul". Wait, what?
Tunel = o gaura / canal prin pamant, cu 2 capete; teoretic, daca bagi ceva prin tunel (like, tren) si iese prin capatul celalalt si apoi il intorci prin tunel si ajunge in "gara initiala", tunelul merge, right? Nu exista "capatul nostru e down". Adica, cum? Ca la mine a ajuns "trenul"! Prin tunel!

Si de aici incepe circul tunelului, asa cum il stiu, il stii si il stim :
- verificare versiune software
- discutii despre filtrarea din firewalls
- de ce e bine sa nu-ti dai cu parerea despre ce ar putea (sau nu ar putea sa aiba) celalalt in retea
- contrarieri despre cum se fac testele
- schimbari (nenumarate) in config
- "va dau acces teamviewer pe masina mea, sa va uitati daca e ceva gresit" <- huh?

- trimis set de date, primit raspuns la cu totul altceva
- intrebari scurte si la obiect, raspunsuri "pe campii"
- insistente de a discuta "telefonic" (*)
- "cu altii merge, acelasi config"
- diferente de sintaxa
- "nu putem da jos doar capatul vostru de tunel" & "nu putem da jos toti clientii conectati" => wtf?
- "nu se poate ridica tunelul doar din capatul nostru?"
- etc
Invariabil, cineva cedeaza. Ca de obicei, eu. Si pun capat balamucului - "am investit destul timp intr-o solutie care se pare ca nu ni se potriveste" - traducere : nu stiti sa va setati porcaria pe care ati cerut-o tot voi, hai sa vedem daca putem face altceva.
Si trece ceva timp. Eu stiu ca asta nu e sfarsitul - niciodata nu e sfarsitul.
Suna "seful" din partea cealalta, cateva zile mai tarziu (v-am spus ca nu e sfarsitul, nu?). "Daca ati putea sa discutati cu noi 20 minute, se rezolva cu siguranta". Nu am 20 minute full pe care sa le petrec, legate, discutand despre ... <bleah> ... un tunel. "Ok, am inteles, revenim noi cu o alta solutie".
Cateva zile mai tarziu (doar nu credeati ca s-a terminat, nu?) vine un email (NB : niciodata un email intr-un thread de emails legate de un "tunel" nu vine singur - vine cu alaiul de calls & missed_calls din jur) cum ca au ajustat $stuff si acum mai trebuie sa schimbam "doar ceva" (in email exista un text de cateva zeci de randuri cu configuri, diferente, markup rosu, concluzii, todos, unde e problema/vina si ce trebuie sa facem noi ca sa mearga - NB : la mine merge din emailul no. 1).
Ok, schimbam acel "doar ceva". Tunelul se comporta la fel, "la mine merge" (toate testele sunt trecute si outputul este frumos impachetat, ca de fiecare data (ca sa ma creada lumea) in email si trimis).
"Tot nu se ridica capatul nostru".
Mai trec zile, mailuri, telefoane (unele cu ton plangacios - "sper ca nu aveti ceva cu mine" like self-flagellation "I have mamma issues" type of stuff). Tunelul e tot acolo, cu ambele lui capete, cu trenul care circula din ambele parti si cu gara din partea cealalta care spune ca nu a vazut trenul niciodata si doar a auzi povesti cum ca ar exista un tren, un tunel si-o gaura.

Sumar :
- start -> $now = 2 saptamani (and counting)
- telefoane pe aceasta tema : ~20 (din care missed vreo 15)
- emailuri in thread(s) (pentru ca "gaura din capatul celalalt de tunel" a rupt threadul la un moment dat (are acelasi subiect insa)) : 45 (and counting)
- clase IP routate prin tunel (incercari) pana in acest moment : 3 * /24, 2 * /32, 1 * /16
- status tunel : LA MINE MERGE

(*) Urasc :
- sa mi se raspunda in "conversatii" folosind un alt mediu decat cel pe care a fost initiat (adica : daca-mi scrii un email, nu ma suni sa-ti raspund la acel email)
- sa folosesc metode de comunicare sincrona (telefon, par example) ; timpul este limitat, planningul nu functioneaza daca poate orice "gaura de tunel" sa te intrerupa oricand
- sa fac TUNELE