Linksys WRT54G/Configurarea WRT54GL pentru mărirea TTL-ului
Introducere
[modificare]În România există foarte mulți ISP care trimit pachetele către utilizatori cu ttl=1, pentru a împiedica furtul de net. Din păcate acest lucru afectează și utilizatorii cinstiți, care posedă mai multe calculatoare și doresc să le conecteze în rețea, eventual wireless.
Acest articol va explica cum se poate realiza acest lucru cu ajutorul unui router care rulează Linux.
Ce este TTL?
[modificare]TTL, sau Time to live, este un câmp din antetul pachetelor IP care precizează prin câte servere/routere poate trece pachetul respectiv. Acest câmp este setat de calculatorul care trimite pachetul și este decrementat de fiecare router prin care va trece. Când valoarea sa ajunge la 0, pachetul este distrus. După cum spuneam, anumiți ISP modifică valoarea TTL-ului la 1 pentru toate pachetele la ultimul router înainte de calculatorul utilizatorului. În acest fel, dacă înainte de calculator mai pui un router, toate pachetele primite vor fi distruse de acesta.
Cum se poate modifica TTL?
[modificare]Un răspuns simplu este: în loc să-l decrementăm, îl setăm la orice valoare dorim. În Linux, acest lucru se realizează prin comada iptables. Cum se procedează exact puteți afla din [7]. Pentru comenzile care vă trebuie pentru modificarea TTL, citiți în continuare. :)
Cerințe
[modificare]Cunoștințe necesare
[modificare]CUNOȘTINȚE INDISPENSABILE (aka dacă nu ești sigur pe astea las-o baltă):
- lucrul în linie de comandă în Linux;
- configurarea plăcii de rețea pe sistemul tău de operare (adresă IP, adresă de rețea, netmask, DNS, DHCP);
- cunoștințe despre rutare;
- folosirea unei interfețe web (deși dacă ai ajuns să citești asta probabil că măcar atât ești în stare)
CUNOȘTINȚE RECOMANDATE (aka caută și tu pe net):
- cum se poate prinde ISP-ul că tu ai router;
- securitatea în rețele wireless (dacă ai un router wireless)
Cerințe hardware
[modificare]Pentru a implementa această soluție, aveți nevoie de un router care să ruleze Linux. O listă a routerelor suportate de OpenWrt găsiți aici.
Linksys WRT54GL
[modificare]Eu am ales un router Linksys WRT54GL. WRT54G a fost primul router la care Linksys a făcut publice sursele firmwareului său. Ulterior, Linksys a trecut de la Linux la VxWorks dar a scos pe piață modelul GL care rulează în continuare Linux. Puteți găsi prețuri căutând pe Google.
Instalarea OpenWrt
[modificare]OpenWrt este una din multele distribuții de Linux apărute pentru routerele care rulează Linux. Deși nu există încă versiunea 1.0 (deci teoretic sistemul este încă în faza de testare), OpenWrt este suficient de stabil pentru utilizatorii obișnuiți.
- Înainte de orice, citiți ghidul oficial de instalare
Modalitatea cea mai simplă de instalare, precum și singura prezentată aici, este din interfața web a routerului. Eu personal vă recomand să setați conexiunea la internet din interfața web ÎNAINTE de a instala OpenWrt. Valorile setate se vor păstra.
- Downloadați de aici imaginea de firmware corespunzătoare routerului folosit (pentru WRT54GL fisierul este openwrt-wrt54g-squashfs.bin )
- Intrați în interfața web la adresa http://192.168.1.1/ și mergeți la system -> administration -> firmware upgrade
- Alegeți fișierul downloadat și cu asta basta!ATENȚIE! Instalarea NU trebuie întreruptă sub nici un motiv! Aveți grijă să nu se întrerupă curentul în timpul instalării. Dacă aveți un UPS, folosiți-l. O instalare întreruptă poate duce la distrugerea routerului.
- După instalarea OpenWrt este recomandată (dar nu neapărat necesară) instalarea X-Wrt, un set de pachete care ameliorează interfața cu utilizatorul a OpenWrt. Principala componentă este webif2, o interfață web complet modificată. Instalarea X-Wrt se poate face online, direct din pagina principală a proiectului. Pozele prezentate în continuare folosesc X-Wrt. Multe dintre ele pot fi din versiuni mai vechi, dar în principiu nu există deosebiri esențiale.
Configurarea
[modificare]Configurarea minimală a routerului
[modificare]După ce modificați ceva din setări, amintiți-vă să apăsați pe butonul "Save". La sfărșit trebuie să apăsați pe legătura "Apply Changes" pentru ca modificarile să fie efectuate pe router
Stabilirea unei parole
[modificare]La prima pornire a OpenWrt vi se va cere să vă setați o parolă pentru utilizatorul root. Acest lucru este necesar pentru asigurarea securității routerului.
Instalarea librăriilor necesare
[modificare]Pentru a realiza configurările prezentate mai jos, aveți nevoie de câteva pachete suplimentare. Instalarea lor se face foarte ușor din interfața web, mai exact din tabul System ->Packages. Trebuie să alegeți din lista de pachete disponibile toate pachetele care încep cu iptables- sau cu kmod-ipt-. În mod normal, dacă instalați pachetul iptables-extra, celelalte pachete necesare vor fi instalate automat. Dacă nu, apăsați pe linkul Install de lângă fiecare pachet.
Configurarea interfeței externe
[modificare]În interfața de rețea WAN veți introduce cablul de rețea care vine de la ISP/modemul de cablu/modemul ADSL. Pentru a o configura, mergeți în interfața web la tabul Network ->WAN-LAN -> WAN Configuration. Configurarea este intuitivă, ea semănând destul de mult cu cea din Windows. Singurul lucru care merită menționat este să vă salvați modificările înainte de a adăuga un server DNS. (Fig.1)
Configurarea interfeței cu rețeaua locală
[modificare]Pentru a modifica aceste setări, mergeți în interfața web la tabul Network ->WAN-LAN -> WAN Configuration. În principiu, setările default ar trebui să fie OK. Fig.2)
Configurarea rețelei Wireless
[modificare]Dacă aveți și o interfață wireless, o puteți configura din tabul Network ->Wireless. Dacă nu știți cu ce se mănâncă setările respective, căutați pe net sau lăsați-le așa cum sunt. Fig.3)
Configurarea calculatoarelor
[modificare]Cel mai ușor este să vă setați calculatoarele să-și ia adresa IP automat de la serverul DHCP (încorporat în router). Pentru a modifica modul de funcționare al acestui server, mergeți în interfața web a routerului la tabul Network ->DHCP. Setările default ar trebui să fie OK. Fig.4)
Mărirea TTL-ului
[modificare]În acest moment aveți o rețea funcțională, dar care nu poate accesa Internetul :)
Singurul calculator pentru care ar trebui să funcționeze este routerul însuși. Pentru a verifica acest lucru, logați-vă prin ssh la router (un client foarte bun de ssh pentru Windows este putty) folosind userul root și parola setată la instalare, apoi încercați să scrieți în linia de comandă ping www.yahoo.com. Dacă serverul vă răspunde, ați terminat cu prima parte. Dacă nu, verificați că ați băgat toate firele și ați configurat corect routerul.
Observați că mesajele de răspuns de la yahoo au ttl=1. În continuare vom încerca să modificăm acest ttl la 64.
Primul lucru (și de fapt și singurul) care trebuie făcut este să modificăm fișierul /etc/firewall.user. Acest fișier este rulat la start-up și setează modul în care routerul tratează pachetele primite. Pentru modificare trebuie să folosim editorul vim. Dacă nu sunteți familiar cu comenzile sale, citiți mai întâi manualul.
- Conectați-vă prin ssh la router.
- Când vă apare linia de comandă, scrieți:
vi /etcfirewall.user
- Chiar la începutul fișierului, adăugați liniile următoare:
/sbin/insmod ipt_ttl.o 2> /dev/null /sbin/insmod ipt_TTL.o 2> /dev/null /sbin/insmod ipt_recent.o 2> /dev/null
Aceste linii încarcă în kernel anumite librării (suprimând mesajele de eroare)
- Dacă nu le aveți deja, introduceți și liniile următoare:
WAN_IP=$(nvram get wan_ipaddr) LAN_IP=$(nvram get lan_ipaddr)
- În sfârșit ajungem și la liniile care modifică efectiv ttl-ul:
iptables -t mangle -F PREROUTING iptables -A PREROUTING -t mangle -d $WAN_IP -j TTL --ttl-set 64
Să explicăm un pic semnificațiile comenzilor. Prima linie golește, în tabelul mangle, suita de comenzi efectuate înainte de rutarea fiecărui pachet. A doua linie introduce, în același loc, o nouă comandă care setează ttl-ul la valoarea de 64. Pentru mai multe informații vedeți [6].
- Salvați fișierul. În acest moment ar trebui să puteți accesa internetul de pe oricare din calculatoarele din rețea fără probleme.
Alte configurări
[modificare]Internetul funcționează, dar ce facem dacă dorim să rulăm un server sau să folosim programe p2p gen DC++ sau BitTorrent? Răspunsul este port forwarding. Setările respective se pot face din interfața web, din tabul Network ->Firewall. Acolo puteți seta reguli de tratare a pachetelor în funcție de IP/portul sursă/destinație. Fig.5) În acest tutorial vom arăta cum să deschidem portul necesar pentru a fi "conectabili" folosind clientul de torrente BitComet și cum să blocăm accesul SSH pe router din Internet.
Forwardarea unui port
[modificare]BitComet ascultă, în setările default, pe portul 7935. Algoritmul prezentat aici poate fi însă aplicat pentru orice alt port, făcând posibilă rularea unui server în spatele routerului. Dacă dorim ca mai multe calculatoare să ruleze acelși program, trebuie să le asociem porturi diferite pe router.
- Din Network ->Firewall alegem o regulă nouă de tip Forward;
- La Forward to scriem adresa calculatorului care va rula BitComet;
- La Port scriem 7935 (portul pe care va asculta aplicația noastră;
- Din meniul de deasupra alegem Destination Ports și scriem portul de pe router, în cazul nostru tot 7935;
- Apăsați pe Save și nu uitați să și aplicați schimbările.
Blocarea unui port
[modificare]Blocarea unui port este similară cu forwardarea. Alegem o regulă de tip Drop, adăugăm portul destinație (în cazul nostru 22 - portul default de SSH) și salvăm
Legături externe
[modificare]- Openwrt.org, furnizorii distribuției de linux folosite
- Linksys.com
- O discuție foarte interesantă și la obiect despre mărirea TTL
- Linux.ro - discuția de la care a pornit totul
- Linksys WRT54G/GL/GS pe Wikipedia - mai multe informații și firmware-uri alternative
- Pagina de manual pentru iptables
- Linux 2.4 Packet Filtering HOWTO - un document care explică în detaliu cum se poate face filtrarea pachetelor pe Linux 2.4