#! / bin / sh
ipfw = "/ sbin / ipfw" # a declarat variabila ipfw, care conține calea către fișierul executabil al firewall-ului.
$ -f flush # șterge lista tuturor regulilor vechi
$ -f flush queue # șterge lista de coadă
$ -f flush flush # șterge lista canalelor
Salvați și faceți fișierul executabil:
#chmod + x /etc/firewall.conf
Avem două mașini virtuale care se pun perfect între ele. OS Windows XP (192.168.0.10) și OS FreeBSD 8.2, descrise chiar la începutul articolului, cu firewall-ul ipfw.
Regula de interzicere pentru ipfw (negare)
$ add 00010 deny icmp de la orice la mine prin em1
Deci, vom începe analiza zborurilor.
Structura regulii este foarte simplă. Mai întâi, utilizați variabila ipfw. pe care le avem la începutul scenariului. Puteți declara orice variabil NAME = "VALUE" în textul scriptului și îl puteți utiliza în script ca $. Este foarte convenabil dacă trebuie să schimbați aceeași valoare în locuri diferite.
Astfel, add 00010 - este adăugarea a normelor cu numărul 10. Numerotarea regulile sunt 1-65535, acesta din urmă regula - care să permită în mod implicit (opțiunea definită kernel IPFIREWALL_DEFAULT_TO_ACCEPT), sau implicit este interzisă.
Următoarea acțiune este. În acest caz, neagă, poate fi permisă. neagă. etc., le vom atinge pe măsură ce studiem.
Apoi vine protocolul. Puteți dezactiva orice (toate), doar tcp sau ip (directiva corespunzătoare).
În acest exemplu, regula este:
$ add 00010 deny icmp de la orice la mine prin em1
Trebuie să spun că regulile sunt aplicate în ordinea numerotării, adică regulile cu un număr mai mic sunt comparate mai devreme decât cu un număr mai mare.
Pachetul trece prin lista de reguli până la primul meci. Apoi, cu pachetul, acțiunea specificată în regulă are loc.
Regulile sunt aplicate apelând pur și simplu la acest fișier:
E un executabil. Este ușor să vezi că ping-urile nu merg acum.
Verde stresat înainte de aplicarea regulii de firewall, și după roșu.
Limitarea ratei de date.
Acum ne vom ocupa de limitarea lățimii de bandă a rețelei. Aproape am desenat o diagramă a funcționării conductei.
Vedem două direcții de transfer de date. Maro și verde. Maro de la vânturi în libertate, verde - înapoi. Deci, o altă precizare importantă pe care fiecare direcție o are și în afară. Ie Acesta este transferat din Windows (acest lucru este afară), dar în FreeBSD (în), dimpotrivă, pentru FreeBSD, out va fi începutul canalului, iar pentru noi este de intrare, înseamnă în. Potrivit imaginii, cred că este de înțeles.
Deci, Pipe - o conductă - este pusă pe orice direcție. Și întrucât aceasta "îngustă" canalul la valoarea dorită. Vom folosi utilitarul Iperf pentru a testa viteza rețelei. Măsoară viteza inițial:
Instalați conducta. Pentru a face acest lucru, adăugați următoarele la lista de reguli firewall:
$ pipe 1 config bw 2048Kbit / s
Această regulă definește o țeavă cu numărul 1, cu o lățime de 2048 Kbit / s. și anume aproximativ 2 Mbit / s. bw - lățime de bandă - lățimea canalului.
Acum să trecem canalul în conductă. Deoarece pentru testarea de către utilitarul Iperf FreeBSD vom avea un server și Windows XP ca client, atunci vom reduce viteza în locația "in" a FreeBSD, adică la intrare.
HOST = "192.168.0.10/32"$ adăugați țeavă 1 tcp de la $ la mine prin em1
#ipfw show - afișează lista de reguli și numărul de pachete (octeți) omise de aceste reguli
#ipfw list - afișează numai lista de reguli
Aplicăm noi reguli: