Newsgroup: it.comp.os.linux.development
Titolo: [ethertap] Single Homed Gateway

Descrivo brevemente la situazione:
Ho una macchina collegata in rete su una vlan ma senza accesso all'esterno
poiche' gli switch sono configurati in modo da non permettere l'accesso
esterno alla coppia IP MAC-address della mia macchina. Sono in possesso
di una coppia IP MAC che ha accesso all'esterno e la macchina che li 
possiede e' spenta. Accedere all'esterno non e' un problema ; basta usare 
ifconfig nel modo appropriato. Il vero problema e' che non ho un'altra 
scheda di rete e non ne voglio installare una mia su un pc della facolta'
quindi ho fatto un programma che si occupa di inoltrare il traffico destinato
al MAC-address che ha l'accesso esterno verso il device di ethertap configurato
con IP e MAC corretti e con arp attivato. Con un po' di smanettamento sono 
riuscito ad ottenere qualcosa di funzionante ma non completamente:
finche' il traffico e' costituito da pacchetti "corti" va tutto bene, ma se
mi avvicino al limite MTU mi capita una cosa spiacevole come "Truncated IP: 16
Bytes missing..." da tcpdump -i tap0; ho provato a modificare l'MTU ma nisba, e
comunque non sarebbe una bella soluzione.
Non e' tutto, poiche' non riesco a capire una cosa: ho provato a leggere un
pacchetto ping dall'ethertap e l'ho scritto su un file , ma andandolo a vedere
mi accorgo della presenza all'inizio del file, prima dell'header datalink, di
due bytes di cui ignoro la funzione... 
Domanda:
Dipendera' tutto da quei due bytes mancanti (che aggiungo spudoratamente senza
saperne il significato) ?
Se si, come mi devo comportare? posso trovare documentazione completa
sull'ethertap o devo studiarmi i sorgenti del kernel?
A che servono quei due bytes?
Se volete vedere i sorgenti del programma contattatemi a
fres...@lib.disco.unimib.it
Grazie in anticipo.
-- 
Giampaolo Fresi Roglia
Proud Member Of Linux Gihad
http://media.dsi.unimi.it/~linux

Come apparati di rete hai  degli switch con 802.1Q/802.1p che gestiscono le
VLAN ? Oppure avete roba piu` o meno proprietaria come Cabletron ?
Quei due  byte in piu`  potrebbero essere  dei tag per  le VLAN e  quindi i
frame con  dimensioni massime si  trasformerebbero in "baby  giant packets"
(ma lo  switch dovrebbe eliminare  i due byte  in piu` prima di  passare il
frame al PC...).
In ogni caso,  se il tuo PC non  ha il permesso di uscire non  pensi che ci
sia un  motivo e che gli  amministratori di rete potrebbero  NON gradire la
tua iniziativa ?
Saluti,
Luca Polo.
-- 
Luca...@gest.unipd.it
 --- http:/
www.gest.unipd.it/~jake
---------------------------------------------------------
One Ping to rule them all. One Ping to find them.
One Ping to bring down them all.
And in the darkness crash them.         [The Lord of the Pings (of Death)]

gradire la tua iniziativa ?
Rimprovero piu' che giusto se non  fosse che gli amministratori di rete,
compreso  il responsabile  del laboratorio  sono al  corrente di  tutto.
Comunque lungi da me l'idea di far  danni e/o di causare disagi di alcun
tipo. Il  progetto che sto  realizzando mi serve principalmente  per due
cose: divertimento e studio ( penso  che la cosa migliore per imparare a
fondo i protocolli sia smanettarci sopra).
Divertimento:
Personalmente mi esalta non poco l'idea di  fare di un PC un Gateway con
una sola scheda di rete; saro' strano ma e' cosi'.
Cio' che voglio e'  veder il mio programma funzionare ,  anche se non lo
usero' mai per navigare o altro; tanto piu' che l'accesso all'esterno ce
lo hanno concesso, anche se tramite socks.
Saluti.


--> "GFR" == Giampaolo Fresi Roglia <gianz@elminster.> writes:
GFR> Comunque in questo caso l'aggiunta dei bytes da parte degli switch
GFR> dovrebbe essere totalmente trasparente agli host della rete;
Dovrebbe, ma vorrei vedere in dettaglio  il dump di almeno un pacchetto: tu
parli di  due byte in  piu` nello  header MAC/LLC, e  a me questo  (piu` il
fatto che usate VLAN; niente di  male, beninteso: le uso anch'io) fa venire
il dubbio  che si  tratti qualcosa tipo  802.1Q/802.1p, ossia  un one-level
tagging  in cui  vengono  inseriti 4  byte  tra gli  indirizzi  MAC di  de-
stinatario e mittente e il campo successivo (dimensione o type-field, a se-
conda che si tratti di Ethernet v. 2.0 o 802.3).
Di questi 4  byte, i primi due replicano il campo  appena citato, gli altri
contengono  3 bit per  la "user  priority", 1  bit per  l'incapsulamento di
frame Token Ring e 12 bit di VLAN Id.
GFR> credo che la situazione sia diversa, in particolare ho fatto questo
GFR> esperimento a casa:
	[....]
GFR> ed ottengo un file di 44 bytes invece di 42 come da rfc; tanto piu'
GFR> che sniffando un pacchetto arp da eth0 e scrivendolo su file ne
GFR> ottengo uno lungo giustamente 42 bytes; sono i primi due i bytes in
GFR> questione. I primi 2 bytes cambiano di volta in volta ( ma non credo
GFR> siano casuali ).
Quindi i byte non sono parte dello header MAC, ma del "payload" ?
Be', qui mi viene il dubbio che tu stia "parlando" 802.3 invece di Ethernet
v. 2.0, ma  per tentare di dare una risposta devo  vedere il pacchetto com-
pleto (MAC incluso).
GFR> Rimprovero piu' che giusto se non fosse che gli amministratori di
GFR> rete, compreso il responsabile del laboratorio sono al corrente di
GFR> tutto.
Se a loro va bene, io non mi lamento di certo :-).
GFR> Personalmente mi esalta non poco l'idea di fare di un PC un Gateway
GFR> con una sola scheda di rete; saro' strano ma e' cosi'.
Non saresti il primo: "router" con una sola scheda esistono (esistevano?) e
sono usati ad es. quando un'unica LAN *fisica* deve ospitare piu` subnet IP
(casi particolari, in genere derivati da cattiva progettazione o in seguito
a evoluzioni anomale ed impreviste della rete stessa, magari abbinate ad un
taglio del budget IT...).


Non saresti il primo: "router" con una sola scheda ...
Ho scoperto  l'acqua calda  insomma; resta comunque  una cosa  utile per
studiare.
