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: 2997
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. 2024 )