Differences between revisions 21 and 37 (spanning 16 versions)
Revision 21 as of 2013-05-18 19:09:38
Size: 19027
Comment: sync with English master
Revision 37 as of 2020-12-11 12:40:44
Size: 31889
Comment: sync with English master v.113
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[NetworkConfiguration|English]] - [[fr/NetworkConfiguration|Français]] - Italiano - [[zh_CN/NetworkConfiguration|简体中文]] -~ ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[NetworkConfiguration|English]] - [[es/NetworkConfiguration|Español]] - [[fr/NetworkConfiguration|Français]] - Italiano - [[zh_CN/NetworkConfiguration|简体中文]] -~
Line 4: Line 4:

{{{#!wiki debian
'''[[https://www.debian.org/doc/manuals/debian-reference/ch05.it.html|Mauale Debian - Capitolo 5. Impostazione della rete]]'''
}}}
Line 14: Line 19:

== Avviare e fermare interfacce ==

Le interfacce configurate con {{{/etc/network/interfaces}}} possono essere attivate e disattivate con i comandi DebianMan:ifup e DebianMan:ifdown.

Alcune guide sorpassate dicono di riavviare il servizio di rete per applicare le modifiche a {{{/etc/network/interfaces}}}, tuttavia ciò è deprecato perché è possibile che non tutte le interfacce vengano riavviate. Usare invece {{{ifup}}} e {{{ifdown}}} per applicare le modifiche a ciascuna interfaccia, per esempio con un'interfaccia di nome enp7s0:

{{{
# ifdown enp7s0
# ifup enp7s0
}}}

== Nomi delle interfaccia di rete ==
Vedere anche [[NetworkInterfaceNames|Nomi delle interfacce di rete]]. A partire da Stretch, i nuovi sistemi in modo predefinito non usano più i nomi di rete vecchio stile, come eth0, eth1, wlan0, wlan1. I nuovi sistemi usano nomi basati sulla posizione dell'hardware, come eno0, enp0s31f6, wlp1s7 (o nel caso di chiavette USB, l'indirizzo MAC:enx2c56ac39ec0d).

Si possono elencare le interfacce usando: `ls /sys/class/net`

I vari esempi sottostanti continuano ad usare "eth0" come nome di interfaccia predefinito, anche se è improbabile che esista ancora in un sistema moderno.

=== Upgrading and Network Interface Names ===

Stretch and Buster still retain support for the old naming system as long as the file `/etc/udev/rules.d/70-local-persistent-net.rules` is still in place, but users are advised to switch ahead of the upgrade to Bullseye.

=== Aggiornamento e nomi di interfaccia di rete ===

Stretch e Buster mantengono ancora il supporto per il vecchio sistema di nomi a patto che il file `/etc/udev/rules.d/70-local-persistent-net.rules` sia ancora al suo posto, ma gli utenti sono incoraggiati ad passare al nuovo sistema prima dell'aggiornamento a Bullseye.
Line 25: Line 56:
Per DHCPv6 (usato per IPv6), '''aggiungere in fondo al file''' anche la seguente sezione `iface`

{{{
    iface eth0 inet6 dhcp
}}}

In alternativa, IPv6 può essere autoconfigurato usando l'{{{}}}''autoconfigurazione stateless di indirizzi'' o SLAAC (!StateLess Address !AutoConfiguration), che viene specificata con `auto` invece di `dhcp` nella sezione `inet6`:

{{{
    iface eth0 inet6 auto}}}

Vedere anche [[IPv6PrefixDelegation]].

Line 32: Line 77:
        address 192.168.0.7
        netmask
255.255.255.0
        gateway 192.168.0.254
        address 192.0.2.7/24
        gateway 192.0.2.254
Line 41: Line 85:
        address 2001:db8::c0ca:1eaf
        netmask
64
        address 2001:db8::c0ca:1eaf/64
Line 48: Line 91:
Assicurarsi di disabilitare tutti i servizi DHCP, es. "dhcpcd".

È anche possibile mescolare configurazione manuale e automatica, ad esempio per usare IPv6 SLAAC per la connettività Internet e indirizzi statici all'interno della rete:

{{{
# indirizzo locale manuale unico
iface eth0 inet6 static
 address fdc3:cafe::3/64
 # usare SLAAC per ottenere indirizzo globale IPv6 dal router
 # non possiamo abilitare il forwarding ipv6 altrimenti SLAAC viene disabilitato
 autoconf 1
 accept_ra 2
}}}
Line 55: Line 112:
 * assicurarsi di avere un modo per accedere al sistema, nel caso che l'interfaccia di rete diventi inusabile; una connessione [[ssh]] potrebbe venire compromessa perciò si dovrebbe avere una strategia di ripiego  * assicurarsi di avere un modo per accedere al sistema, nel caso che l'interfaccia di rete diventi inusabile; una connessione [[it/SSH|SSH]] potrebbe venire compromessa perciò si dovrebbe avere una strategia di ripiego
Line 62: Line 119:
  * `ethtool -s eth0 autoneg off speed 100 duplex full` (nell'ipotesi di 100 Mbps e full duplex)   * `ethtool -s eth0 speed 100 duplex full autoneg off` (nell'ipotesi di 100 Mbps e full duplex)
Line 69: Line 126:
        address ...
        netmask
...
        address .../...
Line 90: Line 146:
Se l'interfaccia è un'interfaccia VLAN, i comandi up/down devono essere eseguiti rispettivamente dopo e prima degli hook per la VLAN. (È necessario anche installare il pacchetto DebianPkg:vlan.)

{{{
   iface eth0.99 inet manual
      post-up ifconfig $IFACE up
      pre-down ifconfig $IFACE down
}}}

Nota bene: se si crea l'interfaccia VLAN solo per metterla in un bridge, non è necessario definirla manualmente; basta configurare il bridge, e l'interfaccia VLAN sarà creata automaticamente quando viene creato il bridge (vedere in seguito).
Line 139: Line 205:
== Configurazione DNS per network-manager ==

''Attenzione:'' questa sezione non è stata testata con una reale configurazione di network-manager, si prega di verificarla e rimuovere questo avviso.
''Nota:'' questa sezione sembra applicabile a sistemi Red Hat e non Debian in quanto i primi utilizzano tipicamente {{{/etc/sysconfig/network-scripts/}}}, per cui il riferimento a {{{/etc/sysconfig/network-scripts/ifcfg-*}}} probabilmente non è appropriato.

Se si usa [[it/NetworkManager|NetworkManager]], inserire le proprie configurazioni in {{{/etc/sysconfig/network-scripts/ifcfg-*}}}. Esempio:

{{{
DNS1=127.0.0.1
DNS2=8.8.8.8
DNS3=8.8.4.4
}}}

Con l'interfaccia grafica questo significa:

 1. Menu Sistema → Preferenze → Connessioni di rete.
== Configurazione DNS per NetworkManager ==

[[it/NetworkManager|NetworkManager]] scavalca le impostazioni DHCP, riscrivendo resolv.conf anche se si è configurato il DNS in /etc/dhcp/dhclient.conf, facendo sì, ad esempio, che il DNS cerchi prima nel dominio locale, il che può comportare l'attesa del timeout prima che la risoluzione DNS continui e causando tempi lunghi di risoluzione DNS. Si può avere un'idea di come [[it/NetworkManager|NetworkManager]] pensa dovrebbero essere le impostazioni eseguendo nm-tool dalla riga di comando.

Si può configurare queste impostazioni usando una GUI, avviando l'editor nm-connection-editor che attualmente (13.11.23) non si trova nel menu Strumenti di Sistema → Amministrazione, ma piuttosto deve essere avviato a mano dalla riga di comando. Dopo l'avvio:
Line 156: Line 212:
 1. Nella scheda Impostazioni IPv4 cambiare il Metodo in qualcosa che non sia “Automatico (DHCP)”. Per esempio “Automatico (DHCP) solo indirizzi” è probabilmente appropriato.
 1. Inserire i server DNS nel campo “Server DNS”, separati da spazi.
 1. Fare clic sulla schede delle impostazioni per IPv4
 1. Scegliere "Solo indirizzi automatici (DHCP)' invece di semplicemente 'Automatici (DHCP)'.
 1. Inserire i server DNS nel campo “Server DNS”, separati da spazi (es. 208.67.222.222 per OpenDNS).
Line 160: Line 217:
Si noti che il client DHCP potrebbe sovrascrivere queste impostazioni, in questo caso considerare se segnalarlo come bug e vedere sotto per la configurazione del client DHCP.

Questa sezione è basata sulla pagina http://code.google.com/speed/public-dns/docs/using.html, consultarla per i dettagli.

== Configurare il client DHCP ==
[[it/NetworkManager|NetworkManager]] salva queste impostazioni in {{{/etc/NetworkManager/system-connections/name-of-connection}}}. Esempio {{{/etc/NetworkManager/system-connections/Connessione_cablata_1}}} :

{{{
[802-3-ethernet]
duplex=full
mac-address=XX:XX:XX:XX:XX:XX

[connection]
id=Connessione_cablata_1
uuid=xxx-xxxxxx-xxxxxx-xxxxxx-xxx
type=802-3-ethernet
timestamp=1385213042

[ipv6]
method=auto

[ipv4]
method=auto
dns=208.67.222.222;
ignore-auto-dns=true
}}}

Se si esegue nuovamente nm-tool si dovrebbe vedere che !NetworkManager ora sa come deve risolvere il DNS.

== Configurare i client DHCP ==

=== Impostare server DNS aggiuntivi ===
Line 169: Line 248:
supersede domain-name-servers 12.34.56.78, 12.34.56.79 supersede domain-name-servers 12.34.56.78, 12.34.56.79;
Line 175: Line 254:
prepend domain-name-servers 12.34.56.78, 12.34.56.79
}}}

per i dettagli vedere la pagina di manuale di dhclient.conf(5)
prepend domain-name-servers 12.34.56.78, 12.34.56.79;
}}}

=== Impostare domini di ricerca aggiuntivi ===

Per aggiungere domini di ricerca per VPN o reti virtuali locali:

{{{
append domain-name " virt vpn";
}}}

Notare lo spazio iniziale dato che la stringa viene aggiunta in modo letterale alla fine del dominio di ricerca fornito da altre configurazioni.

Per i dettagli vedere la pagina di manuale di dhclient.conf(5)

= Uso di bridge =

L'uso di bridge mette più interfacce sullo stesso segmento di rete. È molto comune quando si connette un server a più switch per l'alta disponibilità o con la virtualizzazione. In quest'ultimo caso viene solitamente usato per creare un bridge nell'host (es. dom0) e mettere le interfacce virtuali degli ospiti (domU) nel bridge.

Esempio: connettere un server a 2 switch (via eth0 e eth1) definendo il bridge 0 e dando al server un indirizzo IP in questa sottorete:

{{{
auto br0
iface br0 inet static
        address 10.10.0.15/24
        gateway 10.10.0.1
        bridge_ports eth0 eth1
        up /usr/sbin/brctl stp br0 on
}}}

Se un server è connesso a più switch, solitamente è necessario eseguire il protocollo STP (Spanning Tree Protocol) per evitare cicli. Perciò si deve attivare l'STP usando un comando "up", come mostrato sopra.

Esempio: configurazione bridge senza configurazione di indirizzo IP (usare "manual" invece di "static") per "inoltrare" un'interfaccia ad una VM ospite. (La configurazione statica del bridge contiene solo un'unica interfaccia fisica. L'interfaccia virtuale verrà aggiunta al bridge quando viene avviata la VM.)

{{{
auto br1
iface br1 inet manual
        bridge_ports eth4
        up /usr/sbin/brctl setageing br1 0
        up /usr/sbin/brctl stp br1 off
}}}

Nota bene: Il bridge Linux supporta solo STP, non RSTP (Rapid Spanning Tree). Perciò supporta solo i vecchi costi STP, non i nuovi costi RSTP (vedere WikiPedia:Spanning_Tree_Protocol#Data_rate_and_STP_path_cost). Questo va di solito bene con gli switch Cisco ma, ad esempio, gli switch Juniper usano i costi RSTP e perciò questo può portare ad un calcolo diverso dell'albero di spanning e a problemi di cicli. Ciò può essere risolto impostando i costi a mano, sullo switch o sul servert. Impostare i costi sullo switch è preferibile poiché Linux torna ai costi predefiniti ogni volta che un'interfaccia viene disattivata/attivata.

== Bridge senza switch ==

In modo predefinito il bridge Linux agisce come uno switch. Ciò significa che ricorda gli indirizzi MAC dietro una porta switch e, se l'indirizzo MAC è conosciuto, i pacchetti dati o inoltra solamente alla porta corrispondente, altrimenti usa il broadcast.

In alcune configurazioni ciò non va bene. Per esempio, se il bridge connette 2 interfacce trunk e gli stessi indirizzi MAC possono essere visti da entrambe le interfacce, a seconda della VLAN. Dato che il bridge Linux non gestisce le VLAN (tabelle di indirizzi MAC dedicate per ogni VLAN), in tali configurazioni è necessario disabilitare l'apprendimento degli indirizzi MAC e mettere il bridge in una modalità "bridge" reale con:

{{{
        up /sbin/brctl setageing br0 0
        up /sbin/brctl stp br0 off
}}}
Line 186: Line 315:
apt-get install vlan apt install vlan
Line 194: Line 323:
== Configurazione di rete con script init ==

Nel file {{{/etc/modules}}} aggiungere la riga:
{{{
8021q
}}}

Alla sezione {{{iface}}} di {{{/etc/network/interfaces}}} aggiungere il parametro:

{{{
        vlan-raw-device eth0
}}}

Il nome dell'interfaccia dovrebbe essere il nome grezzo dell'interfaccia (lo stesso specificato da vlan-raw-device), seguito da un punto, poi dall'ID VLAN, come ad esempio: eth0.100. Oppure può essere "vlan" seguito dall'ID VLAN, ad esempio: vlan100. In entrambi i casi l'ID VLAN compare alla fine e questo è l'unico posto in cui è configurato. Esempio:

Nota bene: se si assegna all'interfaccia VLAN un nome ethX.YYY, allora non è necessario specificare il vlan-raw-device, dato che il device raw può essere ottenuto a partire dal nome dell'interfaccia.

Es:
{{{
auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1/24
        vlan-raw-device eth0
}}}

== Bridge e VLAN ==

Se si creano interfacce VLAN solo per metterle in un bridge, non è necessario definire le interfacce VLAN a mano. Basta configurare il bridge e l'interfaccia VLAN verra creata automaticamente quando viene creato il bridge, ad esempio:

{{{
auto br1
iface br1 inet manual
        bridge_ports eth0.99 eth1.99
        up /usr/sbin/brctl stp br1 on}}}
Line 200: Line 364:
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        address 192.168.1.1/24
Line 207: Line 368:
        address 192.168.110.1
        network 192.168.110.0
        netmask 255.255.255.0
        broadcast 192.168.110.255
        address 192.168.110.1/24
Line 218: Line 376:
== Configurazione di rete con script init ==

Nel file {{{/etc/modules}}} aggiungere la riga:
{{{
8021q
}}}

Alla sezione {{{iface}}} di {{{/etc/network/interfaces}}} aggiungere il parametro:

{{{
        vlan-raw-device eth0
}}}

Il nome dell'interfaccia dovrebbe essere il nome grezzo dell'interfaccia (lo stesso specificato da vlan-raw-device), seguito da un punto, poi dall'ID VLAN, come ad esempio: eth0.100. Oppure può essere "vlan" seguito dall'ID VLAN, ad esempio: vlan100. In entrambi i casi l'ID VLAN compare alla fine e questo è l'unico posto in cui è configurato. Esempio:

{{{
auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1
        netmask 255.255.255.0
        network 10.10.10.0
        broadcast 10.10.10.255
        vlan-raw-device eth0
}}}


= Come creare un collegamento con link aggregation con vlan in Etch =
= Come creare un collegamento con link aggregation con vlan (da Etch a Stretch) =
Line 292: Line 424:
        address 10.10.10.12
        netmask 255.255.0.0
        network 10.10.0.0
        broadcast 10.10.255.255
        address 10.10.10.12/24
Line 302: Line 431:
        address 10.20.10.12
        netmask 255.255.0.0
        network 10.20.0.0
        broadcast 10.20.255.255
        address 10.20.10.12/24
Line 309: Line 435:
        address 10.30.10.12
        netmask 255.255.0.0
        network 10.30.0.0
        broadcast 10.30.255.255
        address 10.30.10.12/24
        vlan-raw-device bond0
}}}

 * In Debian Buster, si devono usare i nomi di interfaccia per le VLAN, nella forma: {{{bond0.10}}}, {{{bond0.20}}} e {{{bond0.30}}} invece di {{{vlan10}}}, {{{vlan20}}}, {{{vlan30}}}
 * https://www.kernel.org/doc/Documentation/networking/bonding.txt - Documentazione del kernel Linux sul bonding
 * https://www.dm.unibo.it/~donatini/admin/rete/bonding.html - Bonding in Linux 2.6

== Come impostare il valore di MTU (Max Transfer Unit / dimensione del pacchetto) con VLAN su un'interfaccia con bonding ==

MTU deve essere configurato sull'interfaccia di bonding, e sulle interfacce slave dopo che la reimpostazione della configurazione è stata applicata alle interfacce di bonding. Ciò viene fatto usando una riga post-up nella configurazione dell'interfaccia di bonding.

{{{
auto bond0
iface bond0 inet manual
        up ifconfig lacptrunk0 0.0.0.0 up
        slaves eth0 eth1
# bond-mode 4 = 802.3ad
        bond-mode 4
        bond-miimon 100
        bond-downdelay 200
        bond-updelay 200
        bond-lacp-rate 1
        bond-xmit-hash-policy layer2+3
        post-up ifconfig eth0 mtu 9000 && ifconfig eth1 mtu 9000 && ifconfig bond0 mtu 9000

#i device vlan useranno l'MTU impostato sul device bond0
auto vlan101
iface vlan101 inet static

        address 10.101.60.123/24
        gateway 10.155.60.1
        vlan-raw-device bond0

auto vlan151
iface vlan151 inet static

        address 192.168.1.1/24
Line 319: Line 479:
== Metodo datato ==
Line 330: Line 491:
    address 192.168.1.42
    netmask
255.255.255.0
    address 192.168.1.42/24
Line 337: Line 497:
    address 192.168.1.43
    netmask
255.255.255.0
    address 192.168.1.43/24
Line 343: Line 502:
    address 192.168.1.44
    netmask
255.255.255.0
    address 192.168.1.44/24
Line 349: Line 507:
La configurazione di cui sopra è il metodo tradizionale passato che riflette l'uso tradizionale di ''ifconfig'' per configurare i dispositivi di rete.
''ifconfig'' ha introdotto il concetto di ''alias'' di interfacce o interfacce ''virtuali''; queste hanno nomi nella forma ''interfaccia:numero'' e ifconfig le tratta in modo molto simile alle interfacce reali.

L'utilità ''ifconfig'' è in fase di eliminazione e verrà sostituita da ''ip'' contenuta nel pacchetto ''iproute''; questa non utilizza lo stesso concetto di alias o interfacce virtuali ma tratta invece gli indirizzi aggiuntivi come oggetti di prima classe. Il nuovo metodo per configurare indirizzi multipli su un'unica interfaccia è quello di utilizzare il meccanismo ''up'' e ''down'' per chiamare ''ip'' al momento giusto per aggiungere e rimuovere questi indirizzi IP aggiuntivi.

Questo esempio di {{{/etc/network/interfaces}}} assegna tre indirizzi IP a eth0 e li etichetta.
Il concetto di interfacce con ''alias'' o ''virtuali'' è stato introdotto da ''ifconfig''. Questi tipi di interfacce virtuali hanno nomi nella forma ''interfaccia:numero'' e ifconfig le tratta in modo molto simile alle interfacce reali.

Oggigiorno ''ifupdown'' usa l'utilità ''ip'' dal pacchetto ''iproute2'' invece di ''ifconfig''. L'utilità ''ip'' più nuova non usa lo stesso concetto di alias o interfacce virtuali. Tuttavia permette di assegnare nomi arbitrari alle interfacce (sono chiamati etichette). ''ifupdown'' usa questa funzionalità per gestire le interfacce con gli alias quando si usa ''ip''.

== Metodo iproute2 ==
''ifupdown'' permette inoltre di specificare più interfacce ripetendo sezioni ''iface'' con lo stesso nome di interfaccia. La differenza chiave rispetto al metodo descritto sopra è che queste sezioni vengono trattate da ''ifupdown'' come un'unica interfaccia, perciò l'utente può aggiungerle o rimuoverle singolarmente. Tuttavia i comandi ''up''/''down'', così come gli script, vengono chiamati per ogni sezione come avveniva prima.

Notare tuttavia che questo metodo è '''pericoloso'''! Per alcune combinazioni di driver e hardware può a volte fallire l'attivazione del collegamento se non viene assegnata un'etichetta alle interfacce alias. (Comportamento visto in Debian Wheezy e Jessie con RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 01) e auto-negoziazione di 10/full. Nella cronologia di questa pagina esiste un avvertimento simile da un altro autore.)

Questo testo per /etc/network/interfaces assegna tre indirizzi IP a eth0.
Line 360: Line 521:
    address 192.168.1.42
    netmask
255.255.255.0
    address 192.168.1.42/24
Line 363: Line 523:
    up ip addr add 192.168.1.43/24 dev eth0 label eth0:0
    down ip addr del 192.168.1.43/24 dev eth0 label eth0:0
    up ip addr add 192.168.1.44/24 dev eth0 label eth0:1
    down ip addr del 192.168.1.44/24 dev eth0 label eth0:1
}}}

Ulteriori informazioni si trovano alla pagina http://www.shorewall.net/Shorewall_and_Aliased_Interfaces.html

iface eth0 inet static
    address 192.168.1.43/24

iface eth0 inet static
    address 192.168.1.44/24

# e' anche possibile aggiungere indirizzi IP da diverse sottoreti
iface eth0 inet static
    address 10.10.10.14/24
}}}

Approccio manuale:

{{{
auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1
    up ip addr add 192.168.1.43/24 dev $IFACE label $IFACE:0
    down ip addr del 192.168.1.43/24 dev $IFACE label $IFACE:0
    up ip addr add 192.168.1.44/24 dev $IFACE label $IFACE:1
    down ip addr del 192.168.1.44/24 dev $IFACE label $IFACE:1
    up ip addr add 10.10.10.14/24 dev $IFACE label $IFACE:2
    down ip addr del 10.10.10.14/24 dev $IFACE label $IFACE:2

}}}


= Bonding + bridging + vlan + fakebridge funzionante su jessie =

Configurazione di rete con Link Aggregation (attivo) + bridge e fakebridge per uso con macchine virtuali (tipicamente su un hypervisor KVM)

== Prerequisiti ==

Installare i pacchetti 'ifenslave, vlan, bridge-utils'

Aggiungere ai moduli caricati '/etc/modules' i seguenti:

{{{
loop
bonding
mii
8021q
}}}

== Configurazione di esempio ==

{{{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#INTERFACCE FISICHE
auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto eth2
iface eth2 inet manual

#BONDING e VLAN
auto bond0
iface bond0 inet manual
   bond-mode 4
   bond-miimon 100
   bond-lacp-rate fast
   bond-slaves eth0 eth1

auto bond0.75
iface bond0.75 inet manual
   vlan-raw-device bond0

auto bond0.139
iface bond0.139 inet manual
   vlan-raw-device bond0

auto bond0.283
iface bond0.283 inet manual
   vlan-raw-device bond0

auto bond0.287
iface bond0.287 inet manual
   vlan-raw-device bond0

#BRIDGES
auto br0
iface br0 inet static
   address 192.9.200.55
   netmask 255.255.255.0
   gateway 192.9.200.180
   bridge_ports bond0
   bridge_stp off
   bridge_fd 0

auto br75
iface br75 inet static
   address 10.11.16.22
   netmask 255.255.248.0
   gateway 10.11.16.1
   bridge_ports bond0.75
   bridge_stp off
   bridge_fd 0 # no forwarding delay
   bridge_waitport 0 # no delay before a port becomes available

auto br139
iface br139 inet static
   address 10.11.33.239
   netmask 255.255.224.0
   gateway 10.11.32.1
   bridge_ports bond0.139
   bridge_stp off
   bridge_fd 0

#FAKEBRIDGES
auto br283
iface br283 inet manual
   bridge_ports bond0.283
   bridge_stp off
   bridge_fd 0

auto br287
iface br287 inet manual
   bridge_ports bond0.287
   bridge_stp off
   bridge_fd 0

}}}

A questo punto potrò assegnare le diverse vlan alle macchine virtuali guest che ospiterò sull'hypervisor KVM, utilizzando come "shared device name" della rete i vari bridge e fakebridge definiti nel file di configurazione

Ho definito 'fakebridge' dei normali bridge ma attivati in modalità manuale e senza indirizzo di rete assegnato (ad esempio per assegnare ai vari guest VLAN su cui l'hypervisor non ha indirizzi, come adesempio vlan segregate)

A titolo di esempio incollo anche la configurazione funzionante del portchannel sullo switch Cathalyst Cisco in uso.

{{{
!
interface Port-channel5
 description KVMx4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
!
...
!
interface GigabitEthernet3/0/3
 description x4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 5 mode active
!
!
interface GigabitEthernet3/0/4
 description x4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 5 mode active
!

!
}}}
Line 371: Line 698:
CategoryNetwork
CategoryNetwork CategorySystemAdministration

Translation(s): English - Español - Français - Italiano - 简体中文


Prerequisiti per il lettore: Per ottenere il massimo da questo articolo, è consigliabile capire i seguenti concetti prima di leggere: gli strumenti UNIX di base a riga di comando, editor di testo, DNS, TCP/IP, DHCP, netmask, gateway

Indice

Impostare un'interfaccia ethernet

La maggior parte delle impostazioni di rete può essere fatta tramite il file di configurazione /etc/network/interfaces; qui si può assegnare un indirizzo IP alla scheda di rete (o usare il DHCP), impostare le informazioni di routing, configurare il mascheramento IP, impostare instradamenti predefiniti e molto altro.

Ricordarsi di aggiungere alla riga "auto" le interfacce che si vogliono attivare all'avvio.

Per ulteriori informazioni consultare man interfaces.

Avviare e fermare interfacce

Le interfacce configurate con /etc/network/interfaces possono essere attivate e disattivate con i comandi ifup e ifdown.

Alcune guide sorpassate dicono di riavviare il servizio di rete per applicare le modifiche a /etc/network/interfaces, tuttavia ciò è deprecato perché è possibile che non tutte le interfacce vengano riavviate. Usare invece ifup e ifdown per applicare le modifiche a ciascuna interfaccia, per esempio con un'interfaccia di nome enp7s0:

# ifdown enp7s0
# ifup enp7s0

Nomi delle interfaccia di rete

Vedere anche Nomi delle interfacce di rete. A partire da Stretch, i nuovi sistemi in modo predefinito non usano più i nomi di rete vecchio stile, come eth0, eth1, wlan0, wlan1. I nuovi sistemi usano nomi basati sulla posizione dell'hardware, come eno0, enp0s31f6, wlp1s7 (o nel caso di chiavette USB, l'indirizzo MAC:enx2c56ac39ec0d).

Si possono elencare le interfacce usando: ls /sys/class/net

I vari esempi sottostanti continuano ad usare "eth0" come nome di interfaccia predefinito, anche se è improbabile che esista ancora in un sistema moderno.

Upgrading and Network Interface Names

Stretch and Buster still retain support for the old naming system as long as the file /etc/udev/rules.d/70-local-persistent-net.rules is still in place, but users are advised to switch ahead of the upgrade to Bullseye.

Aggiornamento e nomi di interfaccia di rete

Stretch e Buster mantengono ancora il supporto per il vecchio sistema di nomi a patto che il file /etc/udev/rules.d/70-local-persistent-net.rules sia ancora al suo posto, ma gli utenti sono incoraggiati ad passare al nuovo sistema prima dell'aggiornamento a Bullseye.

Usare DHCP per configurare l'interfaccia automaticamente

Qualcosa di simile sarà tutto ciò che serve se si utilizza DHCP:

    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp

Per DHCPv6 (usato per IPv6), aggiungere in fondo al file anche la seguente sezione iface

    iface eth0 inet6 dhcp

In alternativa, IPv6 può essere autoconfigurato usando l'autoconfigurazione stateless di indirizzi o SLAAC (StateLess Address AutoConfiguration), che viene specificata con auto invece di dhcp nella sezione inet6:

    iface eth0 inet6 auto

Vedere anche IPv6PrefixDelegation.

Configurare manualmente l'interfaccia

Se si sta configurando manualmente, qualcosa di simile imposterà il gateway predefinito (rete, broadcast e gateway sono opzionali):

    auto eth0
    iface eth0 inet static
        address 192.0.2.7/24
        gateway 192.0.2.254

Se si desidera aggiungere anche un indirizzo IPv6, inserire in più di seguito qualcosa come:

    iface eth0 inet6 static
        address 2001:db8::c0ca:1eaf/64
        gateway 2001:db8::1ead:ed:beef

Per ulteriori informazioni consultare man interfaces.

Assicurarsi di disabilitare tutti i servizi DHCP, es. "dhcpcd".

È anche possibile mescolare configurazione manuale e automatica, ad esempio per usare IPv6 SLAAC per la connettività Internet e indirizzi statici all'interno della rete:

# indirizzo locale manuale unico
iface eth0 inet6 static
 address fdc3:cafe::3/64
 # usare SLAAC per ottenere indirizzo globale IPv6 dal router
 # non possiamo abilitare il forwarding ipv6 altrimenti SLAAC viene disabilitato
 autoconf 1
 accept_ra 2

Impostare velocità e duplex

Il fallimento ripetuto della negoziazione automatica è spesso un sintomo di un cablaggio difettoso, perciò controllare i problemi fisici prima di dare per scontato che gli algoritmi di negoziazione automatica delle interfacce siano incompatibili. Se si disattiva la negoziazione automatica e si imposta la velocità e il duplex manualmente, allora l'interfaccia partner dall'altro lato del cavo presumerà che l'assenza di negoziazione automatica indica una velocità di 10Mbps e un duplex di metà. Per un funzionamento senza errori, se si imposta la velocità e il duplex a mano, ci si deve assicurare che siano configurati esattamente nello stesso modo sull'interfaccia partner.

Se si impostano la velocità e il duplex della propria interfaccia a mano, allora potrebbe essere necessario procedere per tentativi. Ecco i passi fondamentali:

  • installare i pacchetti ethtool e net-tools per avere i programmi ethtool e mii-tool, uno di questi o entrambi potrebbero funzionare

  • assicurarsi di avere un modo per accedere al sistema, nel caso che l'interfaccia di rete diventi inusabile; una connessione SSH potrebbe venire compromessa perciò si dovrebbe avere una strategia di ripiego

  • identificare l'interfaccia in questione (spesso sarà eth0) e adattare il resto di queste istruzioni di conseguenza
  • provare a determinare quale siano le attuali impostazioni di velocità e duplex, ecco come divertirsi:
    • per prima cosa provare ethtool eth0 come utente root e vedere se le righe "Speed:" e "Duplex:" paiono valide; in caso contrario ethtool potrebbe non essere supportato dalla periferica

    • provare mii-tool -v eth0 come utente root e vedere se l'output appare corretto, in caso contrario mii-tool potrebbe non essere supportato dalla periferica

    • se nessuno dei due è supportato si possono impostare i parametri direttamente nel modulo del kernel, identificando quello in uso leggendo l'output dei comandi dmesg e lsmod; si può usare modinfo NOMEMODULO per vedere se ha dei parametri e quali accetta (per fare confronti modinfo funziona anche su moduli non caricati) ToDo: dove si impostano i parametri per i moduli del kernel?

  • provare a cambiare le opzioni dell'interfaccia su cui si sta lavorando, naturalmente è necessario essere root. Usare uno tra:
    • ethtool -s eth0 speed 100 duplex full autoneg off (nell'ipotesi di 100 Mbps e full duplex)

    • mii-tool -F 100baseTx-FD eth0 (stessa ipotesi)

    in ogni caso ricontrollare che le impostazioni siano effettivamente cambiate e provare ad inviare e ricevere dei dati per vedere se la scheda di rete stia funzionando correttamente.
  • se uno di questi comandi configura la scheda con successo lo si può inserire in /etc/network/interfaces affinché venga eseguito quando viene attivata l'interfaccia (ad esempio all'avvio del sistema); tuttavia prima di questo si dovrebbe capire che alcuni driver e dispositivi si comportano diversamente rispetto ad altri.
    Quando il modulo viene caricato la scheda di rete può iniziare la negoziazione automatica senza alcun modo di fermarla (in particolare con driver che non accettano parametri); le impostazioni di interfaces vengono applicate in un momento successivo e ciò potrebbe accadere nel bel mezzo della negoziazione; per alcuni perciò è necessario ritardare il comando ethtool o mii-tool di pochi secondi:

 iface eth0 inet static
        address .../...
        gateway ...
        up sleep 5; ethtool -s eth0 ...
  • o analogamente per il comando mii-tool

  • riavviare la macchina per assicurarsi che venga attivata correttamente e prepararsi ad intervenire manualmente (Ctrl-Alt-Del e avviare in modalità single-user da GRUB o LILO) nel caso non funzioni.


Attivare un'interfaccia senza un indirizzo IP

Si usi il metodo manuale per creare un'interfaccia di rete senza un indirizzo IP e i comandi pre-up e post-down per attivarla e disattivarla.

   iface eth0 inet manual
      pre-up ifconfig $IFACE up
      post-down ifconfig $IFACE down

Se l'interfaccia è un'interfaccia VLAN, i comandi up/down devono essere eseguiti rispettivamente dopo e prima degli hook per la VLAN. (È necessario anche installare il pacchetto vlan.)

   iface eth0.99 inet manual
      post-up ifconfig $IFACE up
      pre-down ifconfig $IFACE down

Nota bene: se si crea l'interfaccia VLAN solo per metterla in un bridge, non è necessario definirla manualmente; basta configurare il bridge, e l'interfaccia VLAN sarà creata automaticamente quando viene creato il bridge (vedere in seguito).

Definire i nameserver (DNS)

Prima che un computer possa connettersi ad una risorsa di rete esterna (come ad esempio un server web), deve avere il modo di convertire i nomi alfanumerici (wiki.debian.org) in indirizzi numerici (140.211.166.4) (Internet utilizza questi indirizzi IP numerici strutturati come indirizzi di rete).

La libreria C e le altre librerie resolver leggono il file /etc/resolv.conf per la lista dei nameserver; questo è, nella situazione più semplice, il file da modificare per impostare la lista dei nomi dei server. Si noti che vari altri programmi per la configurazione dinamica saranno lieti di sovrascrivere le impostazioni:

  1. il programma resolvconf

  2. il demone network-manager

  3. i client DHCP

Nella maggior parte dei casi il file da modificare è il file di configurazione del tale programma.

Nelle situazioni più complesse l'utilizzo di resolvconf è davvero la strada da percorrere, anche se in configurazioni più semplici è probabilmente eccessivo.

Il file di configurazione resolv.conf

Il file /etc/resolv.conf contiene informazioni che permettono ad un computer di connettersi alla rete e risolvere i nomi in indirizzi (non confondere questo file di configurazione con il programma resolvconf, che sfortunatamente ha un nome molto simile).

Il file resolv.conf contiene solitamente gli indirizzi IP dei nameserver (risolutori di nomi DNS) che cercheranno di tradurre i nomi in indirizzi per ogni nodo disponibile sulla rete; ci saranno una o più righe simili a queste:

nameserver 12.34.56.78
nameserver 12.34.56.79

In questo esempio il sistema sta usando i nameserver agli indirizzi IP 12.34.56.78 e 12.34.56.79. Inserire semplicemente gli IP necessari dopo ogni nameserver, aggiungendo più righe nameserver in caso se ne abbiano altri. Non usare questo metodo se si ha il programma resolvconf installato.

Il file ha molte altre opzioni per definire come il risolutore controlli i nomi, si veda man resolv.conf per i dettagli.

Il programma resolvconf

Il programma resolvconf (opzionale su un sistema Debian) tiene traccia delle informazioni di sistema sugli nameserver attualmente disponibili, non va confuso con il file di configurazione resolv.conf, che purtroppo ha un nome quasi identico.

Il file di configurazione resolv.conf contiene informazioni sui nameserver che il sistema deve usare, tuttavia quando più programmi necessitano di modificare dinamicamente resolv.conf possono interferire tra loro e desincronizzare il file. Il programma resolvconf risolve questo problema agendo come intermediario fra i programmi che provvedono alle informazioni sui nameserver (come i client DHCP) e quelli che utilizzano le informazioni sui nameserver (i risolutori).

Quando resolvconf è installato correttamente, il file /etc/resolv.conf viene rimpiazzato da un collegamento simbolico a /etc/resolvconf/run/resolv.conf e il risolutore usa invece il file di configurazione /etc/resolvconf/run/resolv.conf generato dinamicamente.

Solitamente è necessario solo quando un sistema ha vari programmi che modificano dinamicamente le informazioni dei nameserver, mentre dove queste non cambiano frequentemente, la configurazione con il file resolv.conf è sufficiente.

Non modificare a mano il file resolv.conf se resolvconf è installato, in quanto verrà modificato dai programmi nel sistema, se serve definire i nameserver manualmente (come per un'interfaccia statica) si aggiunga una riga simile al file /etc/network/interfaces:

dns-nameservers 12.34.56.78 12.34.56.79

Posizionare la riga rientrata all'interno di un blocco iface, per esempio subito dopo la riga gateway; inserire gli indirizzi IP dei nameserver dopo dns-nameservers tutti su una sola riga separati da spazi. Non dimenticare la "s" alla fine di dns-nameservers.

Il programma resolvconf è un'aggiunta a Debian piuttosto recente e molti vecchi programmi devono essere aggiornati o riconfigurati per funzionare correttamente. Si veda /usr/share/doc/resolvconf/README per eventuali problemi, ha molte informazioni su come accordare gli altri programmi a resolvconf.

Configurazione DNS per NetworkManager

NetworkManager scavalca le impostazioni DHCP, riscrivendo resolv.conf anche se si è configurato il DNS in /etc/dhcp/dhclient.conf, facendo sì, ad esempio, che il DNS cerchi prima nel dominio locale, il che può comportare l'attesa del timeout prima che la risoluzione DNS continui e causando tempi lunghi di risoluzione DNS. Si può avere un'idea di come NetworkManager pensa dovrebbero essere le impostazioni eseguendo nm-tool dalla riga di comando.

Si può configurare queste impostazioni usando una GUI, avviando l'editor nm-connection-editor che attualmente (13.11.23) non si trova nel menu Strumenti di Sistema → Amministrazione, ma piuttosto deve essere avviato a mano dalla riga di comando. Dopo l'avvio:

  1. Scegliere una connessione (nella scheda Via cavo o in quella Senza fili) e cliccare su Modifica.
  2. Fare clic sulla schede delle impostazioni per IPv4
  3. Scegliere "Solo indirizzi automatici (DHCP)' invece di semplicemente 'Automatici (DHCP)'.
  4. Inserire i server DNS nel campo “Server DNS”, separati da spazi (es. 208.67.222.222 per OpenDNS).
  5. Cliccare su “Applica.”

NetworkManager salva queste impostazioni in /etc/NetworkManager/system-connections/name-of-connection. Esempio /etc/NetworkManager/system-connections/Connessione_cablata_1 :

[802-3-ethernet]
duplex=full
mac-address=XX:XX:XX:XX:XX:XX

[connection]
id=Connessione_cablata_1
uuid=xxx-xxxxxx-xxxxxx-xxxxxx-xxx
type=802-3-ethernet
timestamp=1385213042

[ipv6]
method=auto

[ipv4]
method=auto
dns=208.67.222.222;
ignore-auto-dns=true

Se si esegue nuovamente nm-tool si dovrebbe vedere che NetworkManager ora sa come deve risolvere il DNS.

Configurare i client DHCP

Impostare server DNS aggiuntivi

Esempio: dhclient3 usa /etc/dhcp/dhclient.conf, la configurazione voluta è:

supersede domain-name-servers 12.34.56.78, 12.34.56.79;

o magari

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

Impostare domini di ricerca aggiuntivi

Per aggiungere domini di ricerca per VPN o reti virtuali locali:

append domain-name " virt vpn";

Notare lo spazio iniziale dato che la stringa viene aggiunta in modo letterale alla fine del dominio di ricerca fornito da altre configurazioni.

Per i dettagli vedere la pagina di manuale di dhclient.conf(5)

Uso di bridge

L'uso di bridge mette più interfacce sullo stesso segmento di rete. È molto comune quando si connette un server a più switch per l'alta disponibilità o con la virtualizzazione. In quest'ultimo caso viene solitamente usato per creare un bridge nell'host (es. dom0) e mettere le interfacce virtuali degli ospiti (domU) nel bridge.

Esempio: connettere un server a 2 switch (via eth0 e eth1) definendo il bridge 0 e dando al server un indirizzo IP in questa sottorete:

auto br0
iface br0 inet static
        address 10.10.0.15/24
        gateway 10.10.0.1
        bridge_ports eth0 eth1
        up /usr/sbin/brctl stp br0 on

Se un server è connesso a più switch, solitamente è necessario eseguire il protocollo STP (Spanning Tree Protocol) per evitare cicli. Perciò si deve attivare l'STP usando un comando "up", come mostrato sopra.

Esempio: configurazione bridge senza configurazione di indirizzo IP (usare "manual" invece di "static") per "inoltrare" un'interfaccia ad una VM ospite. (La configurazione statica del bridge contiene solo un'unica interfaccia fisica. L'interfaccia virtuale verrà aggiunta al bridge quando viene avviata la VM.)

auto br1
iface br1 inet manual
        bridge_ports eth4
        up /usr/sbin/brctl setageing br1 0
        up /usr/sbin/brctl stp br1 off

Nota bene: Il bridge Linux supporta solo STP, non RSTP (Rapid Spanning Tree). Perciò supporta solo i vecchi costi STP, non i nuovi costi RSTP (vedere Spanning_Tree_Protocol). Questo va di solito bene con gli switch Cisco ma, ad esempio, gli switch Juniper usano i costi RSTP e perciò questo può portare ad un calcolo diverso dell'albero di spanning e a problemi di cicli. Ciò può essere risolto impostando i costi a mano, sullo switch o sul servert. Impostare i costi sullo switch è preferibile poiché Linux torna ai costi predefiniti ogni volta che un'interfaccia viene disattivata/attivata.

Bridge senza switch

In modo predefinito il bridge Linux agisce come uno switch. Ciò significa che ricorda gli indirizzi MAC dietro una porta switch e, se l'indirizzo MAC è conosciuto, i pacchetti dati o inoltra solamente alla porta corrispondente, altrimenti usa il broadcast.

In alcune configurazioni ciò non va bene. Per esempio, se il bridge connette 2 interfacce trunk e gli stessi indirizzi MAC possono essere visti da entrambe le interfacce, a seconda della VLAN. Dato che il bridge Linux non gestisce le VLAN (tabelle di indirizzi MAC dedicate per ogni VLAN), in tali configurazioni è necessario disabilitare l'apprendimento degli indirizzi MAC e mettere il bridge in una modalità "bridge" reale con:

        up /sbin/brctl setageing br0 0
        up /sbin/brctl stp br0 off

Come usare vlan (dot1q, 802.1q, trunk) in Etch e Lenny

Configurazione manuale

modprobe 8021q

apt install vlan

vconfig add eth0 222    # 222 è il numero vlan
ifconfig eth0.222 up
ifconfig eth0.222 mtu 1496    #opzionale se la scheda di rete non supporta MTU 1504B
ifconfig eth0.222 10.10.10.1 netmask 255.255.255.0

Configurazione di rete con script init

Nel file /etc/modules aggiungere la riga:

8021q

Alla sezione iface di /etc/network/interfaces aggiungere il parametro:

        vlan-raw-device eth0

Il nome dell'interfaccia dovrebbe essere il nome grezzo dell'interfaccia (lo stesso specificato da vlan-raw-device), seguito da un punto, poi dall'ID VLAN, come ad esempio: eth0.100. Oppure può essere "vlan" seguito dall'ID VLAN, ad esempio: vlan100. In entrambi i casi l'ID VLAN compare alla fine e questo è l'unico posto in cui è configurato. Esempio:

Nota bene: se si assegna all'interfaccia VLAN un nome ethX.YYY, allora non è necessario specificare il vlan-raw-device, dato che il device raw può essere ottenuto a partire dal nome dell'interfaccia.

Es:

auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1/24
        vlan-raw-device eth0

Bridge e VLAN

Se si creano interfacce VLAN solo per metterle in un bridge, non è necessario definire le interfacce VLAN a mano. Basta configurare il bridge e l'interfaccia VLAN verra creata automaticamente quando viene creato il bridge, ad esempio:

auto br1
iface br1 inet manual
        bridge_ports eth0.99 eth1.99
        up /usr/sbin/brctl stp br1 on

Avvertenze quando si usa il bridging e vlan

#/etc/network/interfaces
auto eth0 bri0
iface eth0 inet static
        address 192.168.1.1/24
iface eth0.110 inet manual
        vlan-raw-device eth0
iface bri0 inet static
        address 192.168.110.1/24
        bridge_ports eth0.110
        bridge_stp on
        bridge_maxwait 10

Se si utilizza una configurazione VLAN bridge, che è probabilmente utile per il networking in ambienti di virtualizzazione, aver cura di collegare a un dispositivo fisico sottostante solo un dispositivo bridge oppure dispositivi VLAN, come mostrato sopra. Se si collega l'interfaccia fisica (eth0) a un bridge (es. bri1) mentre si usa la stessa interfaccia fisica su VLAN apparentemente diverse, tutti i pacchetti rimarranno marcati (kernel più recente del 2.6.37 e più vecchio del 3.2).

Come creare un collegamento con link aggregation con vlan (da Etch a Stretch)

NetworkConfiguration/debian_bonding.png

NetworkConfiguration/debian_bonding.dia

Come impostare una configurazione di rete Debian per uno dei server qui sopra con bonding con backup attivo con 3 vlan {vlan10,vlan20,vlan30} senza SPOF e senza vlan nativa.

aptitude install vlan ifenslave-2.6

Configurazione di rete

Esempio di configurazione di uno switch Cisco:

interface GigabitEthernet1/2
 description eth1
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport mode trunk
 no ip address
 no cdp enable
 spanning-tree portfast trunk

bonding con backup attivo

Creare il file /etc/modprobe.d/bonding.conf contenente:

alias bond0 bonding
options bonding mode=active-backup miimon=100 downdelay=200 updelay=200 primary=eth1

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
        up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12/24
        vlan-raw-device bond0
        gateway 10.10.0.1
        dns-search hup.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12/24
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12/24
        vlan-raw-device bond0

Come impostare il valore di MTU (Max Transfer Unit / dimensione del pacchetto) con VLAN su un'interfaccia con bonding

MTU deve essere configurato sull'interfaccia di bonding, e sulle interfacce slave dopo che la reimpostazione della configurazione è stata applicata alle interfacce di bonding. Ciò viene fatto usando una riga post-up nella configurazione dell'interfaccia di bonding.

auto bond0
iface bond0 inet manual
        up ifconfig lacptrunk0 0.0.0.0 up
        slaves eth0 eth1
# bond-mode 4 = 802.3ad
        bond-mode 4
        bond-miimon 100
        bond-downdelay 200
        bond-updelay 200
        bond-lacp-rate 1
        bond-xmit-hash-policy layer2+3
        post-up ifconfig eth0 mtu 9000 && ifconfig eth1 mtu 9000 && ifconfig bond0 mtu 9000

#i device vlan useranno l'MTU impostato sul device bond0
auto vlan101
iface vlan101 inet static

        address 10.101.60.123/24
        gateway 10.155.60.1
        vlan-raw-device bond0

auto vlan151
iface vlan151 inet static

        address 192.168.1.1/24
        vlan-raw-device bond0

Indirizzi IP multipli su un'interfaccia

Gli alias di interfaccia permettono alla stessa interfaccia di rete di avere più indirizzi IP; ciò è utile se si ha bisogno di avere più di un server visibile su internet. Si noti che gli host virtuali possono gestire più server Apache con un solo IP; Apache risponde al nome di dominio fornito dal client nell'intestazione HTTP. In altre situazioni è necessario un IP esterno per ogni server che utilizza la stessa porta.

Metodo datato

Questo esempio in /etc/network/interfaces assegna tre indirizzi IP a eth0.

# the loopback interface
auto lo
iface lo inet loopback

#
auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
    address 192.168.1.43/24

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 192.168.1.44/24

Un alias di interfaccia non deve avere "gateway" o "dns-nameservers". È consentita l'assegnazione IP dinamica.

Il concetto di interfacce con alias o virtuali è stato introdotto da ifconfig. Questi tipi di interfacce virtuali hanno nomi nella forma interfaccia:numero e ifconfig le tratta in modo molto simile alle interfacce reali.

Oggigiorno ifupdown usa l'utilità ip dal pacchetto iproute2 invece di ifconfig. L'utilità ip più nuova non usa lo stesso concetto di alias o interfacce virtuali. Tuttavia permette di assegnare nomi arbitrari alle interfacce (sono chiamati etichette). ifupdown usa questa funzionalità per gestire le interfacce con gli alias quando si usa ip.

Metodo iproute2

ifupdown permette inoltre di specificare più interfacce ripetendo sezioni iface con lo stesso nome di interfaccia. La differenza chiave rispetto al metodo descritto sopra è che queste sezioni vengono trattate da ifupdown come un'unica interfaccia, perciò l'utente può aggiungerle o rimuoverle singolarmente. Tuttavia i comandi up/down, così come gli script, vengono chiamati per ogni sezione come avveniva prima.

Notare tuttavia che questo metodo è pericoloso! Per alcune combinazioni di driver e hardware può a volte fallire l'attivazione del collegamento se non viene assegnata un'etichetta alle interfacce alias. (Comportamento visto in Debian Wheezy e Jessie con RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 01) e auto-negoziazione di 10/full. Nella cronologia di questa pagina esiste un avvertimento simile da un altro autore.)

Questo testo per /etc/network/interfaces assegna tre indirizzi IP a eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43/24

iface eth0 inet static
    address 192.168.1.44/24

# e' anche possibile aggiungere indirizzi IP da diverse sottoreti
iface eth0 inet static
    address 10.10.10.14/24

Approccio manuale:

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1
    up ip addr add 192.168.1.43/24 dev $IFACE label $IFACE:0
    down ip addr del 192.168.1.43/24 dev $IFACE label $IFACE:0
    up ip addr add 192.168.1.44/24 dev $IFACE label $IFACE:1
    down ip addr del 192.168.1.44/24 dev $IFACE label $IFACE:1
    up ip addr add 10.10.10.14/24 dev $IFACE label $IFACE:2
    down ip addr del 10.10.10.14/24 dev $IFACE label $IFACE:2

Bonding + bridging + vlan + fakebridge funzionante su jessie

Configurazione di rete con Link Aggregation (attivo) + bridge e fakebridge per uso con macchine virtuali (tipicamente su un hypervisor KVM)

Prerequisiti

Installare i pacchetti 'ifenslave, vlan, bridge-utils'

Aggiungere ai moduli caricati '/etc/modules' i seguenti:

loop
bonding
mii
8021q

Configurazione di esempio

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#INTERFACCE FISICHE
auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto eth2
iface eth2 inet manual

#BONDING e VLAN
auto bond0
iface bond0 inet manual
   bond-mode 4
   bond-miimon 100
   bond-lacp-rate fast
   bond-slaves eth0 eth1

auto bond0.75
iface bond0.75 inet manual
   vlan-raw-device bond0

auto bond0.139
iface bond0.139 inet manual
   vlan-raw-device bond0

auto bond0.283
iface bond0.283 inet manual
   vlan-raw-device bond0

auto bond0.287
iface bond0.287 inet manual
   vlan-raw-device bond0

#BRIDGES
auto br0
iface br0 inet static
   address 192.9.200.55
   netmask 255.255.255.0
   gateway 192.9.200.180
   bridge_ports bond0
   bridge_stp off
   bridge_fd 0

auto br75
iface br75 inet static
   address 10.11.16.22
   netmask 255.255.248.0
   gateway 10.11.16.1
   bridge_ports bond0.75
   bridge_stp off
   bridge_fd 0          # no forwarding delay
   bridge_waitport 0    # no delay before a port becomes available

auto br139
iface br139 inet static
   address 10.11.33.239
   netmask 255.255.224.0
   gateway 10.11.32.1
   bridge_ports bond0.139
   bridge_stp off
   bridge_fd 0

#FAKEBRIDGES
auto br283
iface br283 inet manual
   bridge_ports bond0.283
   bridge_stp off
   bridge_fd 0

auto br287
iface br287 inet manual
   bridge_ports bond0.287
   bridge_stp off
   bridge_fd 0

A questo punto potrò assegnare le diverse vlan alle macchine virtuali guest che ospiterò sull'hypervisor KVM, utilizzando come "shared device name" della rete i vari bridge e fakebridge definiti nel file di configurazione

Ho definito 'fakebridge' dei normali bridge ma attivati in modalità manuale e senza indirizzo di rete assegnato (ad esempio per assegnare ai vari guest VLAN su cui l'hypervisor non ha indirizzi, come adesempio vlan segregate)

A titolo di esempio incollo anche la configurazione funzionante del portchannel sullo switch Cathalyst Cisco in uso.

!
interface Port-channel5
 description KVMx4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
!
...
!
interface GigabitEthernet3/0/3
 description x4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 5 mode active
!
!
interface GigabitEthernet3/0/4
 description x4150
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,75,139,283,287
 switchport mode trunk
 no cdp enable
 channel-protocol lacp
 channel-group 5 mode active
!

!


CategoryNetwork CategorySystemAdministration