Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Referat informatica - Configurarea unui ruter Linux pentru doua retele sub-locale

Informatica




Informatica

Sisteme de Operare

Subiect: Configurarea unui ruter Linux pentru doua retele sub-locale .

Introducere

Sistemul de operare linux cuprinde mai multe functionalitati printre care si accea de "routing". Doua sau mai multe subretele se pot interconecta prin intermediul unei astfel de solutii. Schema retelei este prezentata în figura 1. De exemplu, daca un host din subnetul unu doreste sa acceseze un alt host din subnetul doi, masina linux va ruta pachetele astfel încât acestea sa ajunga la destinatie si înapoi. Pentru interconectarea celor doua subretele, masina linux trebuie sa fie dotata cu doua interfete de retea. De asemenea, pentru fiecare host din subnetul unu care doreste sa acceseze un host din subnetul doi, trebuie setat ca si "gateway" masina linux. Astfel toate pachetele cu alta destinatie decât subnetul curent, va fi trimis catre "gateway" înspre directionare.

In afara de rutare se mai pot face si operatii de filtrare de pachete, astfel masina linux functionând si ca un "firewall". Un "firewall" consta într-un set de reguli prin care se filtreaza traficul. De exemplu daca se doreste ca "host-ul"(adresa) A din subnetul unu sa acceze doar o pagina web aflata pe "host-ul" B din subnetul doi, regulile din "firewall" vor opri orice alt acces decât cel dorit.

Un alt rol pe care-l poate îndeplini masina linux pe lânga rutare si filtrare de pachete, este acela de control al traficului. Prin aceasta functionalitate se întelege controlul latimii de banda pentru un "host" sau pentru un grup de "host-uri". De exemplu din totalul latimii de banda se poate aloca un anumit procent unui trafic ce este critic iar restul sa fie împartit echitabil între ceilalti utilizatori.

Cerinte hardware

Masina linux este un PC cu doua interfete de retea, o interfata într-un "subnet" si cealalta în celalalt "subnet". Cerintele hardware sunt in functie de distributia de linux folosita. În cazul de fata am utilizat Suse Linux 9.0. Cerintele hardware sunt:

Minime:

a.                   CD-ROM

b.                  Procesor: AMD Athlon/Duron, Intel Pentium III/4

c.                   RAM: 128 MB

d.                  Spatiu Hard-disk: 500MB

e.                   Interfete de retea: în functie de mediul fizic, placi de retea Ethernet, modem-uri dial-up, de linie închiriata, DSL, interfete wireless etc.

Recomandate:

  • RAM: 512MB
  • Spatiu Hard-disk: 3GB

"Subneturile" sunt definite dupa cum urmeaza:

  • Subnet 1: 192.168.0.0 mask: 255.255.255.0
  • Subnet 2: 192.168.1.0 mask: 255.255.255.0

Adresele de IP ale interfetelor sunt:

  • Interfata 1: 192.168.0.1
  • Interfata 2: 192.168.1.1

Cerinte software.

În prima faza trebuie sa ne decidem asupra distributiei de Linux pe care dorim s-o folosim. Exista multe distributii de Linux, dar cele mai importante ar fi:

  • Slackware - se recomanda utilizatorilor avansati.
  • Debian - instalarea si configurarea necesita cunostinte avansate de "software" si "hardware".
  • Suse - contine "tool-uri" de configurare puternice si usor de utilizat cum ar fi YAST si Sax.
  • RedHat - este cea mai raspandita distributie. Programele sunt "RPM-uri", fiind deosebit de usor de instalat.

În cazul nostru, distributia linux folosita este Suse Linux 9.0, versiunea de kernel fiind 2.4.21. De asemenea sunt necesare urmatoarele programe:

insmod, lsmod, modprobe. Aceste "tool-uri" permit încarcarea de module în kernel. Modulele încarcabile sunt de regula drivere. Astfel daca se instaleaza "hardware" nou în masina linux, trebuie încarcat modulul aferent acestuia pentru a-i asigura functionarea. Insmod încarca un modul în kernel, lsmod afiseaza modulele. Modprobe este mai performant în sensul ca testeaza modulul înainte de al încarca. De exemplu driverele unei placi de retea trebuie încarcate în kernel, în cazul în care aceasta nu este compilata în prealabil în kernel:

insmod /lib/modules/2.4.21-99-default/kernel/drivers/net/r8169.o



ifconfig - permite configurarea interfetelor de retea. Fara argumente, comanda ifconfig, afiseaza starea interfetelor de retea active. În cazul în care argumentul este o singura interfata, atunci se va afisa doar starea interfetei date. Pentru a se afisa si interfetele care sunt "down"(jos,picate) se foloseste argumetul -a.

ifconfig eth0 va afisa urmatoarele informatii:

eth0 Link encap:Ethernet HWaddr 00:09:6B:07:CF:B2

inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:4262267 errors:0 dropped:0 overruns:0 frame:0

TX packets:5121 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:296341473 (282.6 Mb) TX bytes:482373 (471.0 Kb)

Interrupt:9 Base address:0x2000 Memory:e8100000-e8100038

Se pot observa informatii cum ar fi adresa de IP, masca, adresa de broadcast, MAC-ul, numarul de pachete trimise/receptionate.

De asemenea cu comanda ifconfig se pot schimba setarile interfetei de retea. Comanda de mai jos va schimba adresa de IP si netmask-ul.

ifconfig eth0 192.168.0.10 netmask 255.255.255.0

route. Aceasta comanda permite vizualizarea/actualizarea tabelei de rutare. De regula se foloseste pentru a seta rute statice catre anumite "hosturi" sau subretele. Pentru afisarea tabelei de rutare se foloseste comanda route fara nici un parametru. "Output-ul" comenzii este cum urmeaza:

Destination Gateway GenMask Flags Metric Ref Use Iface

* 255.255.255.255 UH 0 0 0 eth0

* 255.255.255.255 UH 0 0 0 eth1

* 255.255.255.0 U 0 0 0 eth0

* 255.255.255.0 U 0 0 0 eth1

* 255.0.0.0 U 0 0 0 lo

default 192.168.1.100 0.0.0.0 UG 0 0 0 eth1

De observat ruta "default" care specifica adresa(gateway-ul) unde se vor trimite toate pachetele catre alte destinatii decat cele doua "subneturi".

iptables. Se foloseste pentru adaugarea, modificarea si vizualizarea tabelelor de reguli de filtrare din kernel. Pot fi create de catre utilizator si alte tabele. Fiecare tabela contine mai multe "chain-uri"(lanturi), iar fiecare "chain" este de fapt un sir de reguli peste care pachetele pot face sau nu, "matching"(potrivirea). În functie de regula peste care face "matching" un pachet poate fi:

      • Accept - pachetul va trece
      • Drop - pachetul va fi aruncat
      • Queue - pachetul va fi trimis în spatiul(contextul) utilizator.
      • Return - se opreste traversarea "chainului"

Exista trei tabele disponibile. Daca kernelul este configurat sa încarce automat modulele, atunci el va încerca sa încarce modulul necesar pentru fiecare tabela. Asta daca nu e încarcat deja. Asadar cele trei tabele sunt:

Filter - este tabela implicita. Contine trei "chainuri" "Input"(pentru pachetele care intra), "Output"(pachete generate local), Forward(pachete ce trec prin).

Nat - aceasta tabela este consultata cand se întalneste un pachet care creaza o noua conexiune. Are trei "chain-uri": "Prerouting"(pentru pachete care tocmai intra), Output(pachete generate local), "Postrouting"(pachete care sunt pe cale sa iasa)

Mangle - este o tabela folosita pentru alterarea pachetelor.

tc - afiseaza/actualizeaza setarile de control de trafic. Folosind aceasta comanda se pot întârzia pachete. De fapt limitarea vitezei este de fapt o întarziere a pachetelor. Se pot defini mai multe clase, fiecarei clase putându-i-se atribui un minim si un maxim. Clasele îsi pot îmrpumuta una alteia latime de banda.

Implemtarea solutiei

Pentru a îndeplini functiuni de "router", masina linux trebuie trebuie configurata dupa cum urmeaza:

i. se încarca daca este nevoie modulele interfetelor de retea:

modprobe rtl8139.o

ii. daca interfetele de retea sunt "up", urmeaza configurarea lor

ifconfig eth0 192.168.0.1 netmask 255.255.255.0

ifconfig eth1 192.168.1.1 netmask 255.255.255.0

iii. se verifica daca cele doua interfete sunt "up and running"

ifconfig

iv. se face "enable" la "forwarding-ul" între cele doua interfete de retea.



echo 1 > /proc/sys/net/ipv4/ip_forward

v. introducerea de reguli în "firewall". Pentru a se realiza acest lucru, cea mai simpla solutie este realizarea unui fisier de tip "batch". Acesta va contine regulile din "firewall".

IPTABLES="/usr/local/bin/iptables"

modprobe ip_tables

$ IPTABLES -F

$ IPTABLES -F -t nat

IPTABLES -X firewall


Seteaza lantul protectiei "Firewall".
$ IPTABLES -N firewall
$ IPTABLES -A firewall -j LOG --log-level info --log-prefix "Firewall:"
$ IPTABLES -A firewall -j DROP


"Accept ourselves"
$ IPTABLES -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT

Accept DNS
$ IPTABLES -A INPUT -p udp --source-port 53 -j ACCEPT
$ IPTABLES -A INPUT -p tcp --source-port 113 -j ACCEPT
$ IPTABLES -A INPUT -p tcp --destination-port 113 -j ACCEPT

Accepta HTTP (Hyper Text Markup Language)
$ IPTABLES -A INPUT -p tcp --destination-port 80 -j ACCEPT

Trimite tot restul la "firewall".
$ IPTABLES -A INPUT -p icmp -j firewall
$ IPTABLES -A INPUT -p tcp --syn -j firewall







$ IPTABLES -A INPUT -p udp -j firewall

vi. controlul traficului daca este cazul. Alegem interfata eth1

Stergerea qdisc-ului.

tc qdisc del dev eth1 root handle 1:

Definesc QDISC-ul mare

tc qdisc add dev eth1 root handle 1: htb (htb = regula de întârziere)

Definesc clasele :

Clasa(1) parinte de 512kbit cu maxim 512kbit

tc class add dev eth1 parent 1: classid 1:1 htb rate 512kbit

Subclasa 2 cu 256kbit alocata(max 512kbit) si 2 subclase de câte 128kbit(max 256kbit)

tc class add dev eth1 parent 1:1 classid 1:2 htb rate 256kbit ceil 512kbit

tc class add dev eth1 parent 1:2 classid 1:21 htb rate 128kbit ceil 256kbit

tc class add dev eth1 parent 1:2 classid 1:22 htb rate 128kbit ceil 256kbit

Subclasa 3

tc class add dev eth1 parent 1:1 classid 1:3 htb rate 256kbit ceil 512kbit

tc class add dev eth1 parent 1:3 classid 1:31 htb rate 4kbit ceil 32kbit

tc class add dev eth1 parent 1:3 classid 1:32 htb rate 4kbit ceil 32kbit

Setarea filtrelor pentru fiecare clasa

tc filter add dev eth1 parent 1: protocol ip prio 1 handle 21 fw classid 1:21

tc filter add dev eth1 parent 1: protocol ip prio 1 handle 22 fw classid 1:22

tc filter add dev eth1 parent 1: protocol ip prio 1 handle 31 fw classid 1:31

tc filter add dev eth1 parent 1: protocol ip prio 1 handle 32 fw classid 1:32

iptables -A POSTROUTING -t mangle -d 192.168.1.10/32 -j MARK --set-mark 21

iptables -A POSTROUTING -t mangle -d 192.168.1.20/32 -j MARK --set-mark 32

Bibliografie :

Internetul .

https://linuxfaqs.de/howto/iptableshowto.php#praxis

https://www.linuxfaq.de/f/cache/1266.html (pagina)

https://www.linuxfaq.de/f/cache/1266.html#tth_sEc3 (linku exact)

https://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/ip.htm

https://ccrma.stanford.edu/planetccrma/man/man8/insmod.8.html

https://www.faqs.org/docs/linux_network/x-087-2-iface.ifconfig.html

https://publib16.boulder.ibm.com/pseries/en_US/cmds/aixcmds3/ifconfig.htm

https://linux.about.com/od/commands/l/blcmdl8_route.htm

https://www.linuxguruz.com/iptables/scripts/rc.firewall_012.txt




Document Info


Accesari: 3037
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )