PDA

View Full Version : ICS/NAT, iptables e quant'altro


Huzzz
26-08-2005, 18:27
Salve a tutti,
ho recentemente installato ubuntu sul mio pc.
ho un modem ethernet collegato allo switch insieme a tutti gli altri pc della rete.
vorrei che il mio pc con linux e connesso direttamente a internet tramite il modem fosse in grado di condividere completamente la connessione agli altri pc della rete che utilizzano sia win che linux. (principalmente win).

Come posso fare? ho provato a leggere qualche tutorial ma non va bene per ubuntu (non trova file etc etc) oppure sono io che sono troppo noob.

Inoltre avrei bisogno di installare i codec video di tutti i tipi, xvid, divx e altri. ho scaricato xvid ma ho difficoltà nell'installarlo, mi son letto il readme dell'install ma è troppo per il mio cervello noob :D
potreste darmi una mano per favore?

Pardo
26-08-2005, 21:11
Lascia stare i codec, devi installarti mplayer (che include il suo pacchetto di codec standard). Mplayer sotto Linux di solito playa tutto il playabile senza bisogno d'altro.


Per il nat sei troppo niubbo, per introdurre diciamo che in Linux di solito uno sa gia` come funziona la rete (nei dettagli) quindi si crea a mano un ruleset tramite il comando /sbin/iptables (un po' similmente a come si fa su alcuni router.)
Una scorsa alla manpage di iptables ti rivelera` subito se ci capisci qualcosa oppure no, ad ogni modo per fare solo nat tipicamente si usa uno script del genere:
#!/bin/bash

LOCALIF='eth0' # <--- interfaccia locale
LOCALNET='10.0.0.0/8' # <--- rete locale
PUBLICIF='ppp0' # <--- interfaccia internet

echo 1 > /proc/sys/net/ipv4/ip_forward #abilita forwarding

iptables -t nat -A POSTROUTING -o $PUBLICIF -s $LOCALNET -j MASQUERADE #nat della lan con ip di internet

iptables -A FORWARD -i $LOCALIF -o $PUBLICIF -s $LOCALNET -j ACCEPT #forwarda traffico dalla lan
iptables -A FORWARD -i $PUBLICIF -o $LOCALIF -d $LOCALNET -m state --state ESTABLISHED,RELATED -j ACCEPT #forwarda traffico in risposta per la lan

iptables -A FORWARD -j LOG -m limit --limit 30/minute --log-level notice --log-prefix "##forward-drop## " #logga altri pacchetti (prima che vengano scartati)
iptables -P FORWARD DROP #azione predefinita scarta tutto il resto

Il nat comunque x funzionare funziona anche senza le ultime 4 righe, che sono solo x sicurezza. Impediscono che si possa da fuori aprire connessioni a piacimento con i pc dentro la lan (cosa cmq improbabile ma nn impossibile..). Questo tappo andrebbe messo in ogni caso, poi per forwardare alcune porte verso i pc interni (tipo x far funzionare emule ecc.) si possono aprire singolarmente tramite un'altra rule di forward-accept e instradare al pc giusto con una DNAT.




Sempre per introdurre esistono anche in Linux i programmetti grafici che ti gestiscono nat e filtraggio in maniera "semplice". Sono cmq sempre delle mere interfacce per lo stesso firewall (iptables o netfilter che dir si voglia), che e` gestito internamente dal kernel. (Questo e` da sapere x il semplice motivo che a volte capita di trovarsi un sistema che non ha compilato il firewall nel kernel, x cui qualsiasi programmozzo puoi installare nn andra` mai, finche` nn compili il kernel stesso aggiungendo i componenti x il firewall.)

Huzzz
26-08-2005, 21:46
intanto ti ringrazio per avermi risposto :)

quello che ho fatto fino ad ora è aver messo nel file dei moduli da caricare iptables e quant'altro.
mi stai dicendo quindi che il kernel deve essere compilato con la parte riguardante il firewall. ho ubuntu con il ker 2.6, devo provvedere a ricompilare (non so come si faccia ^^)

quindi sostanzialmente quello che dovrei fare ora, dopo aver caricato i moduli, è creare lo script che deve partire ad ogni boot.
tento di provare, come accedo al manuale di iptables?
quello script che hai postato è un ruleset? altrimenti non mi è ben chiara la differenza fra ruleset e script di quel genere.

ultima domandina (ti sto tartassando):
LOCALNET='10.0.0.0/8' # <--- rete locale
quel /8 che vuol dire? range da 0 a 8?

grazie infinite mi hai già chiarito qualche dubbio di base!

Pardo
27-08-2005, 12:02
Te basta che incolli quella roba in un file poi lo esegui.
Se funziona (non deve dare nessun messaggio in out) hai gia` finito.. (e va addato al boot).

10.0.0.0/8 identifica la rete 10.*
Oltre alla 10 puoi mettere anche 192.168.0.0/16 o 172.16.0.0/12 , scegli te quale a seconda di come hai gia` gli ip.
La spiegazione e` in binario:
10.0.0.0 == 00001010 . 00000000 . 00000000 . 00000000
/8 sono i primi 8 bit. Fissando quelli e variando gli altri 24, c'e` il range 10.0.0.0-10.255.255.255. I due estremi son riservati quindi di fatto 10.0.0.1-10.255.255.254 per un totale di (2^24)-2 IP...

Huzzz
27-08-2005, 17:08
Te basta che incolli quella roba in un file poi lo esegui.
Se funziona (non deve dare nessun messaggio in out) hai gia` finito.. (e va addato al boot).

10.0.0.0/8 identifica la rete 10.*
Oltre alla 10 puoi mettere anche 192.168.0.0/16 o 172.16.0.0/12 , scegli te quale a seconda di come hai gia` gli ip.
La spiegazione e` in binario:
10.0.0.0 == 00001010 . 00000000 . 00000000 . 00000000
/8 sono i primi 8 bit. Fissando quelli e variando gli altri 24, c'e` il range 10.0.0.0-10.255.255.255. I due estremi son riservati quindi di fatto 10.0.0.1-10.255.255.254 per un totale di (2^24)-2 IP...

troppo spettacolo! mai ci sarei arrivato fossero i numeri in testa da tenere fissi. ok smanetto ;)

cmq oggi è successa una cosa strana:
mio fratello ha acceso il pc con win e si è connesso direttamente,
ho acceso il mio con linux e si è connesso direttamente 0.o

fisicamente non dovrebbe essere possibile una cosa del genere.
linux ha individuato il gateway in automatico sul pc di mio fratello? :mbe:

Pardo
27-08-2005, 21:03
Se tuo fratello ha ICS attivato probabilmente si dato che ICS serve anche da DHCP, permettendo l'auto configurazione.
Ad ogni modo un 'route|fgrep default' dovrebbe risolvere ogni dubbio, il gateway e` l'ip nella seconda colonna..

Huzzz
28-08-2005, 19:27
ho controllato e fatto un prova: non usa il gateway. entrambe i pc si connettono direttamente ad internet!
mi sono connesso prima con linux e poi con win. tutti e due hanno fatto una connessione diretta!
digitando il comando route:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.1 * 255.255.255.255 UH 0 0 0 ppp0
localnet * 255.255.255.224 U 0 0 0 eth0
default 192.168.100.1 0.0.0.0 UG 0 0 0 ppp0


edit: in windows il modem sta a 192.168.1.1, qui a 100.1.
la mask è diversa e come si vede non c'è gateway al mio pc con win che ha ip 192.168.1.18.

ho alice gate. quindi con il modulo aggiuntivo diventa router. può essere per quello? altrimenti non riesco a spiegarmelo.
in ogni caso è interessante, dovrei provare a copiare queste conf in windows e vedere se riesco ad accedere direttamente alla rete da entrambe i pc.

Pardo
29-08-2005, 16:41
Ma non conoscendo i dettagli della rete adsl non so spiegarlo ma cmq non e` la prima volta che lo vedo che 2 pc si attaccano col modem insieme. Non saprei da cosa dipenda che si possa o meno...

Comunque il 192.168.100.1 li` evidentemente non e` il modem, e` il gateway di telecom. Cioe` il coso che sta dall'altra parte della linea adsl insomma...

Huzzz
29-08-2005, 18:44
Ma non conoscendo i dettagli della rete adsl non so spiegarlo ma cmq non e` la prima volta che lo vedo che 2 pc si attaccano col modem insieme. Non saprei da cosa dipenda che si possa o meno...

Comunque il 192.168.100.1 li` evidentemente non e` il modem, e` il gateway di telecom. Cioe` il coso che sta dall'altra parte della linea adsl insomma...

non credo, 192.168.x.x è tipico delle lan (anche se nn vuol dire un tubo)
quello di telecom dovrebbe essere il DNS no?
inoltre con modem usb non ho nessun gateway, quindi per esclusione deduco che sia il modem.
poi boh, io sono un ignorante :D
cmq meglio così ;)