Ubuntu 20.04 gestire instradamento di più gateway e interfacce da una singola VM
Con l’avvento di netplan è possibile gestire l’instradamento per sinagola interfaccia di rete in modo semplice.
Se ad esempio abbiamo una VM connessa a due lan separate con due schede rete e ovviamente due gateway dobbiamo gestire l’intradamento dei pacchetti, perchè notoriamente Linux instrada tutto sul gateway di default.
Per ovviare a questo problema è sufficiente modificare la configurazione di netplan.
Vediamo come farlo con pochi semplici passi:
- avere installato iproute2
1 |
apt install iproute2 |
2. modificare il file “sudo nano /etc/iproute2/rt_tables” inserendo le ultime due righe con dei numeri che definiscono le priorità
1 |
sudo nano /etc/iproute2/rt_tables |
inserire come ultime due righe:
1 2 |
800 800 801 801 |
3) modificare la conf. di netplan per le interfacce:
1 |
nano /etc/netplan/<your netplan con file>.yaml |
Ogni interfaccia ha un blocco di impostazioni in questo file. Alla fine di questo blocco, aggiungeremo le impostazioni per i criteri e le regole di routing per l’interfaccia.
Configuriamo la prima interfaccia di rete che ha i seguenti parametri (diciamo che è connessa con la lan1):
- nome: enp0s5
- ip address: 10.10.0.20
- network: 10.10.0.0/24
- gateway: 10.10.0.1
- macaddress: 54:45:42:51:12:09
Configuriamo la seconda interfaccia di rete che ha i seguenti parametri (diciamo che è connessa con la lan2):
- nome: enp1s6
- ip address: 192.168.10.30
- network: 192.168.10.0/24
- gateway: 192.168.10.1
- macaddress: 56:55:46:51:12:09
( per ottenere il mac address delle interfacce è sufficiente eseguire “ifconfig -a” )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
network: version: 2 ethernets: enp0s5: addresses: - 10.10.0.20/24 match: macaddress: 54:45:42:51:12:09 mtu: 1500 nameservers: addresses: - 8.8.8.8 - 1.1.1.1 - 8.8.4.4 search: [] set-name: enp0s5 routes: - to: 0.0.0.0/0 via: 10.10.0.1 table: 801 routing-policy: - from: 10.10.0.20 table: 801 priority: 200 enp1s6: addresses: - 192.168.10.30/24 gateway4: 192.168.10.1 match: macaddress: 56:55:46:51:12:09 mtu: 1500 nameservers: addresses: - 8.8.8.8 - 1.1.1.1 - 8.8.4.4 search: [] set-name: enp1s6 routes: - to: 0.0.0.0/0 via: 192.168.10.1 table: 800 routing-policy: - from: 10.10.0.20 table: 800 priority: 300 version 2 |
Con questa configurazione risulterà come instradamento predefinito quello relativo alla lan2 (enp1s6) perchè nella conf è specificato il gateway mentre nella conf enp0s5 è specificato solo l’intradamento per gli indirizzi della sua classe.
La stessa operazione la dovete eseguire per tutte le interfacce connesse alle varie lan della vostra infrastruttura. Ovviamente se ne avete più di due dovrete aggiungere più righe al file rt_tables.
Per provare se la configurazione è stata scritta correttamente utilizzeremo il comando “generate”
1 |
sudo netplan generate |
se non ritorna errori possiamo passare a rendere definitiva la configurazione:
1 |
sudo netplan apply |