Ricerca nel sito web

Serie RHCE: come impostare e testare il routing di rete statico - Parte 1


RHCE (Red Hat Certified Engineer) è una certificazione della società Red Hat, che fornisce un sistema operativo e un software open source alla comunità aziendale, oltre a formazione, supporto e servizi di consulenza per le aziende.

Questo RHCE (Red Hat Certified Engineer) è un esame basato sulle prestazioni (nome in codice EX300), che possiede competenze, conoscenze e abilità aggiuntive richiesto a un amministratore di sistema senior responsabile dei sistemi Red Hat Enterprise Linux (RHEL).

Importante: per ottenere la certificazione RHCE è necessaria la certificazione Red Hat Certified System Administrator (RHCSA).

Di seguito sono riportati gli obiettivi dell'esame basati sulla versione Red Hat Enterprise Linux 7 dell'esame, che verranno trattati in questa serie RHCE:

Per visualizzare le tariffe e registrarti per un esame nel tuo Paese, controlla la pagina della certificazione RHCE.

In questa Parte 1 della serie RHCE e nella successiva, presenteremo casi basilari, ma tipici, in cui i principi dell'instradamento statico, del filtraggio dei pacchetti e della traduzione degli indirizzi di rete vengono applicati in gioco.

Tieni presente che non li tratteremo in modo approfondito, ma piuttosto organizzeremo questi contenuti in modo tale che siano utili per muovere i primi passi e costruire da lì.

Routing statico in Red Hat Enterprise Linux 7

Una delle meraviglie delle reti moderne è l’ampia disponibilità di dispositivi in grado di connettere gruppi di computer, sia in numero relativamente piccolo e confinati in una singola stanza, sia in più macchine nello stesso edificio, città, paese o attraverso i continenti.

Tuttavia, per raggiungere questo obiettivo in qualsiasi situazione, i pacchetti di rete devono essere instradati o, in altre parole, il percorso che seguono dalla sorgente alla destinazione deve essere regolato in qualche modo.

Il routing statico è il processo di specifica di un percorso per i pacchetti di rete diverso da quello predefinito, fornito da un dispositivo di rete noto come gateway predefinito. Se non diversamente specificato tramite routing statico, i pacchetti di rete vengono indirizzati al gateway predefinito; con l'instradamento statico, altri percorsi vengono definiti in base a criteri predefiniti, come la destinazione del pacchetto.

Definiamo il seguente scenario per questo tutorial. Abbiamo un box Red Hat Enterprise Linux 7 che si connette al router #1 [192.168.0.1] per accedere a Internet e alle macchine in 192.168.0.0/24.

Un secondo router (router n. 2) ha due schede di interfaccia di rete: enp0s3 è anch'esso connesso al router n. 1 per accedere a Internet e comunicare con il box RHEL 7 e altre macchine nella stessa rete, mentre l'altro (enp0s8) viene utilizzato per concedere l'accesso alla rete 10.0.0.0/24 dove risiedono i servizi interni , come un server web e/o database.

Questo scenario è illustrato nel diagramma seguente:

In questo articolo ci concentreremo esclusivamente sulla configurazione della tabella di routing sul nostro box RHEL 7 per assicurarci che possa accedere sia a Internet tramite il router n. 1 sia alla rete interna tramite router n. 2.

In RHEL 7 utilizzerai il comando ip per configurare e mostrare i dispositivi e il routing utilizzando la riga di comando. Queste modifiche possono avere effetto immediato su un sistema in esecuzione ma poiché non sono persistenti dopo i riavvii, utilizzeremo i file ifcfg-enp0sX e route-enp0sX all'interno di /etc /sysconfig/network-scripts per salvare la nostra configurazione in modo permanente.

Per iniziare, stampiamo la nostra tabella di routing corrente:

ip route show

Dall'output sopra, possiamo vedere i seguenti fatti:

  1. L'indirizzo IP del gateway predefinito è 192.168.0.1 ed è possibile accedervi tramite la scheda NIC enp0s3.
  2. All'avvio, il sistema ha abilitato il percorso zeroconf a 169.254.0.0/16 (per ogni evenienza). In poche parole, se una macchina è impostata per ottenere un indirizzo IP tramite DHCP ma non riesce a farlo per qualche motivo, le viene automaticamente assegnato un indirizzo in questa rete. In conclusione, questo percorso ci consentirà di comunicare, anche tramite enp0s3, con altre macchine che non sono riuscite a ottenere un indirizzo IP da un server DHCP.
  3. Ultimo ma non meno importante, possiamo comunicare con altri box all'interno della rete 192.168.0.0/24 tramite enp0s3, il cui indirizzo IP è 192.168.0.18 .

Queste sono le attività tipiche che dovresti eseguire in un ambiente del genere. Se non diversamente specificato, le seguenti attività devono essere eseguite nel router n. 2:

Assicurati che tutte le schede NIC siano state installate correttamente:

ip link show

Se uno di essi è inattivo, ripristinalo:

ip link set dev enp0s8 up

e assegnargli un indirizzo IP nella rete 10.0.0.0/24:

ip addr add 10.0.0.17 dev enp0s8

Ops! Abbiamo commesso un errore nell'indirizzo IP. Dovremo rimuovere quello che abbiamo assegnato in precedenza e quindi aggiungere quello giusto (10.0.0.18):

ip addr del 10.0.0.17 dev enp0s8
ip addr add 10.0.0.18 dev enp0s8

Ora, tieni presente che puoi aggiungere un percorso a una rete di destinazione solo attraverso un gateway che è già raggiungibile. Per questo motivo, dobbiamo assegnare a enp0s3 un indirizzo IP compreso nell'intervallo 192.168.0.0/24 in modo che il nostro box RHEL 7 possa comunicare con esso:

ip addr add 192.168.0.19 dev enp0s3

Infine, dovremo abilitare l'inoltro dei pacchetti:

echo "1" > /proc/sys/net/ipv4/ip_forward

e fermare/disabilitare (solo per il momento – finché non tratteremo il filtraggio dei pacchetti nel prossimo articolo) il firewall:

systemctl stop firewalld
systemctl disable firewalld

Tornati nella nostra casella RHEL 7 (192.168.0.18), configuriamo un percorso da 10.0.0.0/24 attraverso 192.168.0.19 (enp0s3 nel router n. 2):

ip route add 10.0.0.0/24 via 192.168.0.19

Successivamente, la tabella di routing appare come segue:

ip route show

Allo stesso modo, aggiungi il percorso corrispondente nelle macchine che stai cercando di raggiungere in 10.0.0.0/24:

ip route add 192.168.0.0/24 via 10.0.0.18

Puoi verificare la connettività di base utilizzando il ping:

Nella casella RHEL 7, corri

ping -c 4 10.0.0.20

dove 10.0.0.20 è l'indirizzo IP di un server web nella rete 10.0.0.0/24.

Nel server web (10.0.0.20), esegui

ping -c 192.168.0.18

dove 192.168.0.18 è, come ricorderete, l'indirizzo IP della nostra macchina RHEL 7.

In alternativa, possiamo utilizzare tcpdump (potrebbe essere necessario installarlo con yum install tcpdump) per verificare la comunicazione bidirezionale su TCP tra il nostro box RHEL 7 e il server web su 10.0.0.20 .

Per fare ciò, avviamo la registrazione nella prima macchina con:

tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

e da un altro terminale nello stesso sistema portiamo telnet alla porta 80 nel server web (assumendo che Apache sia in ascolto su quella porta; altrimenti, indicare la porta giusta nel comando seguente):

telnet 10.0.0.20 80

Il registro tcpdump dovrebbe apparire come segue:

Dove la connessione è stata inizializzata correttamente, come possiamo vedere osservando la comunicazione bidirezionale tra il nostro box RHEL 7 (192.168.0.18) e il server web (10.0.0.20).

Ricorda che queste modifiche scompariranno al riavvio del sistema. Se vuoi renderli persistenti, dovrai modificare (o creare, se non esistono già) i seguenti file, negli stessi sistemi in cui abbiamo eseguito i comandi sopra.

Sebbene non sia strettamente necessario per il nostro caso di test, dovresti sapere che /etc/sysconfig/network contiene parametri di rete a livello di sistema. Un tipico /etc/sysconfig/network appare come segue:

Enable networking on this system?
NETWORKING=yes
Hostname. Should match the value in /etc/hostname
HOSTNAME=yourhostnamehere
Default gateway
GATEWAY=XXX.XXX.XXX.XXX
Device used to connect to default gateway. Replace X with the appropriate number.
GATEWAYDEV=enp0sX

Quando si tratta di impostare variabili e valori specifici per ciascuna scheda NIC (come abbiamo fatto per il router n. 2), dovrai modificare /etc/sysconfig/network-scripts/ifcfg-enp0s3 e /etc/sysconfig/network-scripts/ifcfg-enp0s8.

Seguendo il nostro caso,

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.0.19
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NAME=enp0s3
ONBOOT=yes

E

TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.0.0.18
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
NAME=enp0s8
ONBOOT=yes

rispettivamente per enp0s3 e enp0s8.

Per quanto riguarda il routing nel nostro computer client (192.168.0.18), dovremo modificare /etc/sysconfig/network-scripts/route-enp0s3:

10.0.0.0/24 via 192.168.0.19 dev enp0s3

Ora riavvia il tuo sistema e dovresti vedere quel percorso nella tua tabella.

Riepilogo

In questo articolo abbiamo trattato gli elementi essenziali del routing statico in Red Hat Enterprise Linux 7. Sebbene gli scenari possano variare, il caso qui presentato illustra i principi e le procedure richiesti per eseguire questo compito. Prima di concludere, vorrei suggerirvi di dare un'occhiata al capitolo 4 della sezione Proteggere e ottimizzare Linux nel sito del Linux Documentation Project per ulteriori dettagli sugli argomenti qui trattati.

Ebook gratuito su Proteggere e ottimizzare Linux: la soluzione di hacking (v.3.0): questo 800+ eBook contiene una raccolta completa di suggerimenti sulla sicurezza di Linux e su come utilizzarli in modo facile e sicuro per configurare applicazioni e servizi basati su Linux.

Scarica ora

Nel prossimo articolo parleremo di filtraggio dei pacchetti e traduzione degli indirizzi di rete per riassumere le competenze di base del networking necessarie per la certificazione RHCE.

Come sempre, non vediamo l'ora di sentire la tua opinione, quindi sentiti libero di lasciare domande, commenti e suggerimenti utilizzando il modulo sottostante.