# [il grande ritorno] Problema divisione reti...

## gionag

Salve a tutti...

torno a scrivere dopo un pò di assenza per porvi una questione che spero di risolvere...

premetto che di reti non capisco gran che  :Confused:  e spero col vostro aiuto di arrivare a una soluzione...

vi spiego la situazione...

ho la necessità di dividere 4 reti tra loro... impedendo ognuna di esse di comunicare con un altra, quindi ipotizziamo di avere le 4 reti chiamate come: reteA, reteB, reteC, reteD.

quindi diciamo che la rete A può comunicare solo con i pc della sua rete ma non con quelli della B, C, D e viceversa per ciascuna rete... Però solo alcuni pc della reteA (per esempio) possono vedere tutte le altre, così come alcuni della B... insomma spero abbiate capito  :Cool: 

però ogni rete deve essere raggiunta dal masquerading del firewall-router per distribuire la connessione.

Io avevo pensato di fare una cosa del genere: Ho già un pc con 5 schede di rete (4 3com 3c59x e una Via-ryhine integrata) diciamo che a eth4 (l'integrata) collego il modem ADSL, alle altre 4 ogni sottorete. Pensavo di usare una subnet da 26: 255.255.255.192 per avere 4 sottoreti.

Ora il problema è ... come faccio per non far vedere le 4 reti tra loro( a parte le eccezioni ).. ma farle raggiungere dalla connessione internet ?!?

Grazie per chiunque sia riuscito ad arrivare fino qui a leggere... e soprattutto a chi avrà la forza di rispondermi  :Very Happy: 

a presto !

----------

## Manuelixm

Ciao, premetto che non so se è una buona soluzione, potresti usare iptables definendo varie catene per ogni singola sottorete.

----------

## ultimodruido

Ciao prova a leggere qui spiega come usare iptables...

http://www.commedia.it/ccontavalli/docs-it/iptables/iptables4dummies/iptables4dummies.html

ah io sono una schiappa di reti, pero farei una cosa cosi:

```
 iptables -P INPUT DROP 

iptables -P OUTPUT DROP 

 iptables -P FORWARD DROP

 iptables -N AtoB    

 iptables -N AtoC    

 iptables -N AtoD   

 iptables -N BtoA     

 iptables -N BtoC    

 iptables -N BtoD    

 iptables -N CtoA

 iptables -N CtoB  

 iptables -N CtoD

 iptables -N DtoA

 iptables -N DtoB

 iptables -N DtoC

 iptables -A FORWARD -i eth0 -o eth1 -j AtoB

 iptables -A FORWARD -i eth0 -o eth2 -j AtoC

 iptables -A FORWARD -i eth1 -o eth2 -j BtoC

 iptables -A FORWARD -i eth1 -o eth0 -j BtoA

[eccetera...]

iptables -A  AtoB  -j DROP

iptables -A  AtoC  -j DROP

iptables -A  AtoD  -j DROP

iptables -A  BtoA  -j DROP

iptables -A  BtoC  -j DROP

iptables -A  BtoD  -j DROP

[eccetera..]
```

credo che cosi siano bloccati i contatti tra le sottoreti... ah ti consiglio comunque di aspettare il parere di uno piu esperto!  :Razz: 

ciao nic

----------

## FonderiaDigitale

 *gionag wrote:*   

> Io avevo pensato di fare una cosa del genere: Ho già un pc con 5 schede di rete (4 3com 3c59x e una Via-ryhine integrata) diciamo che a eth4 (l'integrata) collego il modem ADSL, alle altre 4 ogni sottorete. Pensavo di usare una subnet da 26: 255.255.255.192 per avere 4 sottoreti.
> 
> 

 

non ne vedo il motivo.

puoi assegnare una classe C (/24) per ogni interfaccia fisica, secondo ad esempio questo schema:

```
eth0 10.10.1.0/24

eth1 10.10.2.0/24

eth2 10.10.3.0/24

eth3 10.10.4.0/24

```

in questo modo hai gia una suddivisione logica a livello 3.

bada bene di bloccare il traffico loopback solo sulla interfaccia LO e 127.0.0.1. altrimenti se hai demoni che ascoltano su tutte le interfacce ci vuole poco a valicare i confini (tutte le interfacce sono locali, alla fine).

 *Quote:*   

> Ora il problema è ... come faccio per non far vedere le 4 reti tra loro( a parte le eccezioni ).. ma farle raggiungere dalla connessione internet ?!? 
> 
> 

 

cosi':

```
#!/bin/sh

ip_eth0=10.10.1.0/24

ip_eth1=10.10.2.0/24

ip_eth2=10.10.3.0/24

ip_eth3=10.10.4.0/24

iptables -i lo -o lo -s 127.0.0.1/8 -d ! 127.0.0.1 -j DROP

iptables -i lo -o lo ! -s 127.0.0.1/8 -d 127.0.0.1 -j DROP

iptables -t nat -A PREROUTING -o eth0 -s $ip_eth0 -j MASQUERADE

iptables -t nat -A PREROUTING -o eth1 -s $ip_eth1 -j MASQUERADE

iptables -t nat -A PREROUTING -o eth2 -s $ip_eth2 -j MASQUERADE

iptables -t nat -A PREROUTING -o eth3 -s $ip_eth3 -j MASQUERADE

```

----------

## gionag

Grazie a tutti...

Comunque ho avuto modo di provare.. e non funziona ! niente da fare.. MASQUERADE e -o su PREROUTING non funzionano... 

ho provato svariate configurazioni.. ma non funge...

bye bye

----------

## nightblade

 *gionag wrote:*   

> 
> 
> Comunque ho avuto modo di provare.. e non funziona ! niente da fare.. MASQUERADE e -o su PREROUTING non funzionano... 
> 
> 

 

Infatti MASQUERADE e l'opzione "-o" funzionano con POSTROUTING. Se come ho capito a te interessa far accedere a Internet gli host delle single reti, devi fare qualcosa del genere (es. con eth0 e ppp0):

```

iptables -t nat -A POSTROUTING -s eth0 -o ppp0 -j MASQUERADE

```

Se i tuoi IP interni hanno indirizzo statico, invece di MASQUERADE e' meglio usare SNAT (per una migliore gestione delle connessioni).

Dovrai inoltre abilitare delle regole per consentire il FORWARD per e da Internet:

```

iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT

```

E ovviamente sincerati che l'ip forwarding sia abilitato.

----------

## makoomba

 *nightblade wrote:*   

> 
> 
> Se i tuoi IP interni hanno indirizzo statico, invece di MASQUERADE e' meglio usare SNAT (per una migliore gestione delle connessioni).
> 
> 

 

MASQUERADE va usato quando hai un ip dinamico su ppp0

----------

## nightblade

 *makoomba wrote:*   

>  *nightblade wrote:*   
> 
> Se i tuoi IP interni hanno indirizzo statico, invece di MASQUERADE e' meglio usare SNAT (per una migliore gestione delle connessioni).
> 
>  
> ...

 

Giusto... chissa' a cosa stavo pensando   :Embarassed: 

----------

## gionag

ok... capito... ma ancora non son riuscito a dividere le reti... any more ideas !?  :Crying or Very sad: 

----------

## nightblade

 *gionag wrote:*   

> ok... capito... ma ancora non son riuscito a dividere le reti... any more ideas !? 

 

a livello di indirizzamento o a livello di protezione l'una dall'altra ?

----------

## X-Act!

Non vorrei dire una stupidaggine, ma una volta che le macchine sono su reti di classe C diverse tipo:

 *FonderiaDigitale wrote:*   

> 
> 
> ```
> eth0 10.10.1.0/24
> 
> ...

 

non dovrebbero essere già invisibili tra loro?

Il gateway ha un indirizzo in ogni rete, quindi tutte le macchine lo vedono e escono.

E se qualcuno deve vedere tutta la rete, gli imposti la netmask a /16: non sarà proprio "eticamente corretto" ma dovrebbe funzionare no?

----------

## FonderiaDigitale

 *nightblade wrote:*   

>  *gionag wrote:*   
> 
> Comunque ho avuto modo di provare.. e non funziona ! niente da fare.. MASQUERADE e -o su PREROUTING non funzionano... 
> 
>  
> ...

 

e c'hai ragione. mai postare appena sveglio. pardon  :Sad: 

----------

## FonderiaDigitale

 *X-Act! wrote:*   

> Non vorrei dire una stupidaggine, ma una volta che le macchine sono su reti di classe C diverse tipo:
> 
>  *FonderiaDigitale wrote:*   
> 
> ```
> ...

 

si, se non c'e' altro routing, ogni classe e' separata. ricordati di disabilitare redirect e source routing.

----------

## makoomba

le 4 reti hanno lo stesso gateway che ha un ip per ogni classe e il forward abilitato, non c'è bisogno di altro routing.

quindi, a meno di proibire esplicitamente il forward per alcuni passaggi, le reti saranno visibili tra loro.

imho, la soluzione + semplice è qualcosa del tipo

```

// nat per ip dinamico

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

// oppure questa se hai ip statico

iptables -t nat -A POSTROUTING -o ppp0 -j SNAT  --to il.tuo.ip.statico

// da reti a internet

iptables -A FORWARD -o ppp0 -j ACCEPT

// da internet a reti

iptables -A FORWARD -i ppp0 -j ACCEPT

// il pc 10.0.1.1 vede tutte le reti

iptables -A FORWARD -s 10.0.1.1 -j ACCEPT

// il pc 10.0.1.2 vede anche la rete 10.0.2.0

iptables -A FORWARD -s 10.0.1.2 -d 10.0.2.0/24 -j ACCEPT

// tutto il resto > /dev/null

iptables -A FORWARD -j DROP

```

----------

## FonderiaDigitale

perdonami ma abilitare l'ip forwarding non significa che ogni pacchetto puo' travalicare le regole di routing: infatti se la classe assegnata e' una /24, ovvero 255 host, significa che tutti questi 255 host si vedono tra loro, PIU' il default route. e i client possono passare tramite il default route (che appunto E' PRESENTE nel routing). altrimenti tutti i router di internet sarebbero utilizzabili come default gateway!

----------

## makoomba

il routing sul gw è dato semplicemente dalle regole:

10.0.x.0/24 dev ethx  scope link

+ il default gateway.

se la macchina 10.0.1.1 fa un ping verso 10.0.2.1 (che non è nella sua classe), manda la richiesta al gateway.

il gw ha un interfaccia sulla classe 10.0.2.0, quindi può tranquillamente fare il forward.

diciamo che il forward tra le classi a cui appartengono gli ip impostati sul gw è "automatico"

----------

## gionag

allora ... intanto vi ringrazio di nuovo per la vostra immancabile presenza...

Vediamo di riassumere

5 interfacce

eth0 10.0.1.1

eth1 10.0.2.1

eth2 10.0.3.1

eth3 10.0.4.1

eth4 0.0.0.0-->collegata al modem ADSL !

netmask 255.255.255.0

adesso imposto il NAT per internet

```

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A FORWARD -i ppp0 -j ACCEPT

```

perfetto

blocco l'inter-accesso (che termine schifoso  :Very Happy: ) delle reti: 

```

iptables -A FORWARD -P DROP

```

abilito le macchine che voglio io per il dialogo con le reti... tipo :

```

iptables -A FORWARD -s 10.0.1.45 -d 10.0.2.0 -j ACCEPT

```

così facendo il pc 10.0.1.45 che appartiene alla prima rete può accedere all'intera rete due 

e fino a qui penso di esserci...

i client li configuro così:

IP 10.0.[1-2-3-4].X a seconda della rete di appartenenza

Netmask 255.255.255.0

GW 10.0.[1-2-3-4].1 a seconda se si trova sul primo sul secondo o sul terzo o quarta rete...

così dovrei essere apposto.. oggi pome stesso provo la conf e vedo se tutto funziona correttamente !

A PRESTO ! vi terrò informati  :Wink: 

----------

## nightblade

 *gionag wrote:*   

> 
> 
> adesso imposto il NAT per internet
> 
> ```
> ...

 

Attento, che la FORWARD non appartiene a "nat"

----------

## gionag

sisi lo sò... una mia piccola svista mentre scrivevo.. modifico subito  :Wink: 

comunque ho capito bene il procedimento !?

ciao !

----------

## oRDeX

Io non ho capito il -P DROP

----------

## gionag

-P DROP è una policy... ciò significa che quando iptables non ha una regola da applicare al pacchetto in arrivo... usa una "regola" di default... detta appunto policy

nel caso mio... a parte i pc che decido di sbloccare... il forward tra le interfacce è bloccato ! perchè la policy appunto DROPpa tutti i pacchetti esclusi quelli che decido io di accettare... (-j ACCEPT)

spero di esser stato chiaro il più possibile  :Wink: 

----------

## oRDeX

Chiarissimo  :Wink: 

Solo che leggendo il man di iptables ho trovato qst: 

```
  iptables [-t table] -P chain target [options] 
```

----------

## FonderiaDigitale

 *makoomba wrote:*   

> il routing sul gw è dato semplicemente dalle regole:
> 
> 10.0.x.0/24 dev ethx  scope link
> 
> + il default gateway.
> ...

 

apparte il fatto che si parlava di 4 interfacce lan + una interna dedicata al modem esterno, quindi su classe (c o meno) diversa, 

cmq sia il forward riguarda solo il passaggio SUL default gateway. non da una classe all'altra.

----------

## makoomba

 *FonderiaDigitale wrote:*   

> 
> 
> apparte il fatto che si parlava di 4 interfacce lan + una interna dedicata al modem esterno, quindi su classe (c o meno) diversa, 
> 
> cmq sia il forward riguarda solo il passaggio SUL default gateway. non da una classe all'altra.

 

sinceramente, non ho capito quello che vuoi dire.

----------

## gionag

grazie ai vostri consigli sono riuscito a fare il firewall... posto di seguito la configurazione che ho usato !

```

ifconfig eth0 10.10.1.1 netmask 255.255.255.0 up

ifconfig eth1 10.10.2.1 netmask 255.255.255.0 up

ifconfig eth2 10.10.3.1 netmask 255.255.255.0 up

ifconfig eth3 10.10.4.1 netmask 255.255.255.0 up

iptables -P FORWARD DROP

iptables -A FORWARD -s 10.10.1.2(macchina ipotetica) -d 10.10.2.2(macchina ipotetica della seconda rete) -j ACCEPT

iptables -A FORWARD -s 10.10.2.2 -d 10.10.1.2 (per aprire la comunicazione dilaterale) -j ACCEPT

iptables -A FORWARD -s 10.10.3.123 -d 10.10.1.0/24 (per aprire la macchina 123 della rete 3) -j ACCEPT

iptables -A FORWARD -s 10.10.1.0/24 -d 10.10.3.123 (come prima) -j ACCEPT

iptables -t nat -A POSTROUTING -i ppp0 -j ACCEPT (masquerade)

```

Clients:

```

ifconfig eth0 10.10.[1-2-3-4].X netmask 255.255.255.0 up

route add default gw 10.10.[1-2-3-4].1

```

Grazie ancora ragazzi ! vi saluto !

alla prossima

----------

## gutter

Metti il tag [Risolto]

----------

## gionag

non lo metto perchè pensavo di aver risolto... ma inveceeeee  :Wink: 

il fatto è che adesso tutto funge... ping... navigazione ecc ecc ... però quando cerco di accedere ad una risorsa condivisa da un pc di una rete ad un pc di un altra... mi va in timeout  :Sad: 

praticamente se io faccio dalla macchina 192.168.1.112 

```

\\192.168.2.2

```

IE mi va in timeout dicendo che nn è possibile raggiungere l'host...

però come dicevo sopra... se faccio un ping ... l'host mi risponde...

qualche idea ? io credo sia un errore nei broadcast.

Grazie

----------

