On Thu, Oct 03, 2002 at 10:41:45AM +0300, Adrian Penisoara wrote:
[snip]
> > >     * in /etc/rc.conf:
> > >         ifconfig_xl0="inet 10.0.0.1 netmask 255.255.255.0 -arp"
> > >     * in /etc/rc.local:
> > >         arp -f /etc/mac-list.txt
> > >         choparp xl0 <MAC_xl0> 10.0.0.1 0xffffffff &
> > >  Daca mai testeaza cineva solutia as vrea sa aud de rezultate!
Asa, am mai testat inca o data de la inceput toata stratagema. Concluzia mea
a fost ca choparp pur si simplu se incapatineaza sa functioneze daca in loc
de net_addr pui server_addr (man 8 choparp). La inceput imi dadea conflicte
dintr-o greseala de a mea. 
Deci imho, choparp nu merge. Daca cumva ti-a mers tie ady, spune-mi exact ce
ai facut si incerc din nou. Am testat pe mai multe sisteme (versiuni != de
freebsd).

Totusi am gasit alta solutie (solutii?).

Intai vreau sa explic rapid celor care nu au inteles de ce este nevoie de
toti pasii...
Dupa cum se stie, ARP se foloseste pentru a afla MAC stiind un IP. Acest
lucru se realizeaza in modul urmator:
- statia X transmite un REQUEST ARP pe retea (broadcast) in care se intreaba "cine
e proprietarul IPului y.y.y.y". in header-ul pachetului vor fi trecute
adresa IP si MAC a statiei X(x.x.x.x), respectiv adresa IP a statiei Y (y.y.y.y)
- toate statiile primesc cererea, o analizeaza, iar statia al carei IP este
identic cu cel din cerere (Y la noi) raspunde printr-un REPLY ARP catre
statia X, in care statia Y isi transmite adresa MAC.
- statia X primeste pachetul, invata adresa MAC a statiei Y, si fiindca
pachetul e de tip REPLY ARP, abandoneaza orice alta comunicatie ARP cu
statia Y. "handshake"-ul a fost realizat :P

Acum, daca o interfata se configureaza cu -arp, atunci interfata respectiva
va ignora TOATE pachetele ARP, adica nu va mai adresa nicodata REQUEST-uri
ARP pentru statiile ale caror adrese MAC nu le cunoaste, respectiv nu va mai
raspunde la REPLY-uri ARP catre statiile care nu-i cunosc adresa MAC.

Comanda "arp -f" va incarca o in memoria ARP o tabela statica, citita din
fisierul /etc/ethers. De aici inainte serverul va putea comunica cu statiile
al caror IP si MAC a fost trecut in ethers, dar....

... intervine o problema... statiile NU cunosc adresa MAC a serverului. Ele
o sa adreseze REQUEST-uri ARP (broadcast) si o sa intrebe "cine are adresa
IP a serverului". Dar cum interfata serverului a fost configurata cu -arp,
serverul nu va mai raspunde la REPLY-uri ARP, deci statiile nu vor primi
adresa MAC a serverului, deci comunicatia nu va fi posibila.

De aceea este nevoie de choparp (pasul 3).

Bun, acum solutiile:

1) solutia nasoala
a) deci interfata serverului sa fie configurata -arp, respectiv sa se incarce
in memoria arp tabela din /etc/ethers (arp -f /etc/ethers)
b) pe fiecare statie sa fie creat un fisier ethers
(\windows\system[32]\drivers\etc parca) in care sa existe o intrare pentru
server

Astfel toate statiile vor putea comunica cu serverul pentru ca ii vor invata
adresa MAC din tabela ethers chiar la bootare. Acest lucru e mai greu de
administrat dar cu ceva utilitare gen deep-freeze va merge foarte bine la
Internet Caffe-uri.

2) solutia mai "inteligenta"
a) exact pasul a) de la 1)
b) un server auxiliar sau o statie care sa aiba creat un fisier ethers care
sa contina o intrare pentru server cu keyword-ul "PUB" la sfarsit. acest
lucru va face ca statia/server-ul respectiv sa PUBLICE pe retea adresa MAC a
serverului ori de cate ori statiile fac un REQUEST ARP (adica sa raspunda cu
un REPLY ARP ca si cum ar fi serverul itself) pentru MACul serverului.

3) ceva gen choparp pus direct pe server care sa raspunda prin REPLY-uri ARP
ori de cate ori o statie are nevoie de adresa MAC a serverului... solutie
care nu merge... :(


Comentarii please.
--
| Radu Bogdan Rusu             | [EMAIL PROTECTED] |
| Network System Administrator @ campus.utcluj.ro           |
| Faculty of Automation and Computer Science                |
| Technical University of Cluj-Napoca, Romania              |
|-----------------------------------------------------------|
__________________________________________________________
Send 'unsubscribe rofug' to [EMAIL PROTECTED] to unsubscribe

Raspunde prin e-mail lui