Vai al contenuto
Avanet

Configurare e verificare OSPF su Sophos Firewall

OSPF scambia automaticamente le rotte IPv4 tra router. È utile quando più sedi, percorsi ridondanti o reti che cambiano frequentemente diventano troppo difficili da gestire mediante rotte statiche.

Nell’esempio seguente, due Sophos Firewall stabiliscono un’adiacenza OSPF tramite una rete di transito dedicata. Al termine, il vicino è nello stato Full, Firewall A conosce la LAN dietro Firewall B e viceversa. OSPFv3 viene configurato separatamente per IPv6.

⚠️ OSPF deve essere eseguito solo su interfacce di transito o VPN dedicate e attendibili. Non abilitare Dynamic Routing indiscriminatamente per le zone LAN e WAN e non attivare Redistribute connected prima di avere chiarito quali reti direttamente connesse verranno annunciate.

OSPF in sette passaggi

Per una semplice connessione OSPFv2 sono necessari i passaggi seguenti:

  1. Assegnare gli indirizzi alle interfacce di transito e verificare la raggiungibilità IP diretta.
  2. In Administration > Device access, consentire Dynamic Routing per una zona di transito dedicata o tramite una Local Service ACL Exception strettamente limitata.
  3. In Routing > OSPF, inserire un Router ID univoco su ciascun firewall.
  4. Creare Area 0.0.0.0 come Normal.
  5. In Networks, assegnare la rete di transito locale ad Area 0.0.0.0.
  6. Annunciare solo le rotte LAN effettivamente necessarie.
  7. In Routing > Information > OSPF, verificare lo stato Full del vicino e la rotta appresa.

Un Network OSPF non è la rete di destinazione remota. La voce attiva OSPF sulle interfacce locali il cui indirizzo IP appartiene a questa rete. La LAN remota compare solo quando il peer la annuncia tramite OSPF.

Che cosa decide OSPF sul firewall

OSPF è un protocollo di routing interno link-state. I router adiacenti scambiano informazioni sulle reti e sui percorsi raggiungibili, costruiscono una Link-State Database e calcolano il percorso con il costo minore. Un Cost più basso è preferito a uno più alto.

OSPF svolge quindi un compito diverso dalle regole firewall e da SD-WAN:

  • OSPF apprende e distribuisce le reti di destinazione all’interno del proprio dominio di routing.
  • Una regola firewall continua a decidere se il traffico dati può passare tra le zone e le reti coinvolte.
  • NAT modifica gli indirizzi quando necessario, ma non fa parte di OSPF.
  • Una SD-WAN Route può inoltre decidere in base a origine, servizio, applicazione o qualità della connessione.

Sophos Firewall assegna le rotte apprese dinamicamente alla categoria static nella Route Precedence globale. Se una rotta OSPF compete con una rotta SD-WAN o VPN, anche la Route Precedence deve quindi corrispondere al flusso di pacchetti desiderato. All’interno di OSPF, invece, decide il Cost.

OSPFv2 gestisce IPv4. OSPFv3 svolge lo stesso compito per IPv6, ma viene configurato separatamente su Sophos Firewall.

Pianificare la topologia di esempio

I valori dell’esempio rappresentano due sedi:

  • Firewall A: Router ID 192.0.2.10, IP di transito 198.51.100.1/30, LAN locale 10.10.10.0/24
  • Firewall B: Router ID 192.0.2.20, IP di transito 198.51.100.2/30, LAN locale 10.20.20.0/24
  • Rete di transito: 198.51.100.0/30
  • OSPF Area: 0.0.0.0

Gli indirizzi 192.0.2.0/24 e 198.51.100.0/24 sono reti riservate alla documentazione. Devono essere sostituiti con i valori reali dell’ambiente.

Il Router ID ha l’aspetto di un indirizzo IPv4, ma non deve essere assegnato a un’interfaccia. È fondamentale che sia univoco e rimanga stabilmente invariato all’interno del dominio OSPF. 0.0.0.0 non è consentito. Se non viene impostato un valore specifico, SFOS utilizza l’indirizzo di interfaccia più alto; scegliere consapevolmente un Router ID impedisce che l’identità cambi inaspettatamente dopo una modifica dell’interfaccia.

Per questa struttura semplice è sufficiente Backbone Area 0.0.0.0. Più Areas diventano utili solo quando si desidera suddividere e aggregare consapevolmente un dominio di routing più esteso. Ogni Area aggiuntiva richiede una connessione a Backbone Area.

Preparare OSPF in sicurezza

Prima di configurare OSPF devono essere soddisfatti i requisiti seguenti:

  • Il firewall funziona in Gateway Mode. OSPF non è disponibile in Transparent Mode.
  • I due IP di transito appartengono alla stessa rete e sono direttamente raggiungibili, ad esempio tramite Ping.
  • Interfaccia, subnet mask, MTU e zona sono documentate.
  • Router ID, Area, autenticazione, Hello interval e Dead interval sono coordinati su entrambi i lati.
  • Sono disponibili un backup della configurazione e un accesso di gestione indipendente.
  • Per le due LAN sono state pianificate regole firewall e rotte di ritorno adeguate.

Una VLAN di transito e una zona di transito dedicate facilitano la protezione. Configurare zone e interfacce su Sophos Firewall ne illustra le basi.

Abilitare Dynamic Routing in modo selettivo

In Administration > Device access, Dynamic Routing è disabilitato per impostazione predefinita per tutte le zone. Nell’esempio, il servizio viene attivato solo nella zona di transito dedicata alla quale è associata la rete 198.51.100.0/30.

La casella nella matrice Device Access si applica all’intera zona e non solo a una singola interfaccia. Se l’interfaccia di transito condivide la zona con altre reti, una Local Service ACL Exception deve invece limitare il servizio alla rete di transito e ai peer previsti.

Questa autorizzazione riguarda i pacchetti OSPF destinati al firewall stesso. Non è necessaria una normale regola firewall. Il traffico effettivo tra 10.10.10.0/24 e 10.20.20.0/24 richiede comunque regole firewall IPv4 adeguate. Proteggere Device Access su Sophos Firewall spiega la distinzione tra servizi locali e traffico inoltrato.

Configurare OSPFv2 in WebAdmin

I passaggi seguenti vengono eseguiti su entrambi i firewall. Cambiano solo Router ID, IP di transito e LAN locale.

1. Impostare i valori globali

In Routing > OSPF si definiscono i valori globali:

  • Router ID: 192.0.2.10 su Firewall A, 192.0.2.20 su Firewall B
  • Default metric: mantenere 20, a meno che non sia previsto un valore specifico per le rotte redistribuite
  • ABR type: Standard per una nuova struttura standard
  • Auto-cost reference-bandwidth: mantenere il valore predefinito 100000 Mbps finché la pianificazione dei costi non richiede un altro valore di riferimento comune
  • Default-information originate: Never, finché il firewall non deve distribuire espressamente una Default Route a tutti i vicini OSPF
  • Redistribute connected, static, RIP e BGP: lasciare inizialmente disabilitati

Applicare quindi la configurazione globale con Apply.

Default Metric riguarda le rotte importate in OSPF da altre origini. Interface Cost determina invece la scelta del percorso all’interno della topologia OSPF. Vince il Cost più basso.

Default-information originate: Always non deve essere utilizzato come rapido interruttore per il failover Internet. In questo modo il firewall annuncerebbe una Default Route anche quando non ne possiede una. Regular la annuncia solo quando nella tabella di routing è presente una Default Route.

2. Creare Backbone Area

Nella sezione Areas, fare clic su Add e impostare i valori seguenti:

  • Area: 0.0.0.0
  • Type: Normal

Per Area si seleziona Authentication Type Text o MD5. Se il peer supporta MD5, è preferibile alla variante in chiaro. La Key ID associata e la chiave vengono inserite successivamente sull’interfaccia di transito. MD5 autentica i pacchetti OSPF, ma non cifra le informazioni di routing scambiate.

Salvare quindi Area con Save.

3. Aggiungere la rete di transito

Nella sezione Networks, fare clic su Add:

  • IPv4/Netmask: 198.51.100.0/30
  • Area: 0.0.0.0

Su Firewall A, l’indirizzo 198.51.100.1 corrisponde a questo Network; su Firewall B corrisponde 198.51.100.2. OSPF viene così eseguito sulle rispettive interfacce di transito e i due firewall possono stabilire un’adiacenza.

Salvare la voce Network con Save.

La LAN locale non deve essere semplicemente inserita come presunta destinazione remota. Un’ulteriore voce Network può annunciarla anche senza un vicino, ma attiva contemporaneamente OSPF sull’interfaccia LAN corrispondente. Se su tale interfaccia non sono previsti router OSPF, una Redistribution selettiva delimita l’annuncio in modo più preciso.

4. Sovrascrivere i valori dell’interfaccia solo consapevolmente

In Override interface configuration è possibile selezionare l’interfaccia di transito. I valori predefiniti sono adatti a molte connessioni Ethernet:

  • Hello interval: 10 secondi
  • Dead interval: 40 secondi
  • Retransmit interval: 5 secondi
  • Transmit delay: 1 secondo
  • Interface cost: Auto
  • Router priority: 1

Hello e Dead devono essere identici su tutti i router del segmento. Retransmit Interval e Transmit Delay vengono impostati localmente. Cost e Router Priority possono differire intenzionalmente: Cost determina il percorso dati preferito, mentre Priority influisce sull’elezione di DR e BDR nelle reti broadcast. Una Priority pari a 0 esclude l’interfaccia da questa elezione.

A parità di Priority decide il Router ID, ma un’elezione DR in corso non è preemptive. Un Cost impostato manualmente è utile quando si vuole preferire uno dei diversi percorsi. Con Auto, SFOS calcola il Cost dalla Reference Bandwidth globale e dalla velocità dell’interfaccia configurata. Se la velocità del collegamento viene modificata in Network > Interfaces, OSPF applica il nuovo Auto Cost solo dopo il riavvio del firewall.

Per l’autenticazione MD5, selezionare Authentication Type MD5 in Area. Inserire quindi la stessa Key ID, compresa tra 0 e 255, e la stessa chiave sull’interfaccia di transito di entrambi i lati.

Applicare i valori dell’interfaccia modificati con Save.

5. Annunciare solo le LAN necessarie

Nell’esempio, Firewall A deve annunciare 10.10.10.0/24 e Firewall B 10.20.20.0/24. Esistono due metodi sostanzialmente diversi:

  • Un OSPF Network attiva OSPF sull’interfaccia locale corrispondente. È adatto quando altri router OSPF devono stabilire un’adiacenza su tale interfaccia.
  • Redistribution importa in OSPF una rotta proveniente da un’altra origine di routing. In questo modo è possibile annunciare una LAN direttamente connessa senza richiedere un’adiacenza OSPF sull’interfaccia.

Nell’esempio, le due LAN vengono redistribuite in modo selettivo perché sulle loro interfacce non devono essere stabilite adiacenze con altri router OSPF.

L’opzione Redistribute connected di WebAdmin importa tutte le reti direttamente connesse. Su un firewall di produzione possono essere incluse anche reti WAN, di gestione, DMZ, VPN e altre VLAN. La casella non deve quindi essere attivata senza averne verificato le conseguenze.

Per un annuncio selettivo è possibile utilizzare nella CLI OSPF una ACL con una Route Map. Dopo l’accesso SSH, seguire 3. Route Configuration > 1. Configure Unicast Routing > 2. Configure OSPF. L’esempio seguente su Firewall A consente solo la LAN locale 10.10.10.0/24:

enable
configure terminal
access-list ospf-connected-out permit 10.10.10.0/24
route-map ospf-connected-filter permit 10
match ip address ospf-connected-out
exit
router ospf
redistribute connected route-map ospf-connected-filter
exit
write
show running-config

Su Firewall B, utilizzare invece 10.20.20.0/24 in access-list. La ACL contiene una regola Deny finale implicita; le Connected Routes non espressamente consentite non vengono quindi redistribuite tramite questa Route Map.

Con questa procedura, l’opzione globale Redistribute connected rimane disabilitata in WebAdmin. Dopo successive modifiche alla configurazione OSPF globale, verificare nuovamente show running-config, poiché WebAdmin può rimuovere le impostazioni CLI avanzate in conflitto.

Anche Redistribute static richiede un filtro consapevole. Include, tra le altre, le rotte Blackhole statiche, che altrimenti potrebbero essere propagate involontariamente ai router adiacenti.

Verificare e collaudare OSPF

La sola adiacenza non dimostra che la LAN desiderata sia raggiungibile. Il collaudo procede quindi dal livello OSPF fino al flusso effettivo dei pacchetti.

  1. In Routing > Information > OSPF > Neighbors, il peer deve comparire con il relativo Router ID. Full indica che le informazioni link-state rilevanti sono state scambiate completamente.
  2. In Routes, Firewall A deve vedere 10.20.20.0/24 tramite 198.51.100.2. Firewall B deve vedere 10.10.10.0/24 tramite 198.51.100.1.
  3. In Interface, verificare Area, Router ID, Cost, timer, Network Type e MTU.
  4. In Diagnostics > Tools > Route lookup, verificare una destinazione specifica, ad esempio 10.20.20.10 su Firewall A.
  5. Testare quindi una connessione reale tra un host di ciascuna LAN. Log Viewer e Packet Capture devono mostrare la regola firewall prevista, l’interfaccia di transito e il traffico di ritorno.

Per gli ultimi due passaggi è utile Testare una regola Sophos Firewall con Log Viewer e Packet Capture.

Per un controllo aggiuntivo tramite SSH, il percorso CLI è 3. Route Configuration > 1. Configure Unicast Routing > 2. Configure OSPF:

enable
show ip ospf interface
show ip ospf database
show ip ospf neighbor
show ip ospf route

Questi comandi consentono di documentare insieme le interfacce coinvolte, la Link-State Database, lo stato dei vicini e le rotte calcolate da OSPF.

Nell’Advanced Shell, i log OSPF e del kernel forniscono un contesto aggiuntivo. L’accesso avviene tramite 5. Device Management > 3. Advanced Shell:

cd /log
tail -f ospfd.log

Interrompere l’output continuo con Ctrl+C. Quindi verificare il secondo log:

tail -f zebra.log

ospfd.log mostra gli eventi OSPF. zebra.log aiuta a verificare se una rotta appresa dinamicamente è stata inserita nel kernel. Per non seguire il log in tempo reale, utilizzare ad esempio less /log/ospfd.log. File di servizio e di log di Sophos Firewall associa gli altri file ai servizi responsabili.

Individuare gli errori in modo sistematico

Non compare alcun vicino

Verificare innanzitutto la raggiungibilità diretta degli IP di transito. L’interfaccia di transito deve quindi essere attiva, OSPF Network deve corrispondere all’IP dell’interfaccia locale e Dynamic Routing deve essere abilitato nella zona corretta. Area, subnet mask, Authentication Type, Key ID, chiave, Hello e Dead devono coincidere su entrambi i lati. Anche Router ID duplicati impediscono di stabilire correttamente un’adiacenza.

Il vicino rimane in Init o 2-Way

Init indica che i pacchetti Hello vengono ricevuti, ma la comunicazione non è ancora stata confermata in entrambe le direzioni. Device Access, filtri asimmetrici, assegnazione delle interfacce e percorso di ritorno sono i primi elementi da verificare.

2-Way è normale tra due router in una rete broadcast quando nessuno dei due è DR o BDR. Nell’esempio, con esattamente due router OSPF e Priority 1, i due partecipanti diventano DR e BDR; la loro adiacenza dovrebbe quindi raggiungere lo stato Full. Se rimane in 2-Way, verificare Router Priority, Network Type e il peer.

Il vicino rimane in ExStart, Exchange o Loading

In questi stati, la sincronizzazione della Link-State Database è iniziata ma non si completa. Le cause più comuni sono valori MTU differenti, Network Types non compatibili, Router ID duplicati o connessioni instabili. In Routing > Information > OSPF > Interface sono disponibili MTU, MTU Mismatch Detection, Network Type e timer per il confronto.

Il vicino è Full, ma manca la LAN remota

In questo caso l’adiacenza funziona, ma la LAN non viene annunciata oppure il filtro non la consente. Sul firewall che invia l’annuncio, Connected Route, ACL, Route Map e redistribute connected route-map devono corrispondere al prefisso desiderato. show running-config mostra la configurazione OSPF salvata.

Se invece è stata attivata l’opzione Redistribute connected in WebAdmin, occorre verificare non solo la LAN mancante, ma l’elenco completo di tutte le reti annunciate di conseguenza.

La rotta è presente, ma il traffico non funziona

OSPF ha svolto il proprio compito quando è presente la rotta con il Next Hop corretto. In seguito, gli errori riguardano in genere la regola firewall, NAT, Route Precedence, il percorso di ritorno o il sistema di destinazione. Nelle normali reti instradate tra sedi, generalmente non è necessario SNAT, poiché entrambi i firewall devono conoscere le LAN tramite OSPF.

OSPF tramite IPsec route-based

OSPF può essere eseguito anche su un’interfaccia XFRM di un tunnel IPsec Site-to-Site route-based. In un tunnel Any-to-Any o Dual-Stack, assegnare alle interfacce XFRM sui due lati indirizzi IP univoci appartenenti alla stessa rete di transito. Questa assegnazione non è possibile con Traffic Selectors specifici.

Per questa variante si applicano inoltre i requisiti seguenti:

  • Dynamic Routing viene consentito per la zona VPN in Administration > Device access.
  • La rete di transito XFRM viene inserita come OSPF Network.
  • Il traffico dati richiede regole firewall IPv4 o IPv6 adeguate per la zona VPN.
  • Hello, Dead, autenticazione e MTU devono coincidere con il peer.
  • Confrontare l’OSPF Network Type visualizzato sui due lati. Una differenza può impedire la formazione dell’adiacenza; se non è possibile correggerla in WebAdmin, occorre adeguare il peer o coinvolgere Sophos Support.

Un tunnel IPsec verde e un vicino OSPF nello stato Full sono due punti di verifica distinti. Solo la rotta appresa e un flusso di pacchetti reale confermano l’intera configurazione.

In un cluster HA, OSPF può riconvergere dopo un failover. È quindi opportuno testare un failover pianificato e verificare successivamente sul Node attivo che il vicino, le rotte, ospfd.log e zebra.log siano tornati allo stato previsto.

OSPFv3 per IPv6

In Routing > OSPFv3, il routing IPv6 viene configurato indipendentemente da OSPFv2. Il Router ID rimane un valore univoco in formato IPv4.

A differenza di OSPFv2, non si inserisce prima un Network. In Interfaces, selezionare l’interfaccia compatibile con IPv6 e assegnarla a un’Area. Per una struttura semplice si utilizza anche in questo caso Area 0.0.0.0. Hello e Dead devono coincidere sul segmento; Cost, Retransmit, Transmit Delay e Router Priority vengono impostati in base alla propria topologia. Attualmente, SFOS supporta una sola istanza OSPFv3 per interfaccia con Instance ID predefinito 0.

Attualmente Sophos Firewall non supporta l’autenticazione per OSPFv3. Lo scambio deve quindi avvenire solo tramite collegamenti attendibili o già protetti. Una configurazione OSPFv2 esistente non annuncia reti IPv6 e per il traffico dati IPv6 sono necessarie regole firewall IPv6 dedicate.

In WebAdmin è possibile redistribuire in OSPFv3 le reti IPv6 direttamente connesse e le rotte BGP IPv6. Anche in questo caso, Redistribute connected comprende tutte le reti IPv6 direttamente connesse e non deve quindi essere attivato indiscriminatamente.

Il collaudo viene eseguito in Routing > Information > OSPFv3; in caso di errori, ospf6d.log fornisce il contesto specifico del protocollo.

Annullare la modifica in sicurezza

Prima di rimuovere OSPF, deve essere disponibile un percorso alternativo o una finestra di manutenzione pianificata per ogni rete di destinazione appresa. Rimuovere prima la Redistribution della LAN locale, poi il Network di transito e infine disattivare Dynamic Routing per la zona. Verificare quindi nuovamente Route Lookup, la tabella di routing e l’accesso di gestione.

Se si annulla solo un Cost, un timer o un filtro errato, modificare sempre una sola impostazione alla volta. In questo modo rimane possibile determinare se è stata interessata l’adiacenza OSPF, l’annuncio delle rotte o soltanto il traffico dati.