Această postare încearcă să clarifice puțin despre modul în care funcționează rețelele și despre cum să transformăm echipamentul nostru Linux într-un router care asigură puțin mai mult rețeaua noastră, fie acasă, fie chiar de afaceri. Deci, să trecem la treabă:
Rutare și filtrare
Pentru a vorbi și a înțelege despre rutare putem defini mai întâi care este rolul routerului? Pentru aceasta putem spune că un router, pe lângă crearea unei rețele și permiterea conexiunii cu alte echipamente (știind că putem face acest lucru cu un AP, Switch, Hub sau altele) are capacitatea de a conecta două rețele diferite între ele.
După cum putem vedea în imagine, există o rețea locală "10.0.1.0" care este creată de router și ajunge la una dintre cele două interfețe ale acestuia. Apoi, routerul de pe cealaltă interfață are o altă rețea, cu IP-ul său public cu care se poate conecta la Internet. Funcția de rutare este practic să servească ca intermediar între aceste două rețele, astfel încât acestea să poată comunica.
Linux ca router.
Bineînțeles, Linux Kernel are deja capacitatea de a face „redirecționare”, dar în mod implicit este dezactivat, așa că, dacă dorim ca Linux-ul nostru să facă acest lucru, trebuie să mergem la fișier.
/proc/sys/net/ipv4/ip_forward
Acolo vom descoperi că este un fișier care conține doar un „0” zero, ceea ce trebuie să facem este să-l schimbăm într-un „1” pentru a activa acest comportament. Din păcate, acest lucru este șters când repornim computerul, pentru a-l lăsa activat implicit trebuie să folosim comanda:
sysctl net.ipv4.ip_forward=1
Sau editați-l direct în fișier /etc/sysctl.conf. În funcție de distribuție, această configurație poate fi, de asemenea, într-un fișier din /etc/sysctl.d/.
În mod implicit, Linux-ul nostru trebuie să aibă o tabelă de rutare, care este în general configurația rețelei noastre LAN și conexiunea la router. Dacă vrem să vedem această rutare, putem folosi două comenzi:
route -n
o
netstat -nr
Ambele comenzi ar trebui să revină la fel.
În general, această configurație este suficientă pentru ca Linux-ul dvs. să servească drept gateway și alte computere pot naviga prin computerul nostru. Acum, dacă dorim ca Linux-ul nostru să conecteze două sau mai multe rețele, fie că sunt locale sau nu, de exemplu, putem folosi rutele statice.
Să presupunem că Linux-ul meu are două interfețe de rețea, prima are o conexiune la Internet a cărei rețea este 172.26.0.0 și a doua (10.0.0.0) are câteva computere dintr-o altă rețea locală. Dacă vrem să direcționăm pachetele către acea altă rețea, putem folosi:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
În general este:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
dacă dăm traseu -n indiferent dacă această rețea există sau nu, această rutare va fi fixată în tabelul nostru.
Dacă vrem să eliminăm direcționarea menționată, putem folosi
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
Practic iptables este utilizat pentru filtrarea pachetelor, de ieșire, de intrare sau altele, ceea ce îl face un instrument excelent pentru gestionarea traficului de rețea. Ei bine, iptables, la fel cum ne permite să filtrăm traficul aceluiași computer, ne permite și să filtrăm traficul care trece prin el. (Redirecționare). Iptables pot fi împărțite în tabele, lanțuri și acțiuni.
- Panouri: practic pot exista două tabele, filtru, pentru a filtra pachete și nat pentru a traduce adrese, adică pentru a trece de la o rețea la alta.
- Lanţuri: Lanțul se referă la tipul de trafic pe care vrem să îl filtrăm sau să înotăm, adică la ce trafic urmează să aplicăm tabelele? și pot fi: INTRARE: Trafic de intrare, IEȘIRE: trafic de ieșire sau REDIRECŢIONA: Traficul care trece prin el, dar nu este propria conexiune.
- Poate apărea, de asemenea POSTOUTARE, Folosit pentru a trata pachetul într-un anumit mod după ce a fost direcționat.
- acţiuni: Acțiunile sunt practic acțiunea care trebuie efectuată cu lanțul. Această acțiune poate fi CĂDERE BRUSCA, care doar distruge acel trafic sau ACCEPT. care permite traficului să facă acțiunea respectivă.
Regulile IPTABLES sunt salvate și executate în ordinea în care au fost create și, dacă o regulă șterge o regulă anterioară, se aplică întotdeauna ultima regulă din ordine.
Politici de firewall.
În general, firewall-urile funcționează în mod natural în două moduri:
- Permiteți tot traficul, cu excepția sau
- Nu permiteți trafic, cu excepția ...
Pentru a aplica politici, utilizați IPTABLES - LANȚ DE ACȚIUNE P
Unde șirul reprezintă tipul de trafic (INPUT, OUTPUT, FORWARD, POSTROUTING ...) și acțiunea este DROP SAU ACCEPT.
Să vedem un exemplu.
Aici vedem că la început am reușit să fac ping, apoi i-am spus IPTABLES că tot traficul OUTPUT era DROP sau nu era permis. Apoi i-am spus IPTABLES să o accepte.
Dacă vom construi un firewall de la zero, trebuie să aplicăm întotdeauna regulile de (Nu permiteți niciun trafic, cu excepția ... Pentru aceasta, atunci aplicăm regulile
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORDARD DROP
Pentru a returna, scriem același lucru și înlocuim DROP cu ACCEPT.
În acest moment, întrucât tot traficul este refuzat, începem să le spunem IPTABLE-urilor ce trafic poate avea.
Sintaxa este:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
În cazul în care:
String = INPUT, OUTPUT sau FORWARD
origine_ip = Originea pachetelor, acesta poate fi un singur IP sau o rețea și în acest caz trebuie să specificăm masca).
destinație_ip = unde merg pachetele. acesta poate fi un singur IP sau o rețea și în acest caz trebuie să specificăm masca).
protocol = indică protocolul folosit de pachete (icmp, tcp, udp ...)
port = portul de destinație al traficului.
actiune = DROP sau ACCEPT.
Exemplu:
Se aplică TOATE politicile restricționate.
Apoi adăugăm regulile pentru a putea avea trafic prin portul 80 HTTP și 443 HTTPS, cu protocolul TCP. Apoi portul 53 Se aplică pentru ca clientul DNS să rezolve domeniile, altfel nu veți naviga. Acest lucru funcționează cu protocolul UDP.
Linia:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Acest lucru se datorează următoarelor: Când efectuați o cerere HTTP, de exemplu, vă conectați la portul 80 al serverului, dar serverul pentru a returna informațiile trebuie să se conecteze cu dvs. prin orice port. (În general mai mare de 1024).
Deoarece toate porturile noastre sunt închise, acest lucru nu va fi realizat decât dacă deschidem toate porturile mai mari de 1024 (idee greșită). Ceea ce spune acest lucru este că tot traficul de intrare care provine dintr-o conexiune pe care am stabilit-o eu este acceptat. Adică, o legătură pe care, în principiu, am început-o.
Sper că ți-au plăcut aceste informații. În următoarea voi vorbi despre NAT, Proxy și scripturi pentru Firewal.
Aceasta este baza pe care o iau mulți antreprenori pentru a-și fabrica propriile firewall-uri, de aceea există pe piață atât de multe mărci de firewall-uri cu Linux încorporat, unele bune și altele nu atât.
Articol excelent. Aștept cu nerăbdare partea a doua.
Foarte bună explicație, m-a ajutat să înțeleg proxy-ul muncii mele. Mulțumesc
Buna Jlcmux,
Excelent, mi-a plăcut foarte mult, când va fi disponibilă cealaltă parte?
Salutări și mulțumiri pentru distribuire
Mulțumesc pentru comentariu.
Am trimis cealaltă parte ieri, în cursul zilei cred că o vor publica.
Salutări.
Foarte bun prieten prieten @ Jlcmux, chiar am învățat cu el, deoarece mi-a lămurit câteva îndoieli pe care le aveam de ceva timp, apropo nu te-ar deranja să împărtășești cartea sursei articolului, cea a lui Sébastien BOBILLIER, bine slau2s și acum pentru a vedea partea a 2-a, salu2s.
Bună ziua Vă mulțumim că ați comentat Israel.
Se pare că am cartea în formă fizică. Dar am găsit acest link pe Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Cred că este complet.
Articol foarte bun, adaug o întrebare: Care ar fi avantajul utilizării Linux ca router, dacă există, cu privire la un hardware dedicat acestuia? Sau este doar pentru exerciții fizice? Știu că există distribuții dedicate, dar nu știu dacă vor salva computerele vechi sau vor oferi mai multă flexibilitate în configurare.
Ei bine, cred că avantajele și dezavantajele depind de scenariul în care urmează să implementați acest lucru. De ce cu siguranță nu veți cumpăra un UTM sau ceva de genul acesta pentru casa dvs.? Și poate și pentru o afacere mică care nu își poate permite. De asemenea, este bun ca exercițiu, deoarece vă ajută să înțelegeți toată logica acestui lucru și puteți configura mai bine un FWall dedicat. În plus, aproape toate aceste dispozitive cu adevărat, ceea ce au este Embedded Linux.
Salutări.
Bună, o întrebare, puteți genera o interfață „artificială” în Linux pentru rutare similară între rețele? (stil de urmărire a pachetelor) pentru a lucra cu mașini virtuale? de exemplu, dacă am eth0 (pentru că am un singur card, desigur) pot crea eth1 pentru a crea o altă rețea? Foarte bun tutore!
Desigur, în Linux puteți crea interfețe virtuale. Dacă aveți eth0, puteți avea eth0: 0, eth0: 1, eth0: 2 ... etc.
Deci bine, mulțumesc pentru distribuire