User login

Poll

Window manager/desktop favorit?
KDE
10%
Gnome
45%
XFCE
30%
Enlightenment
0%
Blackbox, Fluxbox
15%
Windowmaker
0%
Altceva
0%
Total votes: 20

Partners

[banner]

[banner]

[banner]

Configurare router in FreeBSD

1) The scenario:

Avem un calculator care va fi folosit ca router, calculatorul are doua placi de retea (de0 si rl0), o placa este conectata la Internet prin IP public iar cealalta placa este conectata intr-o retea interna cu IP privat (IP ce va fi folosit ca gateway pentru celelalte masini din cadrul retelei).

De la furnizorul de internet (ISP) am primit urmatorul IP public: 82.79.81.12. Acest IP va fi folosit pe placa "de0" cu netmask 255.255.255.0, gateway 82.79.81.1 si DNS: 193.231.249.1

IP-ul interior va fi setat pe placa "rl0" cu adresa 192.168.10.1 si netmask: 255.255.255.0. Aceasta placa va fi conectata la un switch sau hub, la care vor fi conectate apoi statiile care vor folosi routerul pentru accesul la Internet.

2) Instalarea sistemului FreeBSD:

Deoarece masina va fi folosita ca router, este suficient a se alege pentru instalare optiunea Kern-Developer, optiune ce va instala toate programele binare, documentatia si sursele pentru nucleu. Vom avea nevoie de aceste surse pentru recompilarea nucleului (kernel).

3) Compilarea nucleului:

Vom compila nucleul FreeBSD pentru a activa suportul pentru firewall si limitarea traficului (ALTQ). Sursele nucleului se afla in directorul /usr/src/sys.

# cd /usr/src/sys/i386/conf
# cp GENERIC MYROUTER

Fisierul GENERIC contine setarile pentru nucleul implicit FreeBSD. Vom copia acest fisier sub numele MYROUTER si apoi vom edita MYROUTER

# vi MYROUTER

Adaugam urmatoarele linii in fisierul MYROUTER :

device pf # suport pentru firewallul PF
device pflog # suport pentru pflog
device pfsync # suport pentru pfsync

options		 ALTQ
options		 ALTQ_CBQ # Class Bases Queuing (CBQ)
options		 ALTQ_RED # Random Early Detection (RED)
options		 ALTQ_RIO # RED In/Out
options		 ALTQ_HFSC # Hierarchical Packet Scheduler
options		 ALTQ_PRIQ # Priority Queuing (PRIQ)
options		 ALTQ_NOPCC # Required for SMP build

Salvam fisierul, apoi vom genera fisierele de configurare folosind comanda:

# /usr/sbin/config MYROUTER

Compilam nucleul:

# cd /usr/src/sys/i386/compile/MYROUTER
# make depend
# make
# make install

Repornim calculatorul:

# reboot

4) In continuare editam fisierul /etc/hosts, trebuie sa arate astfel:

::1		  localhost.net localhost
127.0.0.1	  localhost.net localhost
82.79.81.12       router.net router
82.79.81.12       router.net.

5) Editam fisierul /etc/rc.conf (configuram adresele IP si activam firewallul) :

hostname="router.net"
ifconfig_rl0="inet 192.168.10.1 netmask 255.255.255.0"
ifconfig_de0="inet 82.79.81.12 netmask 255.255.255.0"
defaultrouter="82.79.81.1"
pf_enable="YES"

6) Editam fisierul /etc/resolv.conf pentru a adauga serverul care rezolva
domeniile (In acest fisier se adauga adresa DNS primita de la ISP):

domain router.net
nameserver 193.231.249.1

7) Adaugam urmatoarea linie in /etc/sysctl.conf:

net.inet.ip.forwarding=1

8) Configuram firewallul pentru NAT. Editam fisierul /etc/pf.conf si adaugam urmatoarele linii la locul lor potrivit:

# Macros: define common values, so they can be refernced and changed easily.
ext_if="de0"
int_if="rl0"

# Translation: specify how addresses are to be mapped or redirected.
nat on de0 from rl0/24 to any -> de0

# Filtering: the implicit first two rules are
pass in all
pass out all

9) Repornim routerul:

# reboot

Sfat: Daca se fac modificari in fisierul /etc/pf.conf, trebuie dat un "flush" la firewall ceea ce puteti face cu comanda:

# pfctl -f /etc/pf.conf

Daca doriti mai multe detalii despre pachetele care circula intre router si clienti folositi comanda:

# pfctl -s all -vv | less

Configurare router in FreeBSD

Ca o completare:
In handbook scrie ca nu este necesara activarea PF - ului adaugand urmatoarele linii in kernel:

device pf
device pflog
device pfsync

Aceste optiuni sunt puse doar ca scop informational. Daca compilati PF in kernel acest modul nu mai functioneaza.

Configurare router in FreeBSD

Da, intr-adevar se poate face totul fara a recompila kernelul cu urmatoarele linii :

device pf
device pflog
device pfsync

Dar daca doriti limitare de banda (traffic-shaping) aveti nevoie de ALTQ care dupa cum stiu nu functioneaza daca nu este compilat in kernel.

Configurare router in FreeBSD

try ipfw/dummynet ( see manpages )

My personal favourite: http://www.bsdnews.org/02/dummynet.php

--
J

Configurare router in FreeBSD

Jaymzu wrote:
try ipfw/dummynet ( see manpages )

My personal favourite: http://www.bsdnews.org/02/dummynet.php

--
J

Unii ar spune ca dummynet(4) e prea complicat ;-). pipe + dymamic queues e un concept demential ;-)
Apropos, pentru cine e mai in tema cu pf+altq: cum se poate face clasificarea pachetelor care ies dintr-un router cu NAT pe o coada egress care sa fie in stare sa diferentieze statiile interne? In exemplele pf pe care le-am intalnit am gasit doar cum se face asignarea unei cozi ingress pentru conexiunile initiate din reteaua locala, nu si la incadrarea intr-o coada egress pentru fiecare masina, ceea ce cred ca duce la imposibilitatea de a separa traficul egress per-internal-machine, ramanand doar clasificare per-port/protocol (nat printr-o singura adresa publica). Daca doreste cineva sa ma lamureasca....
PS: cu ipfw + dummynet se poate ;-)