Soluţii - PC Magazine Romania, Septembrie 2003
La plajă
Răzvan Sandu
Motto:
"şi de aceea niciodată să nu faci întrebare pentru cine bat clopotele - pentru tine bat."
[Ernest Hemingway - introducere la romanul "Pentru cine bat clopotele"]
Cobor fereastra şi privesc absent afară. În dimineaţa proaspătă de vară, trenul de Constanţa se strecoară încetişor printre arbuştii umezi care ating vagonul. Locul acesta tăcut îmi e familiar ca o întâlnire cu copilăria. "Drumul santinelei", îi spun cei vechi din cartier. Pe poteca năpădită de verdeaţă, scrâşneşte încă, egal şi fantomatic, pasul soldatului german care păzea linia ferată aici, sus, lângă Gara Regală de la Băneasa. E atât de bine ales şi ascuns postul acesta strategic, încât vuietul şoselei de dedesubt, de la piciorul podului, nici nu se mai aude…
Astăzi, domnilor, am plecat către libertate! Poate că vă aşteaptă şi pe Dvs. litoralul, cu răsărituri de soare, spumă de valuri, nostalgie, prieteni, fete, discoteci … Au rămas în urmă aerul condiţionat, telefoanele care sună, tastatura, hârtiile, problemele… şi totuşi, seara, poate că atmosfera intimă de club a vreunui Internet-café local vă face să vă "frigă" degetele ! Poate un e-mail de la prietena rămasă acasă, poate vreun telefon urgent de la şef … Pentru aceia dintre Dvs. care nu se pot "rupe" complet de birou nici în vacanţă, vom vorbi despre "firul subţire" care vă leagă de computerul de zi cu zi ! Poate un modem, poate un VPN, poate …
Urmaşii lui Graham Bell
Nu cred că există întrebări pe care să le primesc mai frecvent decât de cele legate de modemuri. Aceste aparate par să exercite fascinaţie, mai ales într-o ţară de dial-up-eri cum este România ! Totuşi, datorită complexităţii şi diversităţii, abordarea subiectului cere o oarecare doză de curaj… ☺
Un modem (MODulator/DEModulator) este un dispozitiv electronic care transformă semnalele electrice digitale, specifice computerelor, în semnale analogice, specifice telefoniei clasice. Operaţia de conversie de la digital la analogic poartă numele de modulare: informaţia digitală este "codificată" cu ajutorul unui semnal numit undă purtătoare (carrier). În sens opus, "extragerea" conţinutului digital din unda purtătoare modulată se numeşte demodulare.
Principala clasificare a modemurilor se face în funcţie de construcţia lor. Modemurile pot fi interne, dacă iau forma unui circuit care se montează în calculator, într-un slot al plăcii de bază sau externe, dacă se conectează la acesta prin intermediul unui port (de obicei, serial sau USB).
Modemurile interne sunt preferate atunci când se doreşte o construcţie compactă şi un preţ mai redus; pentru mediile de lucru profesionale soluţia rămâne însă existenţa unui modem extern, care nu ocupă loc în unitatea centrală, nu consumă resurse ale sistemului, nu generează instabilităţi software şi poate fi transferat uşor de la o maşină la alta.
Indiferent de tipul modemului folosit, comunicaţia peste o linie telefonică este o comunicaţie serială. Aşa cum sugerează şi denumirea, în cazul unei comunicaţii seriale datele sunt codificate şi transmise bit cu bit prin linia telefonică. De aceea, comunicaţia serială este, prin definiţie, mai lentă decât alte tipuri de legături (de exemplu, reţeaua Ethernet).
Desigur, comunicaţia printr-o linie serială (de obicei o pereche de fire de cupru aparţinând circuitului telefonic) nu este perfectă, ci se face cu un anumit procent de pierderi. De aceea, protocoalele de comunicaţii seriale includ metode de verificare a datelor transmise, care garantează că acestea au fost transferate fără pierderi/denaturări prin linia telefonică (datele greşit recepţionate sunt retransmise).
De aceea, în cadrul unei comunicaţii seriale, prin linia telefonică nu se transferă numai informaţia originală, utilă, ci şi coduri de control, checksum-uri, etc. (specifice protocolului folosit), care asigură fiabilitatea legăturii de date. Acest lucru face ca viteza de transfer a informaţiei primare să fie şi mai mică.
Viteza de funcţionare a conexiunii se măsoară în biţi pe secundă (bps) sau kilobiţi pe secundă (kbps). Primele modemuri apărute atingeau o viteză de 2.400 bps, apoi 4.800 bps; modemurile actuale, care realizează compresia datelor înainte de a le transmite, reuşesc să ajungă la viteze standard de 28.800 bps, 33.600 bps sau 56.000 bps. Pentru comparaţie, viteza de realizare a unei comunicaţii fax uzuale este de 9.600 bps sau 14.400 bps.
În cazul a două calculatoare conectate prin comunicaţie serială, lanţul COMPUTER1 -MODEM1 - LINIE - MODEM2 - COMPUTER2 trebuie privit ca un întreg. Desigur, "veriga" cea mai slabă (ca viteză) va impune performanţa întregului lanţ: dacă ISP-ul Dvs. vă oferă o conexiune Internet prin modemuri de doar 33,6 kbps, nu trebuie să vă miraţi că nu puteţi atinge viteza maximă de 56 kbps permisă de modemul Dvs. de acasă. Un parametru pe care mulţi îl omit din calcule este chiar şi viteza de comunicaţie între calculator şi modem: calculatoarele "antice", dotate cu porturi seriale de tip mai vechi, nu vor putea comunica la viteză maximă cu un modem recent.
Medic de picior stâng
Pentru Dvs., utilizatori de Linux, alegerea unui modem (ca şi a unei imprimante) este o operaţie delicată; şi asta nu pentru că Linux ar fi prea "pretenţios" cu modemul folosit, ci … Dar mai bine să vă explic în continuare.
Operaţia de realizare a unei legături seriale este foarte "solicitantă" pentru procesorul sistemului, şi asta pentru că acesta trebuie să "acorde atenţie" fiecărui bit sosit prin legătură. Modemurile "normale", pe care le vom numi în continuare full-hardware, încearcă să minimizeze aceasta încărcare, preluând pe cont propriu cea mai mare parte din sarcinile stabilirii şi menţinerii legăturii seriale. Din păcate, industria de hardware a "hotărât", în numele nostru, că un procesor actual (de la Pentium încoace) este suficient de puternic şi rapid pentru a-şi asuma sarcinile legate de funcţionarea legăturii. Aşa că astăzi se fabrică numeroase modemuri în construcţia cărora s-a omis includerea unor circuite electronice (controllere ş.a.), scopul fiind diminuarea preţului modemului. În schimb, funcţia circuitelor lipsă este preluată de procesorul central al sistemului, care gestionează funcţionarea legăturii executând nişte module software incluse în driverele modemului. Aceste "semi-modemuri" poartă denumirea, dupa caz, de modemuri software (software modems) sau modemuri fără controller (controllerless modem).
Socoteala producătorilor de hardware ar putea fi corectă, cu următoarele observaţii:
1. Computerul Dvs. trebuie să aibă o rezervă suficientă de putere (viteză) pentru ca încărcarea suplimentară a procesorului să nu fie vizibilă nici atunci când se execută şi alte programe mari consumatoare de resurse. În caz contrar, suprapusă peste alte încărcări ale sistemului, funcţionarea modemului software devine supărătoare.
2. Modulele-driver ale modemului trebuie să fie bine scrise de producător şi 100% compatibile cu procesorul şi cu sistemul de operare folosit. În caz contrar (şi, din păcate, aceasta este situaţia cea mai frecventă) iau naştere blocaje, funcţionare lentă a sistemului şi a legăturii, întreruperea aleatoare a conexiunii, etc.
3. Dvs. trebuie să aveţi (sau să puteţi procura uşor) module-driver pentru orice sistem de operare alegeţi să instalaţi. Din nefericire, marea majoritate a producătorilor de modemuri software nu "se obosesc" să ofere altceva decât software de Windows pe CD-ul care însoţeşte aparatul. Dacă folosiţi Linux, Unix sau orice alt sistem de operare non-Windows, trebuie ca Dvs. să vă faceti rost de modulele software necesare. Dacă nu le găsiţi pe situl producătorului, împreună cu instrucţiunile de instalare, nu vă rămâne decât alternativa de a le lua de la o terţă persoană sau firmă sau de a vi le scrie singur. Pentru ca lucrurile să stea şi mai rău, cei mai mulţi producători nu numai că nu vând decât software de Windows, dar refuză, pur şi simplu, să ofere suficiente detalii tehnice despre modem care să permită unui alt programator scrierea modulelor necesare. În acest ultim caz, modemul Dvs. este complet inutilizabil sub alt sistem de operare.
În timp, de la o generaţie la alta, modulele software pentru Windows pot deveni şi ele incompatibile (de exemplu, modulele care funcţionau sub Windows 98 nu vor mai funcţiona sub Windows 2000). Vă puteţi trezi nu numai în situaţia de a nu putea instala Linux (dacă vreţi să folosiţi modemul), ci şi în aceea de a fi obligat să rămâneţi la Windows 98, să zicem.
În ceea ce mă priveşte, eu refuz, pur şi simplu, ca cineva să-mi aplice asemenea constrângeri şi, din experienţă, vă sfătuiesc cu căldură să procedaţi la fel. Soluţia este una singură: să cumpăraţi un modem full-hardware, acceptând preţul lui ceva mai mare, şi să vă asiguraţi că modelul ales funcţionează "standard" sub toate sistemele de operare dorite. Ideal este un model extern (cum este familia "clasică" de la 3Com/U.S. Robotics, dar nu numai) care nu vă va impune nici măcar limitarea legată de slot ISA sau PCI.
Din cauza problemelor prezentate mai sus, multe modemuri software şi-au câştigat denumirea de winmodemuri - ele funcţionează exclusiv sub Windows. Pentru alte modele, programatori ingenioşi şi insistenţi au găsit soluţia funcţionării (şi) sub Linux - aceste modele au fost botezate linmodemuri. Pe Internet, situri cum ar fi www.linmodems.org şi www.idir.net/ ~gromitkc/ winmodem.html vă pot oferi indicaţii în ce categorie se încadrează diversele modemuri pe care le găsiţi. În alte cazuri, singura soluţie de a alege este testarea înainte de cumpărare, garanţia fermă a producătorului/vânzătorului sau cunoaşterea prealabilă a modelului dorit.
Încercând să particularizăm pentru piaţa românească, vă pot spune că, din motive de preţ, marea majoritate a vânzătorilor pe care îi cunosc oferă winmodem-uri. Personal, am încercat zadarnic să conving pe câţiva dintre ei de faptul că trebuie să existe şi alternative, chiar şi la costuri ceva mai mari. Unii nici nu mi-au acordat prea multa atenţie - cum să iei în serios un om care are ciudăţenia să folosească altceva decât Windows? ☺
În final, soluţii practice am reuşit să găsesc folosind unele modele de modemuri interne PCI Intel cu chipset Ambient (modemuri software cu drivere Linux oferite de producător), modemuri mai vechi Askey Davicom (slot ISA, 33,6 kbps) sau familiile externe SpeedCom+ şi 3Com/U.S. Robotics (FaxModem 56K, FaxModem Message şi excelentul Courier V.Everything). De remarcat că unele modemuri U.S. Robotics par a fi asamblate (fabricate?) în România şi funcţionează foarte bine.
Un alt aspect ce nu trebuie neglijat este cel al trimiterii şi recepţionării de faxuri. Câteva distribuţii importante vin, în mod standard, cu programul mgetty+sendfax al lui Gert Doering (http://alpha.greenie.net). Pentru a funcţiona, acesta are nevoie de un modem care să "ştie" cel puţin clasa de faxing 2, dacă nu chiar 2.0 - şi acestea nu sunt prea uşor de găsit pe piaţa românească. O alternativă este şi programul efax, care suportă şi modemuri cu clasa de faxing 1.
În fine, în cercetările Dvs. prin magazine veţi întâlni multe modemuri cu conectare USB. Puteţi alege şi unul dintre aceste modele, dar trebuie să vă asiguraţi că îl puteţi folosi sub Linux (multe dintre ele sunt winmodem-uri). În plus, în unele distribuţii Linux suportul USB nu este pe deplin finisat.
"Inima-i un telefon…"
Aceia dintre Dvs. care au fost mai hotărâţi în alegerea modemului se vor fi plictisit deja, aşteptând să ajungem la momentul configurării. Iată:
Un modem extern se conectează la un port serial sau USB al calculatorului. Acesta poate fi oricare, dar trebuie să ştiţi denumirea sa exactă. Un modem intern include un port serial propriu şi va "răpi" sistemului anumite resurse (IRQ, I/O port). Următorul tabel vă poate ajuta să vă orientaţi - el conţine setările cele mai uzuale:
Pentru modemurile interne, în funcţie de tipul plăcii, de setările din BIOS şi de capacitatea PnP a componentelor, pot exista mai multe moduri de a stabili parametrii de mai sus. Voi spune doar că v-aş recomanda ca în BIOS să avem pus "PnP OS Present= No". Plăcile ISA se configurează cu ajutorul utilitarelor isapnp şi pnpdump, iar pentru plăci PCI lspci va afişa setările alocate de sistem. În fine, parametrii portului serial (viteza, întreruperea, etc.) pot fi afişaţi şi stabiliţi cu comanda setserial.
Primul test de funcţionare pentru modemul Dvs. va fi efectuat cu programul minicom. Acesta va trebui configurat să lucreze pe portul serial la care aţi conectat modemul (lansaţi-l, mai întâi, cu comanda minicom -s şi indicaţi-i /dev/ttyS-ul corespunzător). În minicom, modemul ar trebui să răspundă comenzilor AT, similar cu felul în care o face în HyperTerminal sau în meniul Diagnostics al Windows-ului. Aceasta este, de obicei, prima indicaţie dacă (win)modem-ul Dvs. este "văzut" de sistem.
Mai departe, există o multitudine de moduri în care Dvs. puteţi configura modemul, în funcţie de scopurile la care vreţi să îl utilizaţi (Internet, fax, acces la BBS, etc.). Pentru prima variantă, vă recomand să folosiţi programul wvdial, împreună cu utilitarul său auxiliar wvdialconf. Acesta din urmă va scrie în /etc/wvdial.conf un fişier de configurare atât de asemănător cu fişierele .ini ale Windows-ului, încât nu voi face nici un fel de comentariu special. Sintaxa sa exactă se găseşte în pagina manual.
Pentru cei absolut începători, voi spune doar că un număr de telefon poate fi format în impulsuri (modul PULSE), ca la vechile aparate telefonice cu disc sau cu semnalizare DTMF (modul TONE). Liniile telefonice moderne suportă atât TONE (preferat) cât şi PULSE, dar o linie telefonică veche nu va "înregistra" un număr format în modul TONE. Modemul poate fi instruit să formeze numărul provider-ului de Internet într-un mod sau altul cu comenzile:
ATDP,1234567
sau
ATDT,1234567
Virgula indică o pauză de 2 s în formarea numărului - în cazul nostru, timpul necesar ca pe linia telefonică să "vină tonul".
Tot în fişierul /etc/wvdial.conf puteţi seta şi secventa de comenzi AT folosită de modem pentru initializare. Pentru a afla cum se face ea în Windows, deschideţi cu un editor de texte fişierul .inf al modemului (de pe dischetă sau CD-ROM) şi căutaţi liniile InitString1= InitString2= . Puteţi adăuga aici şi comenzi de genul ATM0 sau ATM1, pentru modificarea volumului difuzorului modemului.
În funcţie de distribuţia de Linux pe care o folosiţi, pot exista diverse utilitare grafice, mai mult sau mai puţin reuşite, pentru a seta conexiunea Internet. În Red Hat, utilitarul în cauză seamănă izbitor cu Internet Setup Wizard din Windows. În orice situaţie, vor lua naştere una sau mai multe interfeţe seriale (numite pppo, ppp1, etc.) care vor fi activate sau dezactivate după nevoie (ifconfig pppo up, respectiv ifconfig pppo down). Veţi auzi modemul formând numărul, conectându-se, etc. Este posibil ca setarea iniţială a unei astfel de conexiuni să necesite puţine experimentări, dar, odată pusă la punct…
Configurarea modemului pentru a trimite şi recepţiona faxuri (cu ajutorul programelor mgetty+sendfax sau efax) constituie un subiect vast, despre care vom vorbi separat. Voi spune aici doar că fişierele de configurare sunt /etc/mgetty+sendfax/mgetty.config şi /etc/mgetty+sendfax/sendfax.config şi că există o excelentă pagină info pentru aceste programe (info mgetty).
Abatele Faria
Ei, prieteni, eu tot vorbesc aici despre configurarea modemului şi despre dial-up si Dvs. poate nici nu aveţi aşa ceva! În schimb, poate că aşteptaţi cu nerăbdare să vă spun ce trebuie să facem pentru a realiza un tunel între reţeaua Dvs. privată de acasă, conectată permanent la Internet, şi reţeaua Internet-café-ului din satul de vacanţă!
Răspunsul nu este unul singur. Dacă aveţi o legătură permanentă la Internet (adrese IP publice fixe) puteţi crea un tunel între cele două reţele, cu condiţia să aveţi acces la ambele capete (la cel distant, poate, prin ssh, sau prin intermediul unei alte persoane care vă poate ajuta). Avantajul unui tunel este că cele două reţele pot comunica în mod liber.
Există mai multe protocoale prin care se poate realiza un tunel în Linux, dintre care voi aminti IPIP (IP in IP Encapsulation), GRE şi CIPE. Dacă la cele două capete se întâmplă să aveţi versiuni recente de Red Hat Linux, puteţi crea tunele CIPE (criptate) direct din utilitarul grafic de configurare a reţelei. Dacă nu, vom folosi protocolul GRE, ca mai jos.
Să presupunem că există două reţele private A şi B, 192.168.1.0 şi 192.168.2.0 între care se doreşte a fi realizat tunelul. Pe reţeaua A, există un router Linux având adresa publică 10.10.10.1, iar pe cea de-a doua routerul are 20.20.20.2 (adrese oarecare, alese cu rol de exemplu).
Mai întâi, verificaţi că cele două Linux-uri au, în kernel, suport pentru GRE - dacă nu, activaţi acest suport pe amândouă, incluzând modulul ip_gre.o:
modprobe ip_gre
Folosind o cheie comună, 22.33.44.55, aleasă aleator, creaţi capătul tunelului pe reţeaua apropiată, locală:
/sbin/ip tunnel del vacanta 2> /dev/null
/sbin/ip tunnel add mode gre vacanta
local 10.10.10.1 remote 20.20.20.2 key 22.33.44.55 ttl 255
/sbin/ifconfig vacanta 192.168.10.1
pointopoint 192.168.10.2
/sbin/route add -net 192.168.2.0 netmask
255.255.255.0 gw 192.168.10.2
Aici 192.168.10.1 şi 192.168.10.2 sunt adresele capetelor de tunel, pe cele două reţele.
Pe reţeaua distantă, scrieţi:
/sbin/ip tunnel del acasa 2> /dev/null
/sbin/ip tunnel add mode gre acasa
local 20.20.20.1 remote 10.10.10.1 key 22.33.44.55 ttl 255
/sbin/ifconfig acasa 192.168.10.2 pointopoint
192.168.10.1
/sbin/route add -net 192.168.1.0 netmask
255.255.255.0 gw 192.168.10.1
Includeţi aceste comenzi în scripturi care se execută la lansare, spre exemplu în /etc/rc.d/rc.local. Odată lansate cele două scripturi, tunelul Dvs. ar trebui să fie activ.
Încheiere
Dacă aţi activat acest tunel comod, iată că puteţi lucra din nou - nu mai sunteţi în vacanţă ☺ !
Până la întâlnirea noastră viitoare, vă aştept cu întrebări şi sugestii pe
www.linuxwill.go.ro şi
pe linuxwill@go.ro.
|