Konfiguracja i weryfikacja OSPF w Sophos Firewall
OSPF automatycznie wymienia trasy IPv4 między routerami. Jest to przydatne, gdy wiele lokalizacji, redundantne ścieżki lub często zmieniające się sieci trudno już utrzymywać za pomocą tras statycznych.
W poniższym przykładzie dwie zapory Sophos Firewall tworzą sąsiedztwo OSPF przez dedykowaną sieć tranzytową. Na końcu Neighbor osiąga stan Full, Firewall A zna sieć LAN za Firewall B i odwrotnie. Dla IPv6 protokół OSPFv3 konfiguruje się oddzielnie.
⚠️ OSPF powinien działać wyłącznie na przeznaczonych do tego, zaufanych interfejsach tranzytowych lub VPN. Nie należy ogólnie zezwalać na
Dynamic Routingw strefach LAN i WAN ani włączaćRedistribute connected, dopóki nie wiadomo, które bezpośrednio połączone sieci zostaną w ten sposób rozgłoszone.
OSPF w siedmiu krokach
Proste połączenie OSPFv2 wymaga następujących czynności:
- Przypisać adresy interfejsom tranzytowym i sprawdzić bezpośrednią łączność IP.
- W
Administration > Device accesszezwolić na Dynamic Routing dla osobnej strefy tranzytowej albo przez ściśle ograniczony wyjątek Local Service ACL Exception. - W
Routing > OSPFwprowadzić na każdej zaporze unikalny Router ID. - Utworzyć Area
0.0.0.0typu Normal. - W sekcji Networks przypisać lokalną sieć tranzytową do Area
0.0.0.0. - Rozgłaszać wyłącznie rzeczywiście potrzebne trasy LAN.
- W
Routing > Information > OSPFsprawdzić stan Neighbor Full i nauczoną trasę.
Network OSPF nie jest zdalną siecią docelową. Ten wpis aktywuje OSPF na lokalnych interfejsach, których adres IP należy do wskazanej sieci. Zdalna sieć LAN pojawi się dopiero wtedy, gdy druga strona rozgłosi ją przez OSPF.
O czym decyduje OSPF na zaporze
OSPF jest wewnętrznym protokołem routingu typu link-state. Sąsiednie routery wymieniają informacje o osiągalnych sieciach i ścieżkach, budują z nich Link-State Database i obliczają najkorzystniejszą trasę. Mniejszy Cost ma pierwszeństwo przed większym.
OSPF realizuje zatem inne zadanie niż reguły firewall i SD-WAN:
- OSPF uczy się i rozprowadza sieci docelowe we własnej domenie routingu.
- Reguła firewall nadal decyduje, czy ruch użytkowy może przechodzić między odpowiednimi strefami i sieciami.
- NAT w razie potrzeby zmienia adresy, ale nie jest częścią OSPF.
- SD-WAN Route może dodatkowo podejmować decyzje na podstawie źródła, usługi, aplikacji lub jakości łącza.
Sophos Firewall klasyfikuje dynamicznie nauczone trasy w globalnym Route Precedence w kategorii static. Gdy trasa OSPF konkuruje z trasą SD-WAN lub VPN, Route Precedence również musi odpowiadać oczekiwanemu przepływowi pakietów. W samym OSPF o wyborze decyduje natomiast Cost.
OSPFv2 obsługuje IPv4. OSPFv3 pełni tę samą funkcję dla IPv6, ale w Sophos Firewall jest konfigurowany oddzielnie.
Planowanie przykładowej topologii
Przykładowe wartości przedstawiają dwie lokalizacje:
- Firewall A: Router ID
192.0.2.10, tranzytowy adres IP198.51.100.1/30, lokalna sieć LAN10.10.10.0/24 - Firewall B: Router ID
192.0.2.20, tranzytowy adres IP198.51.100.2/30, lokalna sieć LAN10.20.20.0/24 - Sieć tranzytowa:
198.51.100.0/30 - OSPF Area:
0.0.0.0
Adresy 192.0.2.0/24 i 198.51.100.0/24 są sieciami dokumentacyjnymi. Należy zastąpić je rzeczywistymi wartościami używanymi w danym środowisku.
Router ID wygląda jak adres IPv4, ale nie musi być przypisany do żadnego interfejsu. Najważniejsze, aby był unikalny w domenie OSPF i pozostawał trwale stabilny. Wartość 0.0.0.0 jest niedozwolona. Bez własnej wartości SFOS używa najwyższego adresu interfejsu; świadomie wybrany Router ID zapobiega nieoczekiwanej zmianie tożsamości po zmianie interfejsu.
W tej prostej konfiguracji wystarcza Backbone Area 0.0.0.0. Wiele Areas ma sens dopiero wtedy, gdy większa domena routingu ma być celowo podzielona i agregowana. Każda dodatkowa Area wymaga połączenia z Backbone Area.
Bezpieczne przygotowanie OSPF
Przed konfiguracją OSPF należy spełnić następujące warunki:
- Zapora działa w Gateway Mode. OSPF nie jest dostępny w Transparent Mode.
- Oba tranzytowe adresy IP znajdują się w tej samej sieci i osiągają się bezpośrednio, na przykład przez Ping.
- Udokumentowano interfejs, maskę podsieci, MTU i strefę.
- Router ID, Area, Authentication oraz Hello interval i Dead interval są uzgodnione po obu stronach.
- Dostępne są kopia zapasowa konfiguracji i niezależny dostęp administracyjny.
- Dla obu sieci LAN zaplanowano odpowiednie reguły firewall i trasy zwrotne.
Dedykowany tranzytowy VLAN i osobna strefa tranzytowa ułatwiają zabezpieczenie. Podstawy opisuje artykuł Konfiguracja stref i interfejsów Sophos Firewall.
Selektywne zezwolenie na Dynamic Routing
W Administration > Device access opcja Dynamic Routing jest domyślnie wyłączona dla wszystkich stref. W przykładzie usługa jest włączana tylko we własnej strefie tranzytowej, do której przypisano sieć 198.51.100.0/30.
Pole wyboru w macierzy Device Access dotyczy całej strefy, a nie tylko jednego interfejsu. Jeżeli interfejs tranzytowy współdzieli strefę z innymi sieciami, należy zamiast tego ograniczyć usługę do sieci tranzytowej i przewidzianych peerów za pomocą Local Service ACL Exception.
To zezwolenie dotyczy pakietów OSPF kierowanych do samej zapory. Nie wymaga ono zwykłej reguły firewall. Rzeczywisty ruch danych między 10.10.10.0/24 i 10.20.20.0/24 nadal wymaga odpowiednich reguł firewall IPv4. Różnicę między usługami lokalnymi a ruchem przekazywanym wyjaśnia artykuł Zabezpieczanie Device Access w Sophos Firewall.
Konfiguracja OSPFv2 w WebAdmin
Poniższe kroki wykonuje się na obu zaporach. Różnią się tylko Router ID, tranzytowy adres IP i lokalna sieć LAN.
1. Ustawienia globalne
W Routing > OSPF ustawia się wartości globalne:
- Router ID: na Firewall A
192.0.2.10, na Firewall B192.0.2.20 - Default metric: pozostawić
20, chyba że świadomie określono inną wartość dla tras redystrybuowanych - ABR type: dla nowej standardowej konfiguracji
Standard - Auto-cost reference-bandwidth: pozostawić wartość domyślną
100000 Mbps, dopóki planowanie kosztów nie wymaga innej wspólnej wartości odniesienia - Default-information originate:
Never, dopóki zapora nie ma wyraźnie rozgłaszać Default Route do wszystkich sąsiadów OSPF - Redistribute connected, static, RIP i BGP: początkowo pozostawić wyłączone
Następnie zastosować konfigurację globalną przyciskiem Apply.
Default Metric dotyczy tras przejmowanych do OSPF z innych źródeł. Interface Cost decyduje natomiast o wyborze ścieżki w topologii OSPF. Mniejszy Cost wygrywa.
Opcji Default-information originate: Always nie wolno używać jako szybkiego przełącznika failoveru internetowego. Zapora rozgłaszałaby wtedy Default Route nawet bez własnej trasy domyślnej. Regular rozgłasza ją tylko wtedy, gdy Default Route jest dostępna w tablicy routingu.
2. Utworzenie Backbone Area
W sekcji Areas kliknąć Add i ustawić:
- Area:
0.0.0.0 - Type:
Normal
Dla Area wybrać Authentication Type Text lub MD5. Jeżeli peer obsługuje MD5, należy preferować tę opcję zamiast zwykłego tekstu. Odpowiednie Key ID i klucz wprowadza się później na interfejsie tranzytowym. MD5 uwierzytelnia pakiety OSPF, ale nie szyfruje wymienianych informacji o routingu.
Następnie zapisać Area przyciskiem Save.
3. Dodanie sieci tranzytowej
W sekcji Networks kliknąć Add:
- IPv4/Netmask:
198.51.100.0/30 - Area:
0.0.0.0
Na Firewall A adres 198.51.100.1 pasuje do tego Network, a na Firewall B adres 198.51.100.2. Dzięki temu OSPF działa na odpowiednich interfejsach tranzytowych i obie zapory mogą utworzyć sąsiedztwo.
Zapisać wpis Network przyciskiem Save.
Lokalnej sieci LAN nie wprowadza się po prostu jako rzekomej zdalnej sieci docelowej. Dodatkowy wpis Network może ją wprawdzie rozgłosić bez sąsiada, ale jednocześnie aktywuje OSPF na odpowiadającym jej interfejsie LAN. Jeśli nie przewidziano tam routerów OSPF, selektywna Redistribution dokładniej ogranicza rozgłaszanie.
4. Świadome nadpisywanie wartości interfejsu
W sekcji Override interface configuration można wybrać interfejs tranzytowy. Wartości domyślne są odpowiednie dla wielu połączeń Ethernet:
- Hello interval: 10 sekund
- Dead interval: 40 sekund
- Retransmit interval: 5 sekund
- Transmit delay: 1 sekunda
- Interface cost:
Auto - Router priority: 1
Hello i Dead muszą być identyczne na wszystkich routerach w segmencie. Retransmit Interval i Transmit Delay ustawia się lokalnie. Cost i Router Priority mogą się celowo różnić: Cost określa preferowaną ścieżkę danych, natomiast Priority w sieciach rozgłoszeniowych wpływa na wybór DR i BDR. Priority 0 wyklucza interfejs z tego wyboru.
Przy takim samym Priority decyduje Router ID, ale trwający wybór DR nie jest preemptive. Ręcznie ustawiony Cost jest przydatny, gdy spośród wielu ścieżek jedna ma być preferowana. Przy Auto SFOS oblicza Cost na podstawie globalnego Reference Bandwidth i skonfigurowanej prędkości interfejsu. Po zmianie prędkości łącza w Network > Interfaces OSPF zastosuje nowy Auto-Cost dopiero po ponownym uruchomieniu zapory.
W przypadku uwierzytelniania MD5 w Area wybiera się Authentication Type MD5. Następnie na interfejsie tranzytowym po obu stronach wprowadza się takie samo Key ID od 0 do 255 i ten sam klucz.
Zmodyfikowane wartości interfejsu zapisuje się przyciskiem Save.
5. Rozgłaszanie tylko potrzebnych sieci LAN
W przykładzie Firewall A musi rozgłaszać 10.10.10.0/24, a Firewall B 10.20.20.0/24. Służą do tego dwie zasadniczo różne metody:
- OSPF Network aktywuje OSPF na odpowiednim lokalnym interfejsie. Jest to właściwe rozwiązanie, gdy inne routery OSPF mają tam tworzyć sąsiedztwo.
- Redistribution przejmuje do OSPF trasę z innego źródła routingu. Pozwala to rozgłosić bezpośrednio połączoną sieć LAN bez konieczności tworzenia tam sąsiedztwa OSPF.
W przykładzie obie sieci LAN są selektywnie redystrybuowane, ponieważ na ich interfejsach żadne inne routery OSPF nie mają tworzyć sąsiedztwa.
Opcja Redistribute connected w WebAdmin przejmuje wszystkie bezpośrednio połączone sieci. Na zaporze produkcyjnej mogą to być również sieci WAN, management, DMZ, VPN i inne sieci VLAN. Dlatego nie wolno bez sprawdzenia włączać tego pola.
Do selektywnego rozgłaszania można użyć w CLI OSPF listy ACL z Route Map. Po zalogowaniu przez SSH ścieżka prowadzi przez 3. Route Configuration > 1. Configure Unicast Routing > 2. Configure OSPF. Poniższy przykład na Firewall A zezwala tylko na lokalną sieć LAN 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
Na Firewall B należy użyć w access-list wartości 10.20.20.0/24. ACL zawiera domyślnie końcową regułę Deny, dlatego Connected Routes, na które nie zezwolono jawnie, nie są redystrybuowane przez tę Route Map.
Przy tym rozwiązaniu globalna opcja WebAdmin Redistribute connected pozostaje wyłączona. Po późniejszych zmianach globalnej konfiguracji OSPF należy ponownie sprawdzić show running-config, ponieważ WebAdmin może usunąć sprzeczne, zaawansowane ustawienia CLI.
Również Redistribute static wymaga świadomego filtrowania. Obejmuje między innymi statyczne trasy Blackhole, które w przeciwnym razie mogłyby zostać przypadkowo przekazane sąsiednim routerom.
Kontrola i testy odbiorcze OSPF
Samo sąsiedztwo nie dowodzi jeszcze, że oczekiwana sieć LAN jest osiągalna. Testy odbiorcze przebiegają zatem od warstwy OSPF aż do rzeczywistego przepływu pakietów.
- W
Routing > Information > OSPF > Neighborspeer musi pojawić się ze swoim Router ID. Stan Full oznacza, że odpowiednie informacje Link-State zostały w pełni wymienione. - W sekcji Routes Firewall A musi widzieć
10.20.20.0/24przez198.51.100.2. Firewall B oczekuje10.10.10.0/24przez198.51.100.1. - W sekcji Interface sprawdza się Area, Router ID, Cost, Timer, Network Type i MTU.
- W
Diagnostics > Tools > Route lookupsprawdza się konkretny cel, na przykład10.20.20.10na Firewall A. - Następnie należy przetestować rzeczywiste połączenie między hostem z jednej i drugiej sieci LAN. Log Viewer i Packet Capture muszą pokazać oczekiwaną regułę firewall, interfejs tranzytowy i ruch powrotny.
W dwóch ostatnich krokach pomaga artykuł Testowanie reguły Sophos Firewall za pomocą Log Viewer i Packet Capture.
Dodatkową weryfikację przez SSH można przeprowadzić, wybierając ścieżkę 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
Te polecenia pozwalają wspólnie udokumentować używane interfejsy, Link-State Database, stan sąsiadów oraz trasy obliczone przez OSPF.
W Advanced Shell dodatkowy kontekst zapewniają logi OSPF i kernela. Dostęp prowadzi przez 5. Device Management > 3. Advanced Shell:
cd /log
tail -f ospfd.log
Bieżący podgląd kończy się za pomocą Ctrl+C. Następnie można sprawdzić drugi log:
tail -f zebra.log
ospfd.log pokazuje zdarzenia OSPF. zebra.log pomaga sprawdzić, czy dynamicznie nauczona trasa została przekazana do kernela. Aby nie śledzić pliku na żywo, można użyć na przykład less /log/ospfd.log. Artykuł Usługi i pliki dzienników Sophos Firewall przypisuje kolejne pliki do odpowiednich usług.
Systematyczne zawężanie błędów
Brak Neighbor
Najpierw sprawdzić bezpośrednią osiągalność tranzytowych adresów IP. Następnie interfejs tranzytowy musi być up, OSPF Network musi odpowiadać lokalnemu adresowi IP interfejsu, a Dynamic Routing musi być włączony we właściwej strefie. Area, maska podsieci, Authentication Type, Key ID, klucz, Hello i Dead muszą być zgodne po obu stronach. Zduplikowane Router ID również uniemożliwiają prawidłowe zestawienie.
Neighbor pozostaje w stanie Init lub 2-Way
Init oznacza, że pakiety Hello docierają, ale komunikacja nie została jeszcze potwierdzona w obu kierunkach. Pierwszymi punktami kontroli są wtedy Device Access, asymetryczne filtry, przypisanie interfejsu i trasa zwrotna.
Stan 2-Way jest normalny w sieci rozgłoszeniowej między dwoma routerami, jeśli żaden z nich nie jest DR ani BDR. W przykładzie z dokładnie dwoma routerami OSPF i Priority 1 uczestnicy stają się DR i BDR, dlatego ich sąsiedztwo powinno osiągnąć stan Full. Jeśli pozostaje w stanie 2-Way, należy sprawdzić Router Priority, Network Type i peer.
Neighbor pozostaje w stanie ExStart, Exchange lub Loading
W tych stanach synchronizacja Link-State Database rozpoczęła się, ale nie została ukończona. Częstymi przyczynami są różne wartości MTU, niezgodne Network Types, zduplikowane Router ID lub niestabilne połączenia. W Routing > Information > OSPF > Interface do porównania dostępne są MTU, MTU Mismatch Detection, Network Type i Timer.
Neighbor ma stan Full, ale brakuje zdalnej sieci LAN
Sąsiedztwo działa, ale sieć LAN nie jest rozgłaszana lub filtr nie pozwala jej przejść. Na zaporze wysyłającej Connected Route, ACL, Route Map i redistribute connected route-map muszą odpowiadać oczekiwanemu prefiksowi. Polecenie show running-config pokazuje zapisaną konfigurację OSPF.
Jeżeli zamiast tego w WebAdmin włączono Redistribute connected, trzeba sprawdzić nie tylko brakującą sieć LAN, lecz także pełną listę wszystkich rozgłaszanych w ten sposób sieci.
Trasa jest obecna, ale ruch nie działa
OSPF wykonał swoje zadanie, gdy trasa z prawidłowym Next Hop jest obecna. Dalsze błędy najczęściej dotyczą reguły firewall, NAT, Route Precedence, trasy zwrotnej lub systemu docelowego. W normalnie routowanych sieciach między lokalizacjami SNAT zazwyczaj nie jest potrzebny, ponieważ obie zapory powinny znać sieci LAN przez OSPF.
OSPF przez route-based IPsec
OSPF może działać również przez interfejs XFRM tunelu route-based Site-to-Site IPsec. W tunelu Any-to-Any lub Dual-Stack interfejsom XFRM po obu stronach przypisuje się unikalne adresy IP z tej samej sieci tranzytowej. Przy konkretnych Traffic Selectors takie adresowanie nie jest możliwe.
Dla tego wariantu obowiązują dodatkowo następujące zasady:
- W
Administration > Device accesszezwala się naDynamic Routingdla strefy VPN. - Sieć tranzytową XFRM dodaje się jako OSPF Network.
- Ruch użytkowy wymaga odpowiednich reguł firewall IPv4 lub IPv6 dla strefy VPN.
- Hello, Dead, Authentication i MTU muszą odpowiadać ustawieniom peera.
- Wyświetlany OSPF Network Type należy porównać po obu stronach. Różnica może uniemożliwić utworzenie sąsiedztwa; jeżeli nie można jej skorygować w WebAdmin, trzeba dostosować peer albo skontaktować się z Sophos Support.
Zielony tunel IPsec i OSPF Neighbor w stanie Full to dwa oddzielne punkty kontroli. Dopiero nauczona trasa i rzeczywisty przepływ pakietów potwierdzają całą konfigurację.
W klastrze HA po failoverze OSPF może ponownie dokonać konwergencji. Dlatego należy przetestować planowany failover, a następnie na aktywnym Node sprawdzić, czy Neighbor, trasy oraz ospfd.log i zebra.log ponownie pokazują oczekiwany stan.
OSPFv3 dla IPv6
W Routing > OSPFv3 routing IPv6 konfiguruje się niezależnie od OSPFv2. Router ID pozostaje przy tym unikalną wartością zapisaną w formacie IPv4.
W odróżnieniu od OSPFv2 nie wprowadza się najpierw Network. W sekcji Interfaces wybiera się interfejs obsługujący IPv6 i przypisuje go do Area. W prostej konfiguracji również tutaj używa się Area 0.0.0.0. Hello i Dead muszą być zgodne w segmencie; Cost, Retransmit, Transmit Delay i Router Priority ustawia się odpowiednio do własnej topologii. SFOS obsługuje obecnie tylko jedną instancję OSPFv3 na interfejs ze standardowym Instance ID 0.
Sophos Firewall nie obsługuje obecnie Authentication dla OSPFv3. Wymiana powinna zatem odbywać się wyłącznie przez zaufane lub już zabezpieczone łącza. Istniejąca konfiguracja OSPFv2 nie rozgłasza sieci IPv6, a ruch użytkowy IPv6 wymaga własnych reguł firewall IPv6.
W WebAdmin można redystrybuować do OSPFv3 bezpośrednio połączone sieci IPv6 i trasy BGP IPv6. Również tutaj Redistribute connected obejmuje wszystkie bezpośrednio połączone sieci IPv6 i dlatego nie powinno być włączane ogólnie.
Testy odbiorcze przeprowadza się w Routing > Information > OSPFv3; w przypadku błędów ospf6d.log zapewnia kontekst właściwy dla protokołu.
Bezpieczne wycofanie zmiany
Przed usunięciem OSPF dla każdej nauczonej sieci docelowej musi istnieć alternatywna ścieżka albo zaplanowane okno serwisowe. Najpierw usuwa się Redistribution lokalnej sieci LAN, następnie tranzytowy Network, a na końcu wyłącza Dynamic Routing dla strefy. Potem należy ponownie sprawdzić Route Lookup, tablicę routingu i dostęp administracyjny.
Jeżeli wycofywany jest tylko błędny Cost, Timer lub filtr, zawsze należy zmienić tylko to jedno ustawienie. Dzięki temu pozostaje jasne, czy problem dotyczył sąsiedztwa OSPF, rozgłaszania tras, czy dopiero ruchu użytkowego.