Tag Archives: linux

ipv6 & ipsec & bugs

Mai anul trecut la inceput de vara ma jucam io in niste masini virtuale cu Layer2 peste Layer3 in Linux. Anul asta am gasit un client unde sa bag jucaria in productie sa vad ca toate treburile merg cum trebuie si pe bune :)

Eh, pentru ca atunci cand ai optiuni multe iti vin idei, am zis ce-ar fi daca intre 2 gateway-uri de VPN as face io conexiunea pe IPV6 in loc de IPv4, ca e bine sa fim pregatiti de viitor :))

Am pus io doua CentOS 7, configurat interfete & shit, am pus libreswan, am facut un tunel IPSec si am dat ping6 intre cele doua masini si a mers jucaria (tcpdump zicea ca vede ESP pe fir).

Ca oricem om prevazator, zic sa dau reboot ca poate am uitat sa configurez ceva sa porneasc la boot si daca ramai fara curent sau s-o panica kernelul de singuratate, sa mearga treaba cand dai restart de la buton.

Si dau io restart si evident ca pula tunel. ipsec status zicea ca e in CONNECTING, da nici in loguri si nici pe fir nu vedeam vreun pachet plecat la alalalt gateway. Ce-are, ce-are. Dat restart la libreswan, o lua. Am zis ca poate e vreo problema cu libreswan, ca mai dadusem de una draguta un pic inainte.

Aia draguta era misto, ca fix imediat dupa boot nu voia sa ridice tunelul de nici un fel. ipsec auto –up $nume_conexiune zicea ca nici una din cheile RSA nu e buna de folosit pentru autentificare, insa fara a modifica nimic, dupa un libreswan restart brusc deveneau bune cheile.

De draci ajunsesem la o varianta taraneasca, dupa pornirea sistemului sa-si dau un start/stop manual s-o ia.

Hai ca zic merge tunelul, sa fac niste teste de trafic cu ping6 sa vad daca MTU-ul e cum trebuie, dau io ping6 -s 1500 si timeout. Pe la vreo 1300 bytes si ceva payload mergea. Pun de mana MTU-ul la 9000 (ca interfete gigabit) si dau iar ping6, si iar timeout. Mai dau si un restart lu’ libreswan (ca vorba aia: when in doubt, restart) ca poate fiind pornit se uita o data la MTU si dupa aia o tine cumva cont de el. tcpdump zicea ca pachetele pleaca da nu ajung.

Uite asa m-am trezit io in zona crepusculara, unde lucrurile in teorie trebuiau sa mearga iar in practica erau diferite de teorie. Si e frustrant ca zici ca, mortii ma-sii, e un VPN, mai mult de cateva ore n-are ce sa ia, ca doar ma dau cu IPsec pe Linux de cand eram mic si stiam ce fac.

Dupa o zi de injuraturi, am oprit IPSec, si zic hai ca in clar tre sa mearga cacatul si o iau dupa aia pe dos sa vad unde se strica. Intre astea doua masini aveam un switch ca sa simulez realitatea. Si zic sa pun un cablu direct intre ele sa elimin orice element in plus care ar putea sa induca erori.

Evident, cu cablu direct mergea treaba de n’avea aer. Acuma switch-ul avea porturi gigabit si cablurile erau bagate in el in porturile alea. Si totusi ce n’avea switch-ul pe porturile gigabit? Jumbo frames in pizda ma-sii. Jumbo frames n-avea. Ca HP in vasta sa inteligenta s-a gandit ca probabil nu sunt bune si n-a implementat suport pentru ele in switch. Si uite asa ai conexiune la gigabit da cu frame-uri de maxim 1504 bytes, sa incapa si un VLAN tag acolo da nimic in plus.

Dupa dracii cu HP, m-am intors la problema initiala, de ce ma-sa dupa reboot n-o ia tunelul. S-a facut tarziu si m-am dus sa dorm.

Evident ca n-am dormit ca ma rodea problema, mi-am facut repede un laborator cu doua CentOS 7 si zic sa incerc strongswan in loc de libreswan, ca poate o avea ala suport mai bun pentru ce fac. Suport in a vorbi cu framework-ul de XFRM din kernel unde se intampla magia.

Fac repede o configuratie si dau reboot la un nod, si dupa reboot pula tunel. Dupa niste tcpdump ma loveste problema: Cand un neighbor IPv6 vrea sa afle ce adresa MAC are alt neighbor, trimite pe multicast FF02::1 un mesaj de Neighbor Solicitation (echivalent de mesajul trimis pe broadcast in IPV4 pentru a afla MAC-ul unui computer din reteaua locala) si primeste unicast un raspuns.

Ce se intampla in kernel in combinatie cu IPSec-ul: pachetele de solicitation plecau cum trebuie si ajungeau la alalalt nod, ala raspundea unicast si nodul care a trimis solicitarea le ignora pentru ca… tananana… se astepta sa fie criptate conform configuratiei (SA-urile erau facute intre 2 /128).

Acu la 2 noaptea stiam care e problema, sa o si rezolv:

conn ipv6nd
   auto=route
   keyexchange=ikev2
   authby=never
   type=passthrough
   leftsubnet=2001:abc:def:ffff::2/128[ipv6-icmp/136]

Unde leftsubnet reprezinta IP-ul aluilalt gateway, iar pe ala se face pe dos configuratia. Et voila, merg chestiile dupa configuratia asta.

Ce inseamna ce-am facut mai sus? Inseamna ca sistemul va accepta pachete ICMPv6 Neighbor Advertisement necriptate. E important ca regula asta sa fie scrisa prima in config ca sa aiba precedenta fata de urmatoarele. E ca la firewall, de sus in jos :)

Asa, acu c-am rezolvat-o, am trecut la pasul urmator. Tipul conexiunii era de tip transport, ca aveam treaba sa protejeze doar traficul intre cele 2 gateway-uri.

Peste am facut un tunel L2TPv3 si cateva sesiuni sa car niste VLAN-uri dintr-o parte in alta. Pe fiecare cap aveam o interfata fizica cu tag-uri de VLAN, una de pseudowire, ambele bagate intr-un bridge.

Pe o interfata de bridge am pus o adresa IPv4, la fel si pe alalalt gateway si minune… mergea ping-ul intre ele. Scopul declarat fiind sa le folosesc pe post de adrese de management pe un VLAN de management.

Cu experimentul pe IPv4 reusit, am pus un set de adrese IPv6 pe interfetele de bridge asteptand acelasi rezultat. Si-am asteptat, si-am asteptat… cum asteapta un caine parasit stapanii care nu se mai intorc.

Pentru ca IPv6 e special, cand ai o adresa pusa pe interfata de bridge, neighbor solicitation nu se duce doar pe interfetele de compun bridge-ul, ci pe toate interfetele din sistem, mai putin pe alea de pseudowire.

Aci ma panicasem un pic, ca sa nu pot sa fac management pe IPv6 nu era un capat de lume, da incepusem sa ma gandesc ca daca se intampla la fel si pe trafic intre 2 host-uri din acelasi VLAN care trec prin jucaria mea?

Well, aci am avut noroc si asta nu se intampla. De aflat am aflat testand si injurand iar HP-ul ca are ceva cu pachetele de IPv6 multicast si nu merge Neighbor Discovery. O sa investighez daca intr-o versiune mai noua de firmware au facut lucrurile sa mearga.

De ramas am ramas la strongswan din mai multe motive:

  • pare mai robust fata de libreswan
  • suporta DH Group 19/20/21 (curbe eliptice, chei mai mici, securitate mai mare)
  • suporta chei de tip ECDSA (cu ocazia asta mi-am facut si niste certificate digitale pe 521biti de tip Elliptic Curve)
  • nu are dilemele lui libreswan cu cheile (ba sunt bune, ba nu sunt bune)
  • merge OK partea de fragmentare a pachetelor care depasesc MTU la nivel de IKE (e misto sa dai ping cu -s 65000 si sa mearga fara sa faci nimic)
  • are suport de TFC (traffic flow confidentiality) pe IKEv2 in mod tunel. Asta inseamna ca face padding pana la MTU-ul interfetei si indiferent de cat trafic ai de fapt, unu care sta cu urechea pe fir va vedea mereu pachete de 9000 bytes (in cazul gigabit ethernet), fara sa stie exact cat sunt date utile si cat e gunoi.

Cu procesoare care au AES-NI (Intel Ivy Bridge sau mai noi) exista si accelerare hardware pentru criptare, via aesni_intel, mai ales daca AES e folosit in GCM. La fel, functiile de hash pentru integritatea datelor pot fi efectuate direct pe procesor prin sha512-ssse3 daca se foloseste SHA512 la IPSec.

Long story short, merge. Bine, merge da violat un pic tot setup-ul ca am dat de un bug in kernel care e nefixat in toate versiunile cu care am testat, adica de la 3.10 la 4.5 sau 4.10 cat era ultimul din CentOS 7 plus cand am testat.

BUG-ul e super misto: dupa cam o saptamana, moare treaba si fara reboot nu-si revine. Si asta se intampla pe ambele gateway-uri.

Dupa miliarde de draci si debug in fata serverului cu monitor si tastatura ca in vremurile bune, am descoperit problema, si anume un leak in kernel, mai mult de file descriptors din ce am bunghit pana acum.

Ce se intampla, ca e atunci cand se schimba cheile, nu se face free la esp6 si xfrm6 daca pe aceasi masina e si un tunel L2TP pentru setup-ul de pseudowires. Si creste utilizarea modulelor pana se strica jucaria.

[[email protected] ~]# lsmod | grep esp6
esp6 17180 1566 
[[email protected]v ~]# lsmod | grep xfrm6
xfrm6_mode_transport 12631 3132

Si cand ajungi la cateva sute sau chiar mii, pocneste si nu mai merge. Si asta doar in combinatie cu modulul de L2TP pentru IPv6.

Pentru a rezolva asta, varianta cea mai buna a fost sa fac o masina virtuala in care sa termin partea de L2TP. Adica pe masina fizica am partea de IPSec intre capete, dupa care pe masina virtuala am facut multe interfete: una de inbound pe unde vin pachetele de L2TP si multe pe care sa scot pachetele in cate in un bridge, VLAN tagged sa le dau mai departe.

Postul asta trebuia sa-l public anul trecut cam acum (28 Septembrie 2016), da am uitat de el, da nu conteaza, ca BUG-ul nu e fixat nici acu si jucaria merge de atunci, line rate, fara nici o problema. Ar fi frumos sa fie si BUG-ul ala fixat pentru simplificarea setup-ului.

Cum setup super perfect nu exista, acum e un pic urata adaugarea de noi VLAN-uri pe acelasi pseudowire, in sensul ca trebuie sa le adaug de mana si sa editez si fisierele de configuratie astfel incat sa fie ce trebuie la reboot. Asta e din cauza ca pe CentOS nu exista script de network pentru a seta interfete de tip l2tp_eth. Insa e OK, ca nu schimb zilnic setari.

ubuntu 16.04 pxe install

De anul trecut am trecut incet, incet spre DevOps. Mai bag si pe security, da mai rar in ultima vreme.

Doar Ops n-am mai facut de ceva vreme si evident, ca m-am mai ramolit un pic pe partea asta. Iar cu Dev-ul din DevOps  o lalai in Python, ca e bun pentru a programa chestii de sistem.

Pentru un client nou, am avut de facut un server de deployment pentru niste servere fizice astfel incat sa bagi serverul poaspat scos din cutie in priza, sa-l conectezi la retea si 15min mai tarziu sa-l ai instalat. Bine, depinde de viteza mirror-ului asta, ca prin unele tari merge intrnetul de zici ca’l aduc cu galeata.

Ca si distro am folosit Ubuntu 16.04 LTS pentru ca $reasons.

Partea usoara e sa instalezi un server de TFTP si un server de DHCP care sa aloce IP-uri si sa spuna la clienti cum se cheama fisierul pentru BOOTP.

Ca si server de deployment am folosit tot un Ubuntu 16.04, sa fie instalarea intre prieteni sa mearga bine si fara probleme :))

Si pentru ca multe servere, evident ceva care sa faca orchestrare si management. Si ca ziceam mai sus ca o lalai cu Python, SaltStack a fost raspunsul.

Asa ca, cum se face sa deployezi multe servere fizice in vremea lui AWS, GCP si Azure:

  1. Se instaleaza atftpd, se modifica  /etc/default/atftpd si se schimba USE_INETD din true in false. Dupa care systemctl enable atftpd si systemctl start atftpd.
  2. Se downloadeaza un ISO de Ubuntu Server 16.04 si se monteaza cu loop pe sistem.
  3. Se copiaza de unde s-a montat ISO continutul directorului netboot in /srv/tftp.
  4. Dupa nevoie se editeaza /srv/tftp/boot-screens/menu.cfg astfel incat sa bata cu realitatea la fata locului. Cateva note la exemplul meu:
    1. installerul e retardat si daca serverul de DNS raspunde cu AAAA RRs, o sa vrea sa se conecteze pe IPv6 la mirror, chiar daca nu are ruta default pe IPv6.
    2. A.B.C.D se inlocuieste cu adresa IP a serverului de TFTP
    3. eno3 e cum stiu eu ca se cheama interfata de retea pe care o foloseste masina ce va fi instalata pentru DHCP, pentru ca in cazul meu aveam mai multe interfete si se blocheaza installer-ul si te pune sa alegi una (chiar si cu optiunea auto tot la fel face).
  5. Se creeza /srv/tftp/preseed/ubuntu-16.04-preseed.cfg unde se va scrie configuratia pentru installer. La fel, cateva note la exemplul meu:
    1. Installer-ul va crea un setup de tip RAID10 din primele patru discuri de pe sistem. Recipe-ul de RAID l-am bunghit cu #mumu help, ca nu prea e documentat cum se face. E un pic de magie in toata treaba aia.
    2. Peste va configura LVM si / va fi un LV de 30GB pe VG-ul nou creat.
    3. In cazul in care masina va avea mai multe interfete de retea, trebuie specificat ce intefata sa foloseasca in mod automat. Altfel va sta ca boul asteptand sa selectezi pe care sa o folosesti.
    4. $magic_postinstall_setup_script poate fi orice script (bash, python, perl etc.) care face chestii pe sistem inainte de reboot dupa instalare. Scriptul asta de obicei se pune pe un server web, se downloadeaza si se executa. O sa revin mai tarziu cu ce si cum.
  6. Se instaleaza isc-dhcp-server si se modifica /etc/dhcp/dhcpd.conf sa dea adrese dintr-un pool la clienti si se adauga urmatoarea optiune in definitia de subnet:
  7. filename "pxelinux.0";

    systemctl enable isc-dhcp-server si systemctl start isc-dhcp-server.

  8. Se buteaza o masina fizica si se asteapta pana termina de instalat. Daca da oroare sa ceva, trebuie fixata in fisierul de preseed, reboot si de la cap cu instalarea pana merge. Nu exista checker pentru fisierul de preseed. Pe mine m-a enervat maxim treaba asta ca instalarea se facea pe niste Dell R430 si pana buteaza alea mori incet.

Ziceam mai sus ca inainte de reboot, pot da comenzi in sistemul nou instalat sa-l configurez cumva inainte sa porneasca prima oara.

d-i preseed/late_command string \
 in-target wget -P /tmp/ -t 0 -c http://A.B.C.D/myscript.sh; \
 in-target chmod +x /tmp/myscript.sh; \
 in-target /tmp/myscript.sh; \
 in-target wget -P /tmp/ https://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub; \
 in-target apt-key add /tmp/SALTSTACK-GPG-KEY.pub; \
 /bin/echo "dev.raid.speed_limit_max = 1000000" >> /target/etc/sysctl.conf; \
 /bin/echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest xenial main" > /target/etc/apt/sources.list.d/saltstack.list; \
 in-target apt-get update; \
 in-target apt-get install -y salt-minion

Se pot da comenzi succesive in late_command. Ce trebuie stiut:

  1. Cuvantul in-target ii zice installer-ului sa faca chroot() in noul sistem si sa execute comanda de acolo.
  2. Comenzile date fara in-target se ruleaza de pe mediul de instalare (din installer cum s-ar zice).
  3. Se foloseste combinatia normala + in-target ca unele comenzi nu merg in chroot, ca de exemplu echo $stuff merge doar din installer, in chroot nu merge. Poate imi scapa mi ceva, dar sa stau sa debughez asta dura prea mult.

Ziceam ca pentru orchestrare si configurare am mers pe SaltStack. Eu pentru ca are minioni, colegul de proiect ca i s-a luat de Puppet. Bine, nici eu nu m-am omorat dupa Puppet ca e scris in Ruby.

Cine a facut SaltStack asta a fost inteligent si minionii daca n-au nici o configuratie, o sa incerce sa se lege la salt.domain.name. Si asta inseamna ca tot ce trebuie sa am este un salt-master instalat si configurat acolo un pic, configurat DNS-ul atfel incat salt.domain.com sa bata la un serverul pe care ruleaza salt-master si, dupa ce fiecare masina fizica se rebuteaza, minionul se va conecta automat la salt-master. Magie adevarata.

salt-key –accept-all este raspunsul la intrebarea cum confirm ca minionii inregistrati sunt ai mei :)

turop

Pentru un proiect de-al meu, in scop didactic, am nevoie sa pot emite certificate digitale cat mai usor cu putinta. Si cum tot am inceput sa mai apas butoane si in limbaje de programare, am zis ca ce bine, pot sa scriu ceva simplu pe web.

Asa ca azi am creat turop, o aplicatie web in care cine are nevoie face paste la CSR si primeste un certificat digital inapoi. E mega quick & dirty, in special dirty. Da merge si isi face treaba.

ammit

De ceva vreme am tot cochetat cu invatatul de Python in contextul dezvoltarii de chestii web based (sa le zicem servicii). Pentru ca am tot felul de idei, da nu prea stiu programare, m-am apucat sa fac experimente micute sa inteleg cum functioneaza treburile, cum se leaga componentele intre ele si alte lucruri din astea super de baza.

Unul din experimentele astea se cheama Ammit si  este un URL shortener foarte basic bazat pe Bottle si Redis (via redis-py). Poate fi rulat ca aplicatie UWSGI din nginx. Ce e comis pe GitHub, ruleaza ca si standalone app pentru testare/dezvoltare.

GitHub il folosesc ca sa invat de stuff cu git si version control.

pyodbc & centos 6

Pe CentOS 6, versiunea de pyodbc este 2.1.7 si are un mic bug atunci cand are de interoperat cu baze de date care tin mortis sa dea datele encoded UTF-16 si face double-encoding la orice rezultat primit de la baza de date in urma unei interogari, daca ruleaza pe un sistem pe 64 de biti (cam asta am inteles io din descrierea problemei).

Descrierea BUG-ului se afla la https://code.google.com/p/pyodbc/issues/detail?id=78 iar rezolvarea se face prin modificarea unei singure linii de cod si stergerea unei litere :)

La http://www.imacandi.net/sin/blog/wp-content/uploads/2015/09/pyodbc-2.1.7-1.el6.x86_64.rpm se gaseste un RPM cu pyodbc patchuit si recompilat.

Cu ocazia asta mi-am adus aminte si de cum se foloseste rpmbuild.

open air 2015

Din categoria sa se mai intalneasca si linuxarii la o bere, weekend-ul asta am fost la o iesire  cu diversi oameni pe undeva pe langa Bran sa ne relaxam, sa discutam una alta de diverse chestii care au mai mult sau mai putin de a face cu calculatoarele si sa ne plimbam pe munte.

Vineri a fost light, toata lumea obosita dupa drum, cu discutii din astea mai mult despre companiile mari si rele care abuzeaza consumatorii si angajatii. Dar goosfraba, si lasat ignorantii in lumea lor.

Sambata m-am trezit fara nici o durere de cap, doar un pic nedormit ca am avut un sforaitor in camera si camera era pe partea cu soarele si s-a facut cald repede de tot si a devenit nasoala atmosfera.

Pe la 11 asa am luat-o incetisor la o plimbare pe munte sa vedem natura si ce alte chestii se mai pot vedea pe munte. Si am mers asa pana am gasit o scurtatura spre unii din grup care o luasera inainte. Si dupa un pic de gandeala am zis sa ne luam dupa o femeie si sa mergem inainte ca stie ea cum ajungem inapoi unde stateam. Si am mers, si am mers, si am mers. Am gasite niste poteci, niste alti munti, niste paduri, am gasit un izvor cu apa care avea gust de oaie, niste alte poteci. La un moment dat am zis sa facem o chestie nu foarte barbateasca, si anume am dat de un om intr-o curte si l-am intrebat cu cum ajungem unde vroiam noi sa ajungem. Anyway, long-story short dupa vreo ~10-12km asa si vreo 4 ore jumate am ajuns inapoi la pensiune.

Noroc ca mi-am luat sapca cu mine ca altfel o sugeam maxim ca a fost un soare puternic de nu se poate.

La cabana am bagat ca spartul si pe nerasuflate in mine vreo 3 farfurii de ciorba de fasole cu afumatura si tot as mai fi mancat ceva.

Am ars-o aiurea pana mai pe seara cand a venit cina unde iar am mancat ca spartul de foame ce-mi era dupa tot mersul pe coclauri. Contrar experientei trecute, am mancat berbecut facut la protap fiind convins de cineva ca berbecul e diferit de oaie :)

Seara in timp ce vorbeam cu un prieten de ce-am vazut la o expozitie prin Bucuresti, de ce jucarii foloseam cand eram copii am zis si ‘aveau planurile de fumigena’. Si asa ni s-au facut ochii mari la amandoi, ca staniol aveam ca mancasem niste ciocolata iar pensiunea avea o masa de ping-pong. Si uite asa am ciordeles una din mingiile de pingpong si ne-am pus pe treaba. Pentru ca nu mai stiam cum se face am cautat pe youtube tutorial. Primul film incepea cu “… se ia azotat de amoniu si…”. Acolo l-am oprit ca povestile care incep cu “azotat de amoniu” se termina cu “… si pensiunea a explodat”. Adica faceam fumigena, da un pic cam mare decat ne-am fi dorit. Si in plus era noapte si nici azotat nu aveam. Asa ca am trecut la al doilea filmulet unde era ce cautam.

Dupa un pic de munca am asamblat fumigena, ne-am intors cu ea la masa si dupa o prima tentativa esuata de a-i da foc, a doua oara a luat-o si am aruncat-o pe sub masa. Unii nu prea stiua care e treaba, altii cu “hai ba sin, ce pula mea” si unul a dat-o cu “mmm, mirosul copilariei”. S-a disipat repede fumul ca eram pe terasa si dupa aia ne-am continuat discutiile pana cand aproape a rasarit soarele.

Am reusit sa dorm vreo 3 ore, dupa care mic dejun, salutat lumea si inapoi spre casa. Pe DN1 am mers bara la bara cam de pe la cativa kilometri de la iesirea din Predeal spre Bucuresti pana dupa Busteni.

Am ajuns pisat pe mine e oboseala, dar am mai rezistat eroic vreo doua ore pana m-am luat somnul pe la 5 si ceva asa.

Care somn nu m-a tinut mult pentru ca a inviat berbecul in mine si m-am trezit cu un rau si-o greata de m-a facut muci complet. Mai rau ca atunci cand beam de uitam cum ma cheama :( Dupa cum ziceam mai devreme, nu m-a dus mintea sa stau departe de oaie :((

Azi am ars-o la orizontala, pe la 3 asa am putut sa bag ceva mancare solida in mine si sa nu mi se mai faca greata.

Daca nu ma manca in cur sa fiu viteaza cu oaia, cred ca ar fi fost super ok toata treaba.

beghepe beghepe

De ieri pana azi am behait pe langa o banala problema de BGP intre doua linux-uri pe care ruleaza Quagga. Sesiunea se ridica, se reseta si dupa aia ca la budist, ciclul se repeta.

Da-i cu tcpdump, da-i cu debug in Wireshard, ce-are, ce-are. Nu-mi sarea nimic in ochi iesit din comun. Config la fel pe ambele routere, verificat linie cu line, totul in oglinda. Da tot nu mergea.

Azi dimineata m-a pocnit, quagga de capul lui nu-si pune totdeauna router-id corect si atunci foloseste 0.0.0.0. Eh, 0.0.0.0 pe post de router-id nu e chiar cea mai fericita optiune si se pare ca e chiar invalida conform RFC-ului, asa ca dupa ce-am schimbat router-id la o valoare mai apropiata de adevar, s-a ridicat instanat sesiunea si acu sunt si io fericit ca merge stuff-ul cum trebe :)

upgrade server LUG

A venit vremea ca serverul ce deserveste serviciile *.lug.ro sa fie actualizat la o configuratie mai din zilele noastre.

De aceea, pentru cine citeste acest blog a folosit sau foloseste serviciile lug.ro este invitat, daca se poate si in masura posibilitatilor sa faca o mica donatie in contul Asociatiei ProLinux pentru a strange banii necesari achizitionarii serverului respectiv.

La adresa http://wiki.lug.ro/mediawiki/index.php/Hardware_Requirements (inclusiv pagina de discutii) puteti vedea configuratia stabilita.

Mesajul care contine si datele bancare ale asociatiei poate fi gasit la http://lists.lug.ro/lurker/message/20100324.175956.be8fe057.en.html.

In alta ordine de idei, dati stirea mai departe sa se mai adune oameni care sa contribuie la ajutorarea comunitatii.

Multam fain.

mysql & oracle

De ceva vreme Oracle tot incearca sa-i cumpere pe Sun. Si de ceva vreme ba s-a opus Departamentul de Justitie in SUA, ba Comisia Europeana in Europa. Cica chestii antitrust, c’ar fi nasol daca Oracle ar avea si hardware pentru bazele de date. Departamentul de Justitie a zis ca OK, Oracle poate face plata. UE inca se mai caca in sus in aceasta privinta – ca se pare ca apucat-o dragul de MySQL si despre soarta lui in mainile lui Oracle.

MySQL e GPL. Se face fork si se continua dezvoltarea fara probleme. Nu stiu ce pisici e asa greu sa priceapa si Comisia Europeana.

Si ca sa fie treaba treaba, gigi ala de’a facut MySQL prima oara pune gaz pe foc ca vai, Oracle o sa puna gheara pe MySQL si ca o sa ceara bani pe el and stuff si ca o sa fie monopol. Asta avand in vedere ca MySQL in continuare e GPL, asa ca nu e nimic oprit sa si-l dezvolte in continuare daca vrea sa-l foloseasca. Si uite asa s-a apucat el de impartit panica pe ici si pe colo impotriva lu Oracle.

Ce uita el in schimb e ca a vandut MySQL lui Sun acu ceva timp pentru 1 miliard de verzisori. Si cu miliardul ala de verzisori in buzunar si-a pierdut dreptul de a-si da cu parerea in privinta a ce se intampla cu MySQL. Simple as that.

Parerea mea e ca e un ipocrit si jumatate, dupa ce-a bagat banii in in buzunar de la Sun sa chitatie ca ce nasol ca o sa fie vandut mai departe la Oracle. De fapt, pe langa faptul ca e ipocrit, e si nesimtit cu chitaiala asta.

Lumea zice c’ar fi de fapt inca una din metodele de competitie corecte practica de Microsoft in razboiul bazelor de date. Si ca Monty ala ar fi luat ceva verzisori si de la MS sa produca atata FUD. Nasol cand iti intuneca banii mintea. Sau ura chioara fata de un vendor anume.