Differenze tra le versioni di "Rete del GOLEM"

Da GolemWiki.
Jump to navigation Jump to search
m (References)
Riga 5: Riga 5:
 
[[File:Rete_GOLEM.png|right|thumb|300px|Struttura ''beta'' della rete]]
 
[[File:Rete_GOLEM.png|right|thumb|300px|Struttura ''beta'' della rete]]
  
* '''Ponte radio''' - Poiché non arriva cavo telefonico all'Officina, è necessario realizzare una connessione a distanza con un modem/router interno all'area della vela. Si userà un ponte radio presumibilmente a 5GHz;
+
* '''Ponte radio''' - Poiché non arriva cavo telefonico all'Officina, è necessario realizzare una connessione a distanza con un modem/router interno all'area della vela. Si userà un ponte radio ''bridge'' presumibilmente a 5GHz;
* '''Separazione delle reti''' - Rete GOLEM e rete "esterna" (dal ponte radio al router) devono essere separate (sicuramente a livello di IP);
+
* '''Separazione delle reti''' - Rete ''interna'' GOLEM e rete ''esterna'' (ponte radio/gateway esterno) devono essere separate;
 
* '''LAN''' - Abbiamo a disposizione 12 porte ethernet nelle sale dell'Officina;
 
* '''LAN''' - Abbiamo a disposizione 12 porte ethernet nelle sale dell'Officina;
 
* '''WiFi interna''' - Oltre alla Ethernet LAN servirà un ulteriore dispositivo per la connessione tramite dispositivi wireless (WLAN);
 
* '''WiFi interna''' - Oltre alla Ethernet LAN servirà un ulteriore dispositivo per la connessione tramite dispositivi wireless (WLAN);
* '''Server/Caching''' - Si vorrebbe usare il minicomputer [[A10-OLinuXino-LIME | OLinuXino]] sia come semplice server locale (storage di dati condivisi) che come sistema di cache per aggiornare sistemi debian-based ([[apt-cacher]] o simili). Il traffico di rete dovrà attraversare l'Olinuxino.
+
* '''Server/Caching''' - Si vorrebbe usare il minicomputer [[A10-OLinuXino-LIME | OLinuXino]] sia come semplice server locale (storage di dati condivisi) che come sistema di cache per aggiornare sistemi debian-based ([[apt-cacher]] o simili) e non. Il traffico di rete dovrà attraversare l'Olinuxino.
  
 
== Materiali a disposizione ==
 
== Materiali a disposizione ==
 
* Antenne per ponte radio e relativi router (presumibilmente Mikrotik)
 
* Antenne per ponte radio e relativi router (presumibilmente Mikrotik)
 
* Switch Allied Telesyn (24 porte)
 
* Switch Allied Telesyn (24 porte)
* Mikrotik RouterBoard 433 (per WLAN?)
+
* Mikrotik RouterBoard 433 (per WLAN) ?
 
* [[A10-OLinuXino-LIME | OLinuXino A10 LIME]]
 
* [[A10-OLinuXino-LIME | OLinuXino A10 LIME]]
 +
 +
== Cenni VLAN ==
 +
<!-- <div style="padding: 1em;border: 1px dashed #2f6fab;color: black;background-color: #f9f9f9;"> -->
 +
VLAN = Virtual LAN, insieme di tecnologie che permettono di suddividere una rete basata su switch, in più reti logicamente non comunicanti tra loro, ma che condividono la stessa infrastuttura fisica.
 +
(riadattato da Wikipedia)
 +
 +
Noi creeremo due VLAN (interna = #1 = LAN locale ed esterna = #2 = verso il ponte radio). I membri di una VLAN non possono comunicare con quelli dell'altra VLAN (le informazioni trasmesse vengono automaticamente ''taggate'' dallo switch con l'ID della VLAN di partenza). I membri di entrambe le VLAN (per noi l'OlinuXino) devono ''taggare'' manualmente i pacchetti per notificare allo switch su quale VLAN indirizzarli.
 +
<!-- </div> -->
  
 
== Piano d'azione ==
 
== Piano d'azione ==
Si configura lo switch per supportare due VLAN (Virtual LAN) (isolate fra loro: come fossero LAN gestite da due switch diversi, ndr). Antenna WLAN e porte ethernet LAN fanno parte della VLAN interna (#1), il ponte radio fa parte della VLAN esterna (#2), OLinuXino appartiene ad entrambe e funge da ponte di collegamento.<br/>
+
Poiché OLinuXino ha una sola scheda di rete fisica, si configura lo switch per supportare due VLAN (Virtual LAN) (isolate fra loro: come fossero LAN gestite da due switch diversi, ndr).
OLinuXino sarà sicuramente gateway ed anche server DHCP.<br/>
+
* VLAN#1 - Antenna WLAN e porte ethernet LAN fanno parte della VLAN interna
OLinuXino dovrà gestire le due VLAN, si "sdoppia" la scheda di rete fisica in due schede virtuali, una per ogni VLAN.
+
* VLAN#2 - Il ponte radio fa parte della VLAN esterna
  
<div style="padding: 1em;border: 1px dashed #2f6fab;color: black;background-color: #f9f9f9;">
+
OLinuXino appartiene ad entrambe e funge da router di collegamento. OLinuXino sarà sicuramente anche il gateway predefinito per le macchine della VLAN#1, ed anche il loro server DNS. Inoltre, farà anche da server DHCP.
'''Cenni VLAN'''
+
 
VLAN = Virtual LAN, insieme di tecnologie che permettono di suddividere una rete locale basata su switch, in più reti locali logicamente non comunicanti tra loro, ma che condividono la stessa infrastuttura fisica.
+
OLinuXino dovrà gestire le due VLAN. Anche se ha una sola scheda di rete fisica, esso è cosciente dell'esistenza delle due VLAN, perciò si "sdoppia" la scheda di rete fisica in due schede virtuali, una per ogni VLAN.
(riadattato da Wikipedia)
 
 
Noi creeremo due VLAN (interna = #1 = LAN locale ed esterna = #2 = verso il ponte radio). I membri di una VLAN non possono comunicare con quelli dell'altra VLAN (le informazioni trasmesse vengono automaticamente ''taggate'' dallo switch con l'ID della VLAN di partenza). I membri di entrambe le VLAN (per noi l'OlinuXino) devono ''taggare'' manualmente i pacchetti per notificare allo switch su quale VLAN indirizzarli.
 
</div>
 
  
 
=== Configurazione VLAN su switch ===
 
=== Configurazione VLAN su switch ===
 +
[[Image:Switchone-config.jpeg|300px|right]]
 
* Creazione due VLAN:
 
* Creazione due VLAN:
 
** ID #1 - interno
 
** ID #1 - interno
 
** ID #2 - esterno
 
** ID #2 - esterno
 
* Si imposta per ogni porta il PVID (Port VLAN IDentifier), ossia si informa lo switch a quale delle due VLAN appartiene la porta ''per default''. Le porte dalla 1 alla 21 hanno PVID #1 (danno verso l'interno), dalla 22 alla 24 hanno PVID #2 (danno verso l'esterno).
 
* Si imposta per ogni porta il PVID (Port VLAN IDentifier), ossia si informa lo switch a quale delle due VLAN appartiene la porta ''per default''. Le porte dalla 1 alla 21 hanno PVID #1 (danno verso l'interno), dalla 22 alla 24 hanno PVID #2 (danno verso l'esterno).
* Si imposta la porta 22 sia come membra della VLAN #2 (lo è già per default) che per la VLAN #1. Per default si ha che la porta 22 è:
+
* Poi si imposta la porta 22 sia come membro della VLAN #2 (lo è già per default) che per la VLAN #1. Per default si ha che la porta 22 è:
 
** '''untagged''' per la VLAN #2 (informazioni non taggate vengono riportate sulla VLAN #2);
 
** '''untagged''' per la VLAN #2 (informazioni non taggate vengono riportate sulla VLAN #2);
 
** '''tagged''' per la VLAN #1 (ossia per spedire informazioni sulla VLAN #1 l'OlinuXino dovrà saperle taggare);
 
** '''tagged''' per la VLAN #1 (ossia per spedire informazioni sulla VLAN #1 l'OlinuXino dovrà saperle taggare);
 
* Lo stesso si è fatto per la 23, ma al momento è inutilizzata.
 
* Lo stesso si è fatto per la 23, ma al momento è inutilizzata.
  
=== Configurazione OLinuXino...===
+
== Configurazione OLinuXino ==
==== per VLAN ====
+
=== VLAN ===
 
Installare il pacchetto <code>vlan</code>
 
Installare il pacchetto <code>vlan</code>
 
  # apt-get install vlan
 
  # apt-get install vlan
  
Abilitare il modulo per il protocollo 8021q e inserirlo per il caricamento all'avvio. '''Nota: non necessario sul NOSTRO OLinuXino''' perché il modulo è linkato staticamente.
+
Abilitare il modulo per il protocollo 8021q e inserirlo per il caricamento all'avvio.
 +
 
 +
'''Nota''': questo non è necessario sul '''nostro''' OLinuXino, perché il modulo è linkato staticamente.
  
 
  # modprobe 8021q
 
  # modprobe 8021q
 
  # echo 8021q >> /etc/modules
 
  # echo 8021q >> /etc/modules
  
Configurare il file /etc/network/interfaces
+
Configurare il file ''/etc/network/interfaces''
  
  # VLAN 2 - untagged: prendi il DCHP dalla rete esterna
+
  # VLAN 2 - Untagged. Prendi il DCHP dalla rete esterna
 
  auto eth0
 
  auto eth0
 
  iface eth0 inet dhcp
 
  iface eth0 inet dhcp
  
  # VLAN 1 - bisogna taggare! IP statico
+
  # VLAN 1 - Bisogna taggare. Mi dò un IP statico
 
  auto eth0.1
 
  auto eth0.1
 
  iface eth0.1 inet static
 
  iface eth0.1 inet static
Riga 63: Riga 70:
 
  vlan-raw-device eth0
 
  vlan-raw-device eth0
  
'''In breve''': l'OlinuXino, come detto prima, deve saper taggare i pacchetti per poter dialogare contemporaneamente con l'interno o con l'esterno. Ora, poiché la porta dove è connesso (22) è ''untagged'' per VLAN #2 ciò che lui butta in rete va di per sé verso l'esterno. Per la VLAN #1 invece l'informazione deve essere taggata, da qui la seconda parte del file <code>interfaces</code>
+
La dicitura ''eth0.1'' indica la VLAN 1, che è raggiungibile fisicamente attraverso ''eth0''.
 +
 
 +
'''In breve''': l'OlinuXino, come detto prima, deve saper taggare i pacchetti per poter dialogare contemporaneamente con l'interno e con l'esterno. Ora, poiché la porta dove è connesso (22) è ''untagged'' per VLAN #2 ciò che lui butta in rete va di per sé verso tale VLAN (l'esterno). Per la VLAN #1 invece l'informazione deve essere taggata, da qui la seconda parte del file ''interfaces''.
 +
 
 +
=== DHCP Server ===
 +
L'OLinuXino si deve occupare di assegnare gli indirizzi IP sulla rete ''interna'' VLAN 1. Poiché si dovrà occupare anche di rispondere alle richieste DNS provenienti dalla rete ''interna'' VLAN 1, installiamo ''dnsmasq'', che fa tutto lui.
 +
 
 +
# apt-get install dnsmasq
 +
 
 +
Modifichiamo ''/etc/dnsmasq.conf'':
 +
 
 +
# Accettare le richieste solo su questa interfaccia di rete
 +
interface=eth0.1
 +
 
 +
# Assegnare gli indirizzi IP di questo intervallo
 +
dhcp-range=192.168.5.101,192.168.5.254,12h
 +
 
 +
Automaticamente, ai computer che richiedono un indirizzo IP, viene anche comunicato anche:
 +
* Indirizzo del gateway (OLinuXino)
 +
* Indirizzo del server DNS (OLinuXino)
 +
Se questi servizi non risiedono sull'OLinuXino, spulciare ''dnsmasq.conf'' per modificare questo comportamento (a noi non interessa).
  
==== Gateway e DHCP ====
+
=== DNS Server ===
[...]
+
Lo fa già da sé, ma nel file ''dnsmasq.conf'' decommentiamo anche queste due linee per non far uscire inutilmente query DNS che non potranno essere risolte da nessuno:
  
==== Modifiche da apportare al "cacher" ====
+
domain-needed
[...]
+
bogus-priv
 +
 
 +
=== Squid ===
 +
Installare ''Squid'' per tenere una copia di tutto il traffico HTTP, che a questo punto passa attraverso l'OLinuXino.
 +
# apt-get install squid3
 +
Vedere [[Apt-cacher#Squid-Only | Squid]].
 +
 
 +
=== Firewall ===
 +
Script per il firewall, per mandare i pacchetti sulla 80 (HTTP) a Squid, e gli altri direttamente fuori.
 +
 
 +
#!/bin/sh
 +
# Squid server IP
 +
SQUID_SERVER="192.168.5.10"
 +
 +
# Interface connected to Internet
 +
INTERNET="eth0"
 +
 +
# Interface connected to LAN
 +
LAN_IN="eth0.1"
 +
 +
# Squid port
 +
SQUID_PORT="3128"
 +
 +
# Clean old firewall
 +
iptables -F
 +
iptables -X
 +
iptables -t nat -F
 +
iptables -t nat -X
 +
iptables -t mangle -F
 +
iptables -t mangle -X
 +
 +
# Load IPTABLES modules for NAT and IP conntrack support
 +
modprobe ip_tables
 +
modprobe ip_conntrack
 +
modprobe iptable_nat
 +
modprobe ipt_MASQUERADE
 +
echo 1 > /proc/sys/net/ipv4/ip_forward
 +
 +
# Set this system as a router for rest of LAN
 +
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
 +
 +
# DNAT port 80 request coming from LAN systems to squid 3128 ($SQUID_PORT), aka transparent proxy
 +
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
 +
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
  
 
==Bibliografia==
 
==Bibliografia==

Versione delle 21:09, 22 dic 2016

In questa pagina sono raccolte tutte le informazioni relative alla struttura della rete LAN/Internet dell'Officina Informatica. Al momento la rete è in implementazione.

Esigenze

Struttura beta della rete
  • Ponte radio - Poiché non arriva cavo telefonico all'Officina, è necessario realizzare una connessione a distanza con un modem/router interno all'area della vela. Si userà un ponte radio bridge presumibilmente a 5GHz;
  • Separazione delle reti - Rete interna GOLEM e rete esterna (ponte radio/gateway esterno) devono essere separate;
  • LAN - Abbiamo a disposizione 12 porte ethernet nelle sale dell'Officina;
  • WiFi interna - Oltre alla Ethernet LAN servirà un ulteriore dispositivo per la connessione tramite dispositivi wireless (WLAN);
  • Server/Caching - Si vorrebbe usare il minicomputer OLinuXino sia come semplice server locale (storage di dati condivisi) che come sistema di cache per aggiornare sistemi debian-based (apt-cacher o simili) e non. Il traffico di rete dovrà attraversare l'Olinuxino.

Materiali a disposizione

  • Antenne per ponte radio e relativi router (presumibilmente Mikrotik)
  • Switch Allied Telesyn (24 porte)
  • Mikrotik RouterBoard 433 (per WLAN) ?
  • OLinuXino A10 LIME

Cenni VLAN

VLAN = Virtual LAN, insieme di tecnologie che permettono di suddividere una rete basata su switch, in più reti logicamente non comunicanti tra loro, ma che condividono la stessa infrastuttura fisica. (riadattato da Wikipedia)

Noi creeremo due VLAN (interna = #1 = LAN locale ed esterna = #2 = verso il ponte radio). I membri di una VLAN non possono comunicare con quelli dell'altra VLAN (le informazioni trasmesse vengono automaticamente taggate dallo switch con l'ID della VLAN di partenza). I membri di entrambe le VLAN (per noi l'OlinuXino) devono taggare manualmente i pacchetti per notificare allo switch su quale VLAN indirizzarli.

Piano d'azione

Poiché OLinuXino ha una sola scheda di rete fisica, si configura lo switch per supportare due VLAN (Virtual LAN) (isolate fra loro: come fossero LAN gestite da due switch diversi, ndr).

  • VLAN#1 - Antenna WLAN e porte ethernet LAN fanno parte della VLAN interna
  • VLAN#2 - Il ponte radio fa parte della VLAN esterna

OLinuXino appartiene ad entrambe e funge da router di collegamento. OLinuXino sarà sicuramente anche il gateway predefinito per le macchine della VLAN#1, ed anche il loro server DNS. Inoltre, farà anche da server DHCP.

OLinuXino dovrà gestire le due VLAN. Anche se ha una sola scheda di rete fisica, esso è cosciente dell'esistenza delle due VLAN, perciò si "sdoppia" la scheda di rete fisica in due schede virtuali, una per ogni VLAN.

Configurazione VLAN su switch

Switchone-config.jpeg
  • Creazione due VLAN:
    • ID #1 - interno
    • ID #2 - esterno
  • Si imposta per ogni porta il PVID (Port VLAN IDentifier), ossia si informa lo switch a quale delle due VLAN appartiene la porta per default. Le porte dalla 1 alla 21 hanno PVID #1 (danno verso l'interno), dalla 22 alla 24 hanno PVID #2 (danno verso l'esterno).
  • Poi si imposta la porta 22 sia come membro della VLAN #2 (lo è già per default) che per la VLAN #1. Per default si ha che la porta 22 è:
    • untagged per la VLAN #2 (informazioni non taggate vengono riportate sulla VLAN #2);
    • tagged per la VLAN #1 (ossia per spedire informazioni sulla VLAN #1 l'OlinuXino dovrà saperle taggare);
  • Lo stesso si è fatto per la 23, ma al momento è inutilizzata.

Configurazione OLinuXino

VLAN

Installare il pacchetto vlan

# apt-get install vlan

Abilitare il modulo per il protocollo 8021q e inserirlo per il caricamento all'avvio.

Nota: questo non è necessario sul nostro OLinuXino, perché il modulo è linkato staticamente.

# modprobe 8021q
# echo 8021q >> /etc/modules

Configurare il file /etc/network/interfaces

# VLAN 2 - Untagged. Prendi il DCHP dalla rete esterna
auto eth0
iface eth0 inet dhcp
# VLAN 1 - Bisogna taggare. Mi dò un IP statico
auto eth0.1
iface eth0.1 inet static
address 192.168.5.10
netmask 255.255.255.0
vlan-raw-device eth0

La dicitura eth0.1 indica la VLAN 1, che è raggiungibile fisicamente attraverso eth0.

In breve: l'OlinuXino, come detto prima, deve saper taggare i pacchetti per poter dialogare contemporaneamente con l'interno e con l'esterno. Ora, poiché la porta dove è connesso (22) è untagged per VLAN #2 ciò che lui butta in rete va di per sé verso tale VLAN (l'esterno). Per la VLAN #1 invece l'informazione deve essere taggata, da qui la seconda parte del file interfaces.

DHCP Server

L'OLinuXino si deve occupare di assegnare gli indirizzi IP sulla rete interna VLAN 1. Poiché si dovrà occupare anche di rispondere alle richieste DNS provenienti dalla rete interna VLAN 1, installiamo dnsmasq, che fa tutto lui.

# apt-get install dnsmasq

Modifichiamo /etc/dnsmasq.conf:

# Accettare le richieste solo su questa interfaccia di rete
interface=eth0.1
# Assegnare gli indirizzi IP di questo intervallo
dhcp-range=192.168.5.101,192.168.5.254,12h

Automaticamente, ai computer che richiedono un indirizzo IP, viene anche comunicato anche:

  • Indirizzo del gateway (OLinuXino)
  • Indirizzo del server DNS (OLinuXino)

Se questi servizi non risiedono sull'OLinuXino, spulciare dnsmasq.conf per modificare questo comportamento (a noi non interessa).

DNS Server

Lo fa già da sé, ma nel file dnsmasq.conf decommentiamo anche queste due linee per non far uscire inutilmente query DNS che non potranno essere risolte da nessuno:

domain-needed
bogus-priv

Squid

Installare Squid per tenere una copia di tutto il traffico HTTP, che a questo punto passa attraverso l'OLinuXino.

# apt-get install squid3

Vedere Squid.

Firewall

Script per il firewall, per mandare i pacchetti sulla 80 (HTTP) a Squid, e gli altri direttamente fuori.

#!/bin/sh
# Squid server IP
SQUID_SERVER="192.168.5.10"

# Interface connected to Internet
INTERNET="eth0"

# Interface connected to LAN
LAN_IN="eth0.1"

# Squid port
SQUID_PORT="3128"

# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ipt_MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Set this system as a router for rest of LAN
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE

# DNAT port 80 request coming from LAN systems to squid 3128 ($SQUID_PORT), aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT

Bibliografia