Tag Archives: computers

azure cli sdk

Un post mic cu hatereala. Ca astia de la Microsoft cred ca au un KPI pe undeva in care produs cu produs trebuie sa demonstreze un nivel variabil de retardare.

Eh, am avut de automatizat o chestie simpla: rotitul de certificate digitale pentru Entra Domain Services, au cum era cunoscut de mai demult: LDAP-ul din Azure AD.

Eh, te-ai astepta in era asta a cloud-ului sa existe pe undeva un API in care sa faci post la certificat/cheie si sa actualizeze lucrurile in spate. E, Microsoft in inteligenta lor n-au un API pentru asta, da in schimb au pentru toate pisaturile lumii.

Dupa multe cautari, am ajuns la azure-cli SDK, care ce sa vezi, e scris in Python. Zic mama m-am scos, fac doua trei call-uri acolo si aia e. Dar nu, ca iar, in inteligenta astora, nu poti apela o biblioteca direct – cel putin aia de AD. Nu, poti apela din Python un get_default_cli() la care ii pasezi o lista de argumente, ca si cum ai rula az (ca asa se cheama binarul) de mana, insa poti accesa rezultele din Python. Mno, zic hai ca aia e, macar pot s-o fac programatic cat de cat.

Repo-ul asta exista in PIP, si din ce-am gasit pe net, pip install az-cli ar rezolva problema. Si o rezolva, 872MB mai incolo. Ca downloadeaza absolut toate pachetele vietii. Vrei nu vrei, ai si management de containere, si baze de date si toate prostiile lumii de chestii de exista in Azure. Mai putin modulul de AD, care se instaleaza ca extensie separata… si dupa multe sapaturi, de fapt ruleaza in spate un pip install $ceva, ca nu stiu ce. Cum am aflat asta, pai intrebandu-ma de ce toate astea puse in Docker nasc un container de 1.4GB pentru a roti un certificat.

Si am zis sa optimizez lucrurile si sa sterg pip si ce-o mai fi dupa. Dar ce sa vezi, crapa pisatul, ca in aia 872MB nu are tot ce-i trebuie, are si pe langa dependinte. Ca vorba aia acu un hard disc e mega ieftin.

Anyway, 1.42GB sa rotesc un certificat… fmm Microsoft.

hpe idiocy

Una din firmele mele de idioti favorita este HPE. Ca da, dupa ce lucrezi mult in industria asta ai si firme favorite care’s pline de cretini ca stii la ce sa te astepti :)

Anyway. Cautam un update de firmware pentru un switch, si de candva de anul trecut nu mai este la liber portalul de unde downloadezi software. No biggie, facem cont, downloadam si uitam de el.

Sa nu faca lumea conturi aiurea, te pune sa validezi adresa de mail. Primesti mail, dai click pe link, adresa de email validata, te loghez in contul nou creat.

Ce crezi ca se intampla dupa ce te loghezi in nou cont? Pai te pune sa validezi adresa de mail. Cum? Pai iti dai un mail cu un link pe care sa dai click. Sa fie ei super siguri ca aia e adresa de mail. Ca validarea de la crearea contului nu era suficient de buna.

Trecem peste, tre sa scriu si date de firma. Cineva de la ei a vrut sa fie inteligent(a) si a zis “ba sa vezi jmecherie, tu scrii doar numele firmei si completam noi daca stim informatiile despre adresa, cod postal etc. si tu ne zici daca’s bune si le salvam”. Si fix asa a fost, au gasit adresa corporatiei, au autocompletat acolo lucuri si am dat Next. Am mai scris niste alte info, am dat Finish si a aparut o semi-eroare care trebuie remediata. Dau click pe link-ul spre eroare, si imi zice ca nu e bun codul postal pe care ei l-au pus acolo. Ca are caractere in plus. Pe care ei le-au pus acolo. Am corectat ce era de corectat si s-a inverzit campul ala. Semn ca e totul bine.

Intr-un final am ajuns la pagina de ma interesa, aia cu downloade de firmware. Am bagat PN la switch si primul rezultat e un firmware din 2014. Sortarea rezultatelor era “Most relevant”. Cum s-a gandit cineva ca un firmware vechi de aproape 10 ani e cel mai relevant rezultat…

Dar macar n-am fost dezamagit de cat de cretini au ramas. So yey! Cumva.

Lamulteani!

juniper ex & vmx

VMX

In lumea asta a virtualizarii, si producatorii de routere s-au apucat sa vand variantele virtuale ale produselor lor. Si cea mai simpla treaba e sa vinzi un router, ca acum in zilele noastre cu un procesor multicore poti plimba multe multe pachete dintr-o parte in alta si pana la cativa zeci de gigabiti nu ai neaparat nevoie de un ASIC dedicat pentru asta.

Din varii motive, imi place JUNOS si pe la ce clienti am mai instalat una alta, daca era si Juniper pe lista de producatori acceptati, le propuneam o solutie cu produsele lor. Din categoria oricum toata lumea pune Cisco, hai sa folosim si altceva similar.

Mno, acum cativa ani, a scos Juniper si varianta virtuala a routerelor MX pe care a botezat-o in mod foarte creativ VMX…

E. Toate bune si frumoase. Ideea la Juniper, dar cum e si la restul de producatori, presupune ca ai un “control card” si una sau mai multe “forwarding cards” si alea au ASIC-uri si ce trebuie, si control card-urile doar se ocupa de programare. Easy-peasy.

Ce-a zis Juniper: pai facem la fel, un routing engine si un line card pe care punem cate porturi o fi nevoie. Treaba cu Juniper e ca RE-ul ruleaza un FreeBSD modificat. Pentru line-card au zis ca pot folosi Linux + ceva modificari de la ei sa “mearga repede”.

Si daca vrei un router din asta virtual de la Juniper, tre sa pui doua masini virtuale: una cu FreeBSD si una cu Linux. Nu suna rau in teorie, insa in practica necesita destul de multe resurse. Da sa zicem ca iau un server dedicat pentru asta si aia e.

Din motive care insa imi scapa, Juniper s-a apucat sa foloseasca Windriver Linux, siii…. au inventat un soft care ruleaza intr-un super tight-loop care se ocupa de forwarding-ul de pachete. Si ai un sistem care e totul tipul cu CPU-urile in 100% fara absolut nici un motiv. Zici ca aia care au facut modulul vietii nu stiu ca Linux stie sa proceseze singur pachetele cat mai eficient posibil, nu trebuie sa ti-o arzi prostu cu “sunt pachete? sunt pachete? sunt pachete?” pe queue-urile de primire din kernel.

Si tot in inteligenta lor nemasurata, n-au inteles cum sa-si faca singuri update la JUNOS si daca vrei sa faci upgrade la o versiune noua procesul este interesant de simplu: faci backup la configuratie si la licente (ca logic ca e cu licenta, mai ales ca explica acolo ca e spre binele meu, cum sa nu…), reinstalezi masinile virtuale si re-aplici configuratia si licentele pe versiunea noua.

Da cred ca asta e pretul pe care-l platesti cand ai nevoie doar de 10-20Gbps de routare si nu vrei sa dai 50-60K EUR pe un router “hardware” cand poti scoate totul in 15K cu un server.

Da sa moara bibi, sa nu fii capabil sa faci doua OS-uri sa se updateze singure cu ceva gen snapshot-uri si alte nebuneli…

EX

Tot acum ceva ani, s-a apucat Juniper de facut si switch-uri, ca au auzit ei ca se saturase lumea de Cisco si vor niste switch-uri si mai scumpe. Asa s-a inventat linia de produse EX.

Anii au trecut si au evoluat si switch-urile. Si acum ai un switch care are pentru partea de control are un Linux de ruleaza niste VM-uri care contin softul care vorbeste cu ASIC-urile de pe porturile de switching. Inception modern. Teoria fiind ca atunci cand faci update de OS poti s-o faci online, doar cu o intrerupere minora de trafic. In practica nu prea merge ISSU/TISSU deloc. Dar banuiesc ca vroia si Juniper momentul lor de faima pe care l-a avut Cisco acum 20 de ani cand au inventat Online Insertion & Removal pe 7500, care invariabila rebuta routerul cand cand bagai un card nou. Si asa OIR s-a transformat in Online Insertion & Reboot. Asa si astia, 20 de ani mai tarziu nu poti face online upgrade…

In 2023 Linuxul pe care l-au pus astia pe post de OS este CentOS 6.2. Da, fix ala cu kernel 2.6.32. De nici internetul nu mai stie de el. Si astia se mai lauda ca au si divizii care fac produse de securitate…

De cretinatatea asta cu EX nu vroiam sa scriu, dar m-au scos din minti ca am incercat sa instalez versiunea de OS recomandata de ei pe site, si dupa reboot s-a pisat cu bolta pe mine qemu de pe host ca nus’ce segmente nu ajung nu stiu unde si a durat o vesnicie sa copiez versiunea anterioara de software la 10kB/s prin SCP ca stateau procesoarele in 100% ca au muit virtualizarea. Si sa copiezi aproape 700MB cu 10kB… dureaza ceva.

Cam asa mi-am petrecut un weekend din Ianuarie intr-un datacenter. Macar era mai cald acolo decat afara si am facut un pic de economie la gaze ca am oprit centrala cat am fost plecat :))

Morala povestii e ca nu trebuie avut nici un fel de increde in firme din astea care’s obisnuite sa vanda cutii sa se prieapa la lucruri un pic mai complicate gen virtualizare sau similar.

wi-fi design

In ultima vreme mi-am tot batut capul cu retele WiFi ceva mai mult decat in mod obisnuit, asa ca m-am gandit sa scriu aci’ ce si cum.

In primul rand, la WiFi conteaza foarte mult cum e facuta incinta unde trebuie instalat, tipuri de pereti, grinzi, stalpi etc. Si dupa aia conteaza clientii care se vor conecta.

WiFi (actual) functioneaza in 2.4Ghz si 5Ghz. Care 2.4/5 suporta diverse standarde: a, b, g, n, ac, ax. Un alt aspect super important de stiut si de tinut minte e ca WiFi este shared medium, adica doar un client transmite o data la un AP si restul de clienti asteapta sa termine ca sa poata zice si ei ceva.

2.4 are o raza de acoperire mai mare, 5Ghz are in schimb o viteza teoretica mai mare. Asta ca si diferente majore. Semnalul scade la 1/4 cu cat se dubleaza distanta. Adica sa zicem ca daca la 20m de AP ai semnal 100%, la 40m de AP vei avea 25%.

Nu stiu cat de bine se vede in poza, dar ar trebui sa fie un gradient pe culorile alea.

In functie de puterea semnalului poti transmite/receptiona date la o anumita viteza (da, logic de altfel) insa este important de stiut si ca daca ai multi clienti prea departe de AP, viteaza overall o sa scada din cauza de retransmisii care apar atunci cand mesajele de la client ajung corupte la AP.

Este foarte important de stiut ce inseamna “prea departe de AP” ca este un pic tricky, ca sa zic asa: clientul poate indica ca are “semnal” si ca este asociat cu un AP, cand de fapt nu prea este asa. Asta se intampla din cauza ca un AP are putere de transmisie mult mai mare decat o tableta sau un telefon, insa tableta/telefonul sa nu poata transmite cu suficient putere ca sa ajunga frame-urile corect la AP. Si atunci ajungi intr-o situatie din aia in care “semnal e” da nu merge nimic.

Cand ai de pus o solutie WiFi de la 0, intrebarea pe care o pune toata lumea e: cate AP-uri trebuie? Si raspunsul e ca “trebuie vazut la fata locului”. In primul rand pentru a vedea cum arata incinta, din ce sunt facuti peretii, daca exista obstacole care pot impiedica propagarea cum trebuie sa semnalului radio: coloane de apa, armaturi de beton etc.

Fiecare producator de chipset-uri wireless implementeaza standardele mai bine sau mai prost, in functie de cu cati bani vinde jucaria. Multi folosesc chipset-uri comeciale si implementeaza ei in soft diferite functionalitati. La fel, calitatea antenelor de pe dispozitivele mobile variaza foarte mult, si asta inseamna ca si capabilitatile wireless variaza considerabil.

Avand asta in vedere, inainte sa te apuci sa pui AP-uri dupa cum te taie capul e bine sa vezi care dispozitiv dintre toate cele care vor fi folosite intr-o retea wireless e “cel mai prost” in sensul de a verifica care este distanta maxima de AP astfel incat sa functioneze in parametri (streaming 1080p de pe Youtube, FaceTime, Skype video-call etc.), ca cineva sa-si faca treaba folosind acelasi dispozitiv.

Motivul e ca, desi standardele wireless specifica viteze de transmisie, capabilitati, cati clienti pot receptiona date in acelasi timp de la AP si altele, nu trebuie pierdut din vedere faptul ca dispozitivul mobil e ala care dicteaza cum sta treaba. Asa zice la standard: clientul decide ce si cum.

Primul si primul lucru pe care-l faci e sa faci un asa numit “site survey” sa vezi cum arata locatia, ce obstacole exista (am zis mai devreme de ele) sau unde se pot monta AP-urile. Dupa aia afli care e densitatea de dispozitive pe supfrafata, ce vor face dispozitivele respective, cat de mobile trebuie sa fie, cate de repede se misca etc.

De la un switch la un AP, pe PoE nu e bine sa sari, pe experimentatelea, mai mult de vreo 90 de metri. Si asa afli cate switch-uri iti trebuie pe o suprafata anume, ca nu poti trage cabluri direct intre AP si switch, ci trebuie sa le si legi de ceva, sa le ascunzi, sa urmaresti anumite contururi etc.

Ultimul pas este montarea de proba a unui AP intr-un loc si facut teste de viteza, semnal cu toate dispozitivele care vor fi folosite. Treaba asta se face pentru a determina care este cel mai mic numitor comun, pentru ca in functie de acela depinde tot designul si implementarea ulterioara.

O data aflate aceste informatii, se incepe a se socoti care este raza de acoperire a unui AP. Pentru ca de obicei semnalul radio se propaga aproape uniform (fiecare producator in fisele de catalog ale produselor are si niste poze care arata cum se propaga semnalul) in toate directiile, vom incerca sa aflam raza cercului care are AP-ul in mijloc. 

Stim din triunghiurile de mai sus la ce inaltime avem AP-ul, stim distanta maxima pana la cel mai “prost dispozitiv”.

Problema e ca lumea se asteapta sa le mearga WiFi-ul mereu cand se afla intr-o locatie, asa ca nu poti face un design curat fara interferente ca o sa existe puncte moarte unde nu e semnal. Solutia la treaba asta e sa pui AP-urile in asa fel incat sa se “intrepatrunda” semnlul de la AP-urile adiacente.

In 5GHz, asta nu prea e o probelma pentru ca exista multe canale, separate la 20Mhz intre ele si e totul OK. Si merge cam pentru aproape toate tipurile de comunicatii. Cand ai nevoie de throughput mai mare, se poate mari canalul la 40MHz sau 80Mhz, insa vor fi disponibile mult mai putine canale. E pe principiul “you can’t have your cake and it too”.

In 2.4GHz, situatia e super trista, ca desi exista 13 canale, doar 3 sunt utilizabile in sensul ca nu se incaleca unul pe altul. O explicatie buna se gaseste la http://www.metageek.com/training/resources/why-channels-1-6-11.html. Tot la Metageek exista o explicatie super buna de ce nu e bine sa lasi toate canalele libere si de ce e mai rau “adjacent channel interference” e mult mai nasoala decat “co-channel interference”: http://www.metageek.com/training/resources/adjacent-channel-congestion.html. Ca tot am ajuns la Metageek, cam tot ce scrie acolo e bine de citit.

In 5Ghz in principiu sunt mai multe canale, in practica din cauza de DFS poti avea mai putine daca esti aproape de instalatii de emit in frecventele alea (gen esti relativ aproape de un aeroport).

Mare parte din acest post este scrisa in 2017, cand exista doar cred AC Wave 2. Intre timp m-am mai desteptat un pic si am bunghit-o si cum arata semnalul printre foarte multe rafturi metalice, si cum e cand ai dispozitive care nu’s foarte inteligente la selectia frecventelor.

wifi lipit cu scotch

Din categoria “ne trebuia ieri niste wireless intr-un loc” am ajuns eu oarecum de pe o zi pe alta in Mexic.

Cu toata distractia asta cu lipsa chip-urilor, comanzi chestii profesionale acum si vin peste un an. Dar business-ul nu poate sta un an pe loc, asa ca temporar improvizam. Lipim cu scotch, niste soricei, un pic de var proaspat, facem sa fie bine.

Mno, planul era simplu: pune niste routere din astea de casa in mod AP, acelasi SSID, micsorez puterea de transmisie sa nu fie prea mult zgomot si ar trebui sa mearga. Am cumparat doua de proba, le-am facut asa, m-am conectat la wireless pe SSID-ul care trebuie si a mers. 5 ore de condus in oras, o ora de configurat si 10 minute de testat. Si inca vreo 4 ore de injurat Digi ca dau routere cu porturi care desi au link, n-au internet. Ca asa am ajuns sa testez la birou, dupa ce mi-am pierdut mintile un pic cu Digi.

Anyway, am validat astea, am mai pierdut o zi de alergat prin oras la cumparat multe rutere din astea, ca fiecare magazin avea 2 pe stoc. N-am gasit cate imi trebuiau, am comandat cu livrare imediata de pe emag. Au venit, m-am bucurat, le-am impachetat si m-am tirat peste balta.

Acolo le-am configurat pe toate in mod AP si am asteptat dupa electricieni sa traga curent pe unde trebuiau astea puse. Ca precum si in US, si in MX curentul trebuie tras prin tevi zincate si dureaza un pic procesul.

Intr-un final, dupa ce am ajuns eu inapoi in RO a venit si curentul. Da’ a venit asa fix la 12 noaptea cand ajunsesem acasa de la aeroport si ma pregateam sa dorm dupa o zi jumate pe drum si destul de neodihnit. Cum am aflat? Ca nu mai merge wireless-ul pe SSID-ul ala la nimeni si ca productia oprita.

Fix ce-mi doream la ora aia, sa fac troubleshooting la wireless remote la 10k de km distanta. Cam atatia sunt, ca data trecuta mi-am lasat cheile acasa si asa zicea Find My, ca sunt cheile la zece mii si ceva de kilometri.

Am facut troubleshooting foarte rapid: cutia cu sigurante pentru noile circuite e “acolo”, opriti-le pe toate si vorbim in alta zi. Si m-am culcat.

Zilele astea am revenit la problema, pornit tot, si depanat cu astia intreband cat mai tinem productia jos. Aci se aplica treaba aia cu cum ca in teorie nu e nici o diferenta intre teorie si practica, insa in practica e diferenta intre teorie si practica. Mai ales ca n-avea nici un sens ce se intampla, asteptarile mele fiind ca reconectarea la diverse routere dura mai mult, ca nu stiau astea de Mesh si trebuia o reasociere completa. Dar nu sa ii dau drumul si sa nu mai mearga nimic.

O iau asa din bucata in bucata, pana ajung la ce trafic am pe interfete si ce vad:

  5 minute input rate 70756000 bits/sec, 76505 packets/sec
  5 minute output rate 151688000 bits/sec, 176875 packets/sec

Ma zic n-are cum, ca deja e mai mult trafic pe aci decat am internet, mai ales ca dispozitivele alea de trebuie sa fie conectate la WiFi consuma cativa kilobytes la cateva secunde. Initial m-am gandit la un loop, da zic ba n-are cum, ca’s toate doar niste AP-uri, n-are de unde sa fie loop. Dupa m-am gandit ca poate or face astia ceva de la TP-Link si dau pe WiFi si trafic de n-ar trebui sa fie pe WiFi, ca in ultima vreme toata lumea are idei despre ce capabilitati sa mai puna pe routere. Da nu explica de ce pierdeam conexiunea cu interfata de management.

Dupa un pic de butonat am aflat cum sa fac un tcpdump pe switch, si ce vad:

    2   0.000034  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    3   0.000049  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    4   0.000064  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    5   0.000079  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    6   0.000094  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    7   0.000116  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    8   0.000139  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
    9   0.000290  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   10   0.000311  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   11   0.000327  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   12   0.000351  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   13   0.000376  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   14   0.000398  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   15   0.000422  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   16   0.000449  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   17   0.000539  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   18   0.000562  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   19   0.000577  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774
   20   0.000591  31.13.89.19 -> 10.200.13.199 TCP 66 [TCP Out-Of-Order] 80 -> 34834 [FIN, ACK] Seq=1 Ack=1 Win=256 Len=0 TSval=578835951 TSecr=1605084774

Si asta pentru un dispozitiv care se dezasociase mai face routerul unul, ca sigur sursa nu trimitea atatea pachete. Parea un fel de monkey see, monkey repeat ad infinitum.

Iar le-am zis sa opreasca jucariile din sigurante ca trebuie sa gandesc un pic.

M-am gandit vreo zi asa, si zic hai sa vad daca le pun la loc in router mode. Pierd un pic de vizibilitate de cine ce IP isi ia, da zic ca poate merge. Problema era cu pornitul, ca am cerut sigurante pentru fiecare router individual, dar electricienii s-au gandit mai bine si au tras niste circuite paralele pentru fiecare rand si din 20 de sigurante am ramas cu vreo 4. Daca porneam 5 o data, in vreo 2-3 minute se bloca totul, nici n-aveam timp sa dau Save & Apply la vreo setare.

Plan B: oprim totate routerele din buton si le pornim pe rand. M-au injurat un pic oamenii, ca distanta mare, alea un pic sus. S-au plimbat cu scara de s-au plictisit.

Pornit primul, schimbat in mod router, reboot, trafic normal. Pornit al doilea, schimbat, trafic normal.

Dupa aia ne-normal, ca se ridicau alte interfete pe switch decat ce m-asteptam eu. Zic ma ce sloboz, de unde sunt astea? Cer o poza de la switch si ce sa vezi, cineva a modificat cablurile din switch si din cum le lasasem eu configurate porturile in VLAN-urile care trebuie, cineva s-a gandit si-a zis probabil ca “cine ti-a lucrat aci sefu de ti-a pus toate cablurile pe un rand? Pe doua randuri se face treaba, ia sa vezi aici lucrare”. Da-i si reconfigureaxa si porturi, ca n-o mai facusem de mult…

Faza interesanta a fost ca daca aveam unul singur pus in mod AP, nu facea nimic iesit din comun. Doar cand erau mai multe o luau pe ulei. Si de aia cand le conectam pe rand la retea sa le configurez nu se intampla nimic.

Sase ore mai tarziu era toata lumea fericita. Chiar si baiatul cu scara :))

Morala povestii e ca uneori lucrurile care par simple nu’s.

macbook air m2

De cand a aparut Macbook Air cu ecran calumea, gen Retina, m-am tot gandit ca ar fi cazul sa trec la Air, ca mi-am cam schimbat asa profilul cu ce fac, si nu mai am nevoie de cine stie ce super laptop, ca acum in mare parte imi petrec timpul in Terminal si in browser. Pe Macbook Pro-ul curent am avut o singura masina virtuala cu Windows si aia din cauza ca aia de la CheckPoint nu stiu sa faca o interfata web care sa inlocuiasca clientul lor de desktop. Si niste linucsi cu care am avut de experimentat anul trecut pe la inceput un pic, care insa mergeau pusi si undeva intr-un cloud sau ceva.

Si m-am tot gandit, intre timp a lansat Apple M1, si m-am tot gandit, da am zis ca sa vedem, ca abia luasem laptopul curent si era complet retardat sa-l schimb dupa un an.

Intre timp se anuntase M1 Max, si pentru un moment m-am gandit ca poate as putea sa imi iau alt Macbook Pro. Da am apucat sa le vad pe alea de 14″ si am zis ca “neah, no way”, prea greu si masiv asa fara nici un motiv.

Dupa aia am uitat un pic, si mi-am adus aminte cand au anuntat astia M2 si am vazut si noul design de Air. Si la vreo cre’ca doua saptamani dupa a aparut si la iStyle si m-am dus sa vad cum se simte in mana, cum arata tastele… chestii d’astea de UX. Si mi-a placut. Chiar mi-a placut.

Dupa am mai asteptat un pic sa vad ce zic review-urile. Ocazie cu care mi-am dat seama ca am imbatranit ca am ajuns sa ma uit pe YouTube la filme cu tot felul de oameni de au opinii mai mult sau mai putin profesionale despre noul Air.

Primele revire-uri n-au fost interesante ca toti cumparau modelul cel mai ieftin, asa numitul “base model”, care era un pic incet. La vreo luna dupa au aparut si aia cu bani care au prezentat si modelele cu mai multe core-uri si mai multa memorie si cu SSD mai mare.

Dupa am avut o perioada in care a durat ceva pana sa inteleg ce inseamna ca se incalzeste, ca titlurile pe la articole erau ceva de genul ca noul Air se incinge tare si dupa face throttling la procesor si tot asa. Cu asta m-am lamurit cand am aflat ca se incinge foarte tare cand ii dai in gura cu chestii foarte CPU/GPU intensive, gen exportat mai multe stream-uri de video la 4k/8K.

Ala a fost momentul in care am zis bine, deci jumate de review-uri sunt facute de cretini.

Intr-un final m-am dus la Apple pe site sa pun comanda si cam doua saptamani mai tarziu a fost livrat la un Apple Store. M-am dus frumusel sa-l ridic, mi-au dat astia o posetica la el si mi-am pus la subrat si m-am dus sa-l despachetez. Mi-am facut si un selfie cu posetica aia, da n-o sa-l fac public :))

Da, obviously, trebuia sa fie si o cafea de specialitate langa laptop cand i-am facut poza, ca altfel vine Apple si mi-l ia inapoi ca nu’s destul de hipster.

Primele impresii sunt mega pozitive:

  • Tine bateria maxim de mult. Ieri am avut un call pe Slack de o ora si inca unul pe Google Meet de vreo 30-40 de minute, si cand am terminat cu ambele aveam 99% baterie.
  • Este super fasnet, nu-mi vine sa cred ce repede pornesc chestiile scrie in Java, gen IDE-urile de la JetBrains.
  • Nu se incalzeste. Adica cum il folosesc eu: niste terminal + multe browsere cu multe tab-uri.
  • E usor. Are 1.2kg si comparativ cu vechiul MacBook Pro la 1.36 se simte un pic diferenta in minus de greutate.
  • Forma asta de acum, il face sa se simta super misto in mana. e ca o bucata super usoara de aluminiu.
  • De cand il folosesc in mod curent (cred ca se face o saptamanain curand) l-am incarcat peste noapte si ziua nici nu a trebuit sa ma gandesc la incarcator. Cel mai descarcat am ajuns cu el acasa pe la cred 65%-70% baterie dupa o zi de treaba.

Ce n-am testat pana acum este un adaptor USB-to-Serial. Daca merge si ala, sunt mai bine decat bine cu laptop-ul. Nu e nici o mare tragedie daca nu merge, dar ar fi frumos sa.

Mai am de migrat niste date, dar overall e fix ce-mi doream de nu stiu cati ani de la un laptop ultraportabil: sa tina bateria toata ziua la fel cum tine la telefon si noaptea sa-l pun la incarcat.

jocul d’a securitatea in IT

De cand mi-o ard prin IT-ul asta, mare parte din timp mi-am petrecut-o si mi-o petrec in ceea ce lumea numeste cybersecurity, sau cum au tradus prostii aia de la academia rromana sau ceva: securitatea cibernetica.

Distractia asta e cam asa: tu ca si firma pui pe internet niste jucarii si niste baieti si/sau fete incearca sa-ti strice jucariile. Si pentru asta iti pui firewall-uri, antivirusi (antimalware acu), WAF-uri, IPS-uri, anti-zloboz etc. Si dupa aia te lauzi peste tot ce ce sigur esti :))

Din cand in cand mai apare prin presa ca o mai suge pana la cotor cate o firma din asta de e tare in gura pe security. Gen Microsoft, Solarwinds, Okta etc. Si multe alte firme mai mici.

Pe langa astia, sunt tot felul de alti omuleti care ar vrea ca aia de le-au dat-o astora sa infunde puscaria, ca nu e frumos ce-au facut, ca nu este legal, ca e furt, ca morti si raniti.

Opinia mea e ca in toata distractia cu cybersecurity, aia de reusesc sa sparga una alta si sa obtina informatii ar trebui premiati din oficiu. Ca sunt mai destepti decat aia de au programat sau configurat prost sisteme. Necesita mai multa inteligenta sa dai in cap la un sistem fara nici un fel de cunosinte despre el decat e sa-l configurezi prost cu toate informatiile despre el.

Si niste carnati isi doresc ca astia sa intre la parnaie. Ca si cum daca pierzi un joc de StarCraft online sa vina militia sa-l aresteze pe ala de te-a facut din butoane.

Asta e primul of cu starea industriei, ca de fapt toata lumea cumpara si sper sa fie bine, da nimeni nu vrea sa depuna efortul ala sa faci lucrurile ca la carte. Cum era acum multi ani, cand au zis aia de la BNR ca poti avea internet banking, o cerinta era ca fie dai bani la o firma sa faca “code audit” pe aplicatie sau sa-ti pui un WAF, ca sa asiguri cumva securitatea datelor. Cre’ca toate bancile si-au pus WAF, au bifat cerinta si si-au vazut in continuare de aplicatiile lor de cacat de internet banking – pentru cine e suficient de batran sa-si aminteasca ce oribile erau site-urile alea. Si exemplele pot continua.

Al doilea of pe care-l am, e cu “initiativa” diverselor companii de software cu notiunea de “responsible disclosure”. Adica gasesti o vulnerabilitate, o raportezi doar lor, si astepti cuminte s-o fixeze cand au ei chef si dupa faceti un fel de “press release” comun in care tu cercetator iti asumi creditul ca ai gasit problema si aia ca uite, au rezolvat-o ca’s baieti buni.

Eu cred ca daca erau baieti buni nu scriau cod prost. Si ca imediat cum gasesti o vulnerabilitate s-o dai la liber sa foloseasca fiecare cum doreste informatia respectiva. Si atunci sa vedem daca firmele astea sunt bune si scot imediat un fix sau ii doare la banana si doar plang ca li s-a stricat planning-ul ca uite, acum trebuie sa fixeze ceva ce au facut prost de la inceput. Si ca din cauza cercetatorilor pot sa sufere clientii – alt text care-mi place maxim cand e folosit de lenesi.

certes networks

Articolul asta a iesit asa ca din motive contractuale cu un client, a trebuit sa particip la un “training” pentru un produs. Il scriu pentru ca am asa o ura maxima pe training-uri tinute de vestici. Trebuia sa-l public acu vreo doi ani, dar m-am luat cu altele si am uitat. Da’ noroc ca mi-am luat notite atunci si am scris o mare parte din el.

Asa, Certes astia produc niste cutii de fac criptare la L2, L3 si L4.

L2 inseamna ca fac un mesh asa intre doua mai multe locatii si dupa proxy arp pentru host-urile remote. Un fel de overlay transport network. Intre ele, pe partea “unsecure” fac IPsec stateless intre ele cu manual keying, fara IKE.

L3 e IPsec tot asa stateless, ca si cum ti-ai scrie singuri reguli cu “ip xfrm”, ceea ce banuiesc foarte tare ca fac, ca appliance-urile lor ruleaza Linux.

L4 inseamna ca fac criptare doar la payload in pachete si restul de lucruri sunt in clar. Si fiind iar stateless, poti sa-l rulezi transparent in retea si sa cripteze fara sa-ti bati capul cu ce e mai jos, ca nu trimiti nimic non-standard pe fir.

Solutia de management se cheama CFNC, si e un CentOS6 cu un softache facut in Java si cu interfata din aia HTML old-school.

In asta adaugi toate dispozitivele, si dupa aia faci reguli intre ele, gen vreau criptate doar traficul pe portul 25 intre host-ul X si host-ul Y (ca si idee de granularitate) sau traficul intre subnetul Q si subnetul W, fiecare in spatele la cate un dispozitiv din asta de criptare care se cheama CEP.

E, si fiecare politica din asta are o prioritate, adica 1 e aia cea mai ce si 65535 e aia cea mai putin ce. Daca ai multe CEP-uri din astea si un design prost de retea, poti sa ajungi usor sa ai cateva zeci de mii de politici.

Asa, ce m-a secat maxim in curs a fost marketingul agresiv in care prezentau capabilitatile solutiei:

  • Performance drops when you start doing crypto. Firewalls were not created with crypto in mind.
  • Same with SD-WAN, encryption costs and performance drops significantly
  • At Layer3 to debug the network you have to turn off encryption and it is difficult to set up
  • Key rotation often manual. Very difficult to manage.

Am clipit mai mult decat trebuia la ce tot debita baiatul ala de tinea trainingul. Si mai avea si un tick verbal in care alterna intre “obviously” si “kind of”.

Ce m-a agravat maxim e ca folosea “weasel words” sa arate ce tare e produsul lor. Mor pe astia care mint asa in dusmanie.

La un moment dat prezenta el o topologie in care punea firewall inainte de cutia lor si firewall dupa, ca sa fii super-duper safe. Desi cutia lor stia de unde sa accepte trafic si sa blocheze restul. Sunt curios cati pun botul la exemplele astea cretine de topologii.

Au fost asa super amuzanti intr-un mod retardat, ca au trimis clientului niste CEP-uri din astea configurate prost si ca sa le reparam on-site, m-au pus sa semnez un NDA ca sa-mi dea o imagine de stick USB bootabila care continea un utilitar basit sa modific ceva in hardware si cu o procedura din aia mega alambicata. Si in timp ce citeam la ea, cum ca trebuie sa ma conectez cu seriala, sa dau reboot, sa bag stickul in portul nustiucare, sa ma fut in cur cu negri si sa fac tumbe, mi-am dat seama ca merge cacatul ala si online, pe SSH si dupa doar trebuie un reboot si gata. Si in loc sa mor de frig in datacenter si sa apas taste aiurea, a durat fix 2min pe dispozitiv sa-l repar plus vreo alte 3 minute pana se reboota sistemul. Cateodata am impresia ca nici aia de fac echipamente nu prea inteleg cum functioneaza creatiile lor.

Da a fost clientul super mega secure dupa? A fost. Cu cea mai criptare din lume.

Abia astept sa gasesc urmatorul client sa caute un specialist in Certes :)))))

ios-xe port channels & switchports

Am avut prin August un mic proiect sa bag niste Layer 2 peste balta la un client. In general, daca nu am constrangeri, folosesc Juniper pe switch-uri managed L2/L3 din motive de obisnuinta, familiaritate etc.

Anul asta, din cauza de pandemie si timpi de livrare mari, peste 4 luni in medie, am pus niste Cisco Catalyst cu IOS-XE.

Mno, pentru redundanta & stuff, sunt mare fan bundle-uri de X x 1GE sau X x 10GE (in functie de nevoi & stuff).

Pe Juniper, la modul cel mai simplu, un port channel se cheama o interfata ae (aggregated ethernet) si se configureaza in doi pasi.

Prima oara ii zici la interfata fizica din ce port-channel face parte:

ge-0/0/0 {
    description "to xyz vmnic0";
    ether-options {
        802.3ad ae1;
    }
}

ge-1/0/0 {
    description "to xyz vmnic1";
    ether-options {
        802.3ad ae1;
    }
}

Si dupa configurezi si interfata de port channel:

description "to xyz";
mtu 9216;
unit 0 {
    family ethernet-switching {
        interface-mode trunk;
        vlan {
            members [ v101, v121 ];
        }
    }
}

Easy peasy lemon squeezy.

Cu Cisco nu prea am avut treaba in ultimii ani, si am zis ca hei, trebuie sa fie la fel din ce mai tineam eu minte de and era la moda sa fac PAgP pe IOS clasic.

E, e cam la fel si pe IOS-XE. La nivel de interfata ii zici:

interface TenGigabitEthernet1/1/3
 channel-protocol lacp
 channel-group 1 mode active
 lacp rate fast
!
interface TenGigabitEthernet1/1/4
 channel-protocol lacp
 channel-group 1 mode active
 lacp rate fast
!

Si dupa configurezi interfata PortChannel1

interface Port-channel1
 switchport trunk allowed vlan 101-121
 switchport mode trunk
!

E, si te astepti ca la un “sh ru” sa vezi prin configuratie fix acelasi lucru.

Dar nu, IOS-XE e cu “surprise motherfucker”, si zice asa:

interface Port-channel1
 switchport trunk allowed vlan 101-121
 switchport mode trunk
!
interface TenGigabitEthernet1/1/3
 switchport trunk allowed vlan 101-121
 switchport mode trunk
 channel-protocol lacp
 channel-group 1 mode active
 lacp rate fast
!
interface TenGigabitEthernet1/1/4
 switchport trunk allowed vlan 101-121
 switchport mode trunk
 channel-protocol lacp
 channel-group 1 mode active
 lacp rate fast
!

Cand am vazut asta, zic ma oi fi fost io obosit si am scris gresit, si am bagat configuratia si la interfata si la port channel. Si m-am mancat in cur sa “repar” de la distanta treaba asta. Si am sters configuratie de switchport si trunk de pe te/1/1/3. N-a fost chiar cea mai buna idee a mea.

Dupa ce am reparat printr-o sesiune de TeamViewer problema, in sensul ca am facut de la zero toata configuratie de port channel, m-am dus sa ma culc ca se facuse tarziu la mine.

Fast forward vreo 2-3 saptamani, iar a trebuit sa umblu un pic la switch-uri sa mai adaug ceva VLAN-uri, si bam, iar configuratie de switchport pe interfetele din port chanel. Si eram, ba da am sters si-am pus la loc. Ce mortii ma-sii se intampla. Si atunci mi s-a aprins un pic beculetu, si zic ia sa vad daca adaug un VLAN pe interfata de port channel, se pune si in configuratie la interfetele care formeaza port channel-ul?

Raspunsul e da. Si uite asa am invatat eu ca IOS-XE mirroreaza configuratia de pe PortChanel pe interfetele prinse in port chanel.

Nu e mare inginerie treaba asta cu un port channel intre 2 switch-uri, dar lucrurile par complicate cand nu prea ai parte de experienta pe niste echipamente si lucrezi cu ele doar din joi in pasti. Exista si un termen sa zicem stiintific pentru asta: skill fade. Si problema e ca ti se pare ca stii, da de fapt nu prea :(