natd
Submitted by Agkelos on Sat, 08/06/2005 - 08:41.
Salut !
Cum pot sa dau acces la internet prin natd (ipfw) pentru un singur computer ? Eventual, sa se verifice si MAC-ul inainte...
»
- Login to post comments
![[banner]](/images/banners/progra.png)
![[banner]](/images/banners/unixro.gif)
![[banner]](/images/banners/undeadly.png)
natd
http://www.unixro.net/tips/st/18.html
+ eventual un /etc/ethers unde pastrezi static ip + mac
natd
Salut !
Nu m-am exprimat corect... cum pot da internet pentru un singur computer ? Stiu cum sa configurez natd pentru mai multe sisteme, dar ma intereseaza cum pot sa dau acces pentru fiecare in parte.
Am o retea care trebuie sa o conectez la internet si gateway-ul lucreaza si ca server de fisiere si server de baze de date. Deci, nu pot bloca accesul la server. Dar ma intereseaza da dau internet doar la o parte din computere.
natd, dupa cum am observat eu, adauga o regula in lista ipfw care da net pentru toate computerele...
De asemenea, as fi curios cum pot sa fac si limitare (banuiesc ca se face cu pipe) dar sa fie limitare doar pentru internet, nu si pentru lucrul direct cu serverul, pentru ca transferul de fisiere in LAN vreau sa aiba cat de cat o viteza respectabila... doar de aia ii LAN :P
Chestia-i ca as putea sa-l pun pe linux si sa folosesc iptables... dar prefer FreeBSD ;)
natd
In primul rand, (dupa parerea mea) conteaza rezultatul, nu ce solutie folosesti (Linux/BSD/MS) atata timp cat face ceea ce vrei tu.
In al doilea rand nu ar trebui sa folosesti gateway-ul si ca server de date si fisiere. Asa ca, daca nu ai f mari restrictii de buget poti sa-ti iei un PI/II cu 2-2.5 mil pe care sa-l folosesti ca si router/firewall. Serverele vor fi mai libere si tie cred ca ti-ar fi mai usor sa dai acces prin gateway doar la cine vrei.
Daca e vorba de NAT si traffic shaping eu as spune ca pf ar fi cel mai potrivit.
natd
Am inceput de prin Decembrie sa lucrez pe FreeBSD si imi place mai mult decat Linux sau orice altceva, si e sistemul de operare in care as vrea sa ma "specializez". Sincer, am mai multa incredere in FreeBSD decat in Linux sau orice alta versiune de UNIX, fie ea si comerciala.
Asta trebuie incercata... au mai spus si altii ca pf e mai bun decat ipfw... trebuie sa studiez putin problema ;-)
natd
Combinatia ipfw + natd este cu dus si intors ;-). In acest caz pachetele care pleaca de la statia din retea ajung la router, sunt procesate de setul de reguli ipfw de pana la "divert natd ip from any to any" cu adresa ip originala. dupa ce trece si prin natd adresa ip nu mai este cea de LAN, ci adresa de alias, dupa cum e configurat natd. La retur se intampla ceva asemanator, doar ca pana la regula cu divert are ip public si dupa ce reintra in firewall din divert socket are adresa de lan. Cred ca `man libalias` ar trebui sa prezinte situatia un pic mai detaliat decat am facut-o eu. Pentru a rezolva problema cu viteza decenta la server + viteza limitata (indecenta) pentru internet trebuie sa determini pozitia in setul de reguli ipfw unde trebuie sa trimiti pachetele in queue, tinand cont de faptul ca implicit ceea ce ai clasificat intr-o coada nu mai revine in firewall. Inserarea pachetului in queue este ultima operatie pe care ar trebui sa o faci. Daca aceasta situatie nu ti se pare potrivita si stii sigur ca nu treci un pachet prin mai multe queues poti sa incerci sysctl net.inet.ip.fw.one_pass=0' si sa faci setul de reguli cum doresti. Pe scurt, ceea ce ai de facut este
# cateva prerechizite to me in via lan_iface port to out via lan_iface # mai pui dupa necesitati si alte protocoale to any in via lan_if out via lan_if
/sbin/kldload dummynet
/sbin/ipfw enable one_pass # nu cred ca merge natd + ipfw + dummynet altfel,
mare atentie la dublarea pachetelor in queues
/sbin/natd -n wan_iface --unregistered-only
# definitii de pipe-uri pentru traficul la si de la server
/sbin/ipfw pipe 1 config bw 99mbit/s; /sbin/ipfw pipe 2 config bw 99mbit/s
# pentru ca internetul nu va ajunge asa curand la 100mbit/s e de preferat sa faci alte pipe-uri pentru internet. Poti sa le definesti asimetric
/sbin/ipfw pipe 3 config bw 256kbit/s # down
/sbin/ipfw pipe 4 config bw 256kbit/s # up
# Ceva filtre + clasificare pentru acces din LAN la server
/sbin/ipfw add pipe 1 tcp from
# si returul de la server la workstations
/sbin/ipfw add pipe 2 tcp from me
# si poti sa te ocupi si de clasificarea pentru internet
/sbin/ipfw add pipe 4 ip from
/sbin/ipfw add divert natd ip from any to any # nu cred ca e o idee buna sa trimiti altfel pachete catre natd ;-), daca gasesti una spune-mi
# si clasificarea la download
/sbin/ipfw add pipe 3 ip from any to
Ar mai fi o gramada de lucruri de spus, man dummynet de aici inainte :) . Si succes!
Hint: Daca folosesti ipnat (pentru nat) + [ipfw & dummynet (pentru shaping)] poti sa te joci mult mai bine cu queue-urile, nu mai apare natd-ul ala care sa incurce socotelile si nici necesitatea de a seta sysctl net.inet.ip.fw.one_pass=0, insa o sa munceasca CPU in 2 engine-uri de fitering.
natd
Problema cu NATul! Ce nu e corect aici sau nu ajunge?
natd
Pai sa vedem la ce faci nat:
este echivalent cu
iar regula de divert are index...
181. Deci .. o sa faca match mai rar si implicit divert + natd o sa aiba ceva mai multa relaxare.
Regula cu index 99 nu va face match niciodata, pentru ca in 20 si 22 s-au procesat toate pachetele IP, poate doar pentru pachete layer2.
Check the ruleset again.
post-edit: pachetepe le care le trimiti in divert socket nu trebuie sa fie doar cele dinspre LAN catre internet, ci si cele din internet inapoi, pentru a le reface adresa LAN.
natd
m-am clarificat cu NATD-ul:
case ${firewall_type} in [Oo][Pp][Ee][Nn] my rules ;;rc.firewall ${fwcmd} add allow ip from 192.168.x.x to any keep-state ${fwcmd} add.... ${fwcmd} add.... ${fwcmd} add.... ${fwcmd} pipe.... ${fwcmd} queue.... ... ${fwcmd} add 65000 pass all from any to any ;;unde:
case ${firewall_quiet} in [Yy][Ee][Ss] fwcmd="/sbin/ipfw -q" ;; *) fwcmd="/sbin/ipfw" ;; esacnatd
Salut,
vad ca nu a mai scris nimeni demult pe domeniul de limitari ...
din cate am priceput si eu studiind prin diverse locuri am ajuns la asta:
ideea este ca vreau sa limitez numai traficul de iesire la 128 si restul sa ramana nelimitat(sau limitat la 99mbit/s)
conexiunea la net este prin PPPoE si clientii folosesc DHCP
se poate cumva face ca ip-ul(sau/si) MAC-ul de la clienti sa fie citit dintr-un alt loc in ideea sa nu mai adaug cate 2 linii aici , una cu definirea ip-ului la client si alta cu limitarea aferenta?
si dummy se apeleaza numai prin "/sbin/kldload dummynet" ? in BSD 4.10 sau trebuie obligatoriu compilat kernelul cu optiunile de IP_FIREWALL ..etc ?
sper sa nu fi facut o varza prea mare :P