Administracja IT i DevOps

Jak połączyliśmy oddziały firmy logistycznej z AWS za pomocą Unifi i BGP – Case Study SparkSome

Jak połączyliśmy oddziały firmy logistycznej z AWS za pomocą Unifi i BGP – Case Study SparkSome
17 września 2024|7 minut czytania
Spis treści

Stworzenie systemu sieciowego łączącego oddziały firmy z chmurą AWS

Kilka lat temu stanęliśmy przed jednym z naszych czołowych wyzwań. Jeden z operatorów logistycznych potrzebował stworzenia systemu sieciowego, który połączyłby wszystkie oddziały firmy i zapewnił im dostęp do zasobów w chmurze AWS. Klient nie chciał wymieniać swoich urządzeń (cała sieć bazowała na Unifi), w tym Unifi Security Gateway, mimo że ich możliwości były ograniczone względem potrzeb projektu. To był moment, w którym rozpoczęła się nasza techniczna przygoda.

Technik IT zarządzający infrastrukturą sieciową w serwerowni za pomocą tabletu – konfiguracja systemu sieciowego łączącego oddziały firmy z chmurą AWS.

Zarządzanie infrastrukturą sieciową w serwerowni – projekt wymagał połączenia istniejących urządzeń Unifi Security Gateway z chmurą AWS bez wymiany sprzętu. Kluczem była konfiguracja via CLI i wdrożenie dynamicznego routingu BGP.

Diagnoza problemu – wymagania vs ograniczenia sprzętu

Zanim przystąpiliśmy do wdrożenia, przeprowadziliśmy szczegółową analizę wymagań i ograniczeń. Sytuacja wyglądała następująco:

Wymagania klienta

  • Połączenie wielu oddziałów firmy logistycznej w jedną sieć rozległą (WAN)
  • Bezpieczny dostęp do zasobów w AWS – systemy logistyczne, bazy danych, aplikacje biznesowe
  • Automatyczny failover – w przypadku awarii jednego łącza, ruch powinien automatycznie przełączyć się na trasę zapasową
  • Brak wymiany sprzętu – klient chciał zachować istniejącą infrastrukturę opartą na ekosystemie Ubiquiti Unifi
  • Minimalne przestoje – firma działała w trybie ciągłym (24/7), więc wdrożenie musiało odbywać się etapowo

Ograniczenia Unifi Security Gateway

Ubiquiti Unifi Security Gateway (USG) to urządzenie zaprojektowane przede wszystkim do małych i średnich sieci. Standardowy interfejs graficzny (UniFi Controller) oferuje:

  • Zarządzanie sieciami LAN/VLAN
  • Firewall z regułami dostępu
  • Proste tunele VPN (IPsec site-to-site, L2TP)
  • Podstawowy routing statyczny

Czego nie oferuje w GUI:

  • Dynamiczny routing (BGP, OSPF)
  • Zaawansowane polityki routingu (policy-based routing)
  • Redundantne tunele VPN z automatycznym failoverem
  • Natywna integracja z AWS VPN Gateway

To właśnie te brakujące funkcje były kluczowe dla naszego projektu.

Architektura rozwiązania

Warstwa 1: Tunele VPN IPsec do AWS

Każdy oddział firmy został połączony z chmurą AWS poprzez tunel IPsec Site-to-Site VPN. AWS Virtual Private Gateway (VGW) wymaga konfiguracji dwóch tuneli na każde połączenie – tunelu podstawowego i zapasowego. Daje to wbudowaną redundancję na poziomie chmury.

Konfiguracja tuneli na USG wymagała bezpośredniego dostępu do CLI urządzenia i edycji pliku konfiguracyjnego config.gateway.json, który nadpisuje ustawienia interfejsu graficznego:

{
  "interfaces": {
    "vti": {
      "vti0": {
        "address": "169.254.10.2/30",
        "description": "AWS-Tunnel-Primary",
        "mtu": "1436"
      },
      "vti1": {
        "address": "169.254.11.2/30",
        "description": "AWS-Tunnel-Secondary",
        "mtu": "1436"
      }
    }
  }
}

Interfejsy VTI (Virtual Tunnel Interface) były kluczowe, ponieważ umożliwiają routowanie ruchu przez tunel VPN za pomocą tablicy routingu, zamiast statycznego mapowania ruchu na podstawie list ACL. To z kolei otworzyło drogę do wdrożenia protokołu BGP.

Warstwa 2: Dynamiczny routing BGP

Kluczowym krokiem było wdrożenie protokołu BGP (Border Gateway Protocol), który dynamicznie zarządzał trasami sieciowymi, automatycznie przełączając połączenia w przypadku awarii jednego z tuneli VPN.

AWS narzuca dwa podejścia do routingu:

  • iBGP (internal BGP) – wymaga synchronizacji tras między routerami, ale oferuje automatyczny failover
  • Routing statyczny – prostszy w początkowej konfiguracji, ale staje się trudny w zarządzaniu przy rozbudowanej infrastrukturze i nie oferuje automatycznego przełączania

Wybraliśmy BGP, ponieważ przy wielu oddziałach i dwóch tunelach na oddział, statyczny routing wymagałby ręcznej reconfiguracji przy każdej zmianie topologii.

Konfiguracja BGP na Unifi Security Gateway (fragment config.gateway.json):

{
  "protocols": {
    "bgp": {
      "65001": {
        "neighbor": {
          "169.254.10.1": {
            "remote-as": "64512",
            "description": "AWS-Primary",
            "soft-reconfiguration": {
              "inbound": "''"
            }
          },
          "169.254.11.1": {
            "remote-as": "64512",
            "description": "AWS-Secondary",
            "soft-reconfiguration": {
              "inbound": "''"
            }
          }
        },
        "network": {
          "10.10.0.0/16": "''"
        }
      }
    }
  }
}

Gdzie:

  • AS 65001 – numer systemu autonomicznego (ASN) przypisany do sieci klienta
  • AS 64512 – ASN po stronie AWS (domyślny dla VGW)
  • network 10.10.0.0/16 – podsieci ogłaszane do AWS przez BGP
  • soft-reconfiguration inbound – pozwala na dynamiczną zmianę polityk bez resetowania sesji BGP

Warstwa 3: Mechanizm failoveru

Dzięki BGP, gdy jeden z tuneli VPN przestawał odpowiadać (np. z powodu awarii łącza internetowego w danym oddziale), sieć automatycznie przełączała ruch na tunel zapasowy. Proces ten trwał zazwyczaj kilkanaście sekund – czas wymagany do wygaśnięcia sesji BGP (BGP hold timer) i przeliczenia tras.

Dla skrócenia czasu failoveru skonfigurowaliśmy:

  • BGP Keepalive: 10 sekund (domyślnie 60)
  • BGP Hold Timer: 30 sekund (domyślnie 180)
  • Dead Peer Detection (DPD) na tunelach IPsec: interwał 10 sekund, timeout po 3 próbach

To pozwoliło zredukować czas przełączania do około 30–40 sekund, co w przypadku systemów logistycznych było akceptowalne.

Wyzwania, które napotkaliśmy

Projekt nie był pozbawiony trudności. Poniżej opisujemy najważniejsze problemy i sposób ich rozwiązania:

Problem 1: Nadpisywanie konfiguracji przez UniFi Controller

Unifi Controller ma tendencję do nadpisywania konfiguracji CLI przy każdej zmianie w GUI lub aktualizacji firmware. Rozwiązanie polegało na umieszczeniu konfiguracji w pliku config.gateway.json w odpowiedniej ścieżce kontrolera, co zapewniało trwałość ustawień BGP i VTI po każdym restarcie.

Problem 2: MTU i fragmentacja pakietów

Tunele IPsec dodają nagłówek enkapsulacji, co zmniejsza efektywne MTU. Standardowe MTU 1500 bajtów po enkapsulacji IPsec (ESP + UDP encapsulation) spada do ~1436 bajtów. Nieodpowiednie MTU powodowało „czarne dziury” – pakiety zbyt duże do przesłania przez tunel były cicho odrzucane zamiast fragmentowane.

Rozwiązanie:

  • Ustawienie MTU na interfejsach VTI na 1436
  • Konfiguracja MSS clamping (TCP MSS adjust) na firewallu

Problem 3: Asymetryczny routing

Przy dwóch tunelach VPN i BGP istniało ryzyko asymetrycznego routingu – ruch wychodzący szedł jednym tunelem, a powracający innym. W przypadku firewalli z inspekcją stanu (stateful inspection), taki ruch mógł być odrzucany.

Rozwiązanie: konfiguracja BGP z preferencjami tras (AS-path prepending) na tunelu zapasowym, tak aby tunel primary był zawsze preferowany przy normalnej pracy.

Wyniki wdrożenia

Parametr Przed wdrożeniem Po wdrożeniu
Łączność z AWS Brak (dostęp przez internet publiczny) Dedykowane tunele VPN IPsec
Redundancja Brak – single point of failure Automatyczny failover BGP (2 tunele/oddział)
Czas przełączenia przy awarii Brak automatycznego przełączania ~30–40 sekund
Bezpieczeństwo transmisji Nieszyfrowane lub VPN ręczny IPsec z AES-256 + SHA-256
Zarządzanie routingiem Brak / statyczny Dynamiczny (BGP)
Wymiana sprzętu Brak – wykorzystanie istniejących USG
Koszty inwestycji sprzętowej 0 PLN (brak nowego sprzętu)

Czego nauczył nas ten projekt?

1. Nie zawsze trzeba wymieniać sprzęt

Unifi Security Gateway to budżetowe urządzenie, ale pod maską działa EdgeOS (fork Vyatta/VyOS), który oferuje zaawansowane funkcje sieciowe dostępne przez CLI. Wiele firm zbyt pochopnie decyduje się na wymianę sprzętu, nie wykorzystując pełnego potencjału istniejącej infrastruktury.

2. CLI to potężne narzędzie

Interfejsy graficzne urządzeń sieciowych celowo ukrywają zaawansowane funkcje, aby uprościć obsługę. Jednak w rękach doświadczonego inżyniera, dostęp do CLI otwiera możliwości porównywalne ze sprzętem klasy enterprise.

3. BGP sprawdza się nawet w małych sieciach

BGP jest powszechnie kojarzony z dużymi operatorami ISP i centrami danych. Ten projekt udowodnił, że dynamiczny routing ma sens również w sieciach firm średniej wielkości – szczególnie, gdy łączymy się z chmurą publiczną, która wymaga BGP do pełnej funkcjonalności failoveru.

4. Dokumentacja jest kluczowa

Cała konfiguracja CLI musiała być precyzyjnie udokumentowana, ponieważ zmiany w UniFi Controller mogły ją nadpisać. Stworzenie szczegółowej dokumentacji pozwoliło na powtarzalność konfiguracji dla nowych oddziałów i ułatwiło późniejsze utrzymanie.

Alternatywy – co wybralibyśmy dziś?

Gdybyśmy mieli realizować ten sam projekt w 2026 roku, rozważylibyśmy również:

Rozwiązanie Zalety Wady Koszt
Unifi USG + BGP (CLI) – nasze rozwiązanie Brak wymiany sprzętu, niski koszt Ograniczona skalowalność, ryzyko nadpisania konfiguracji Niski
WireGuard na dedykowanym Linux Szybszy, nowocześniejszy VPN, pełna kontrola Wymaga dodatkowego serwera w każdym oddziale Średni
Dedykowany VPN (OpenVPN) Elastyczność, otwarte źródło Wolniejszy od WireGuard/IPsec, wymaga serwera Średni
AWS Transit Gateway + SD-WAN Centralne zarządzanie, skalowalne Wysokie koszty AWS, wymaga wymiany routerów na SD-WAN Wysoki
Wymiana na MikroTik / pfSense Natywne BGP w GUI, profesjonalne funkcje Koszt nowego sprzętu, nauka nowej platformy Średni

Więcej o podejściu SparkSome do projektowania infrastruktury IT i dedykowanych rozwiązań VPN piszemy w powiązanych artykułach.

Powiązane tematy

FAQ – Projektowanie systemów sieciowych i VPN do AWS

O autorze

Tomasz Siroń, Board Member & Infrastructure Architect w SparkSome Venture

Tomasz Siroń

Board Member & Infrastructure Architect

W SparkSome odpowiadam za kierunek technologiczny, architekturę systemów oraz projekty infrastrukturalne dla klientów biznesowych. Specjalizuję się w systemach Linux, DevOps, Docker, Kubernetes, sieciach MikroTik, automatyzacji i bezpieczeństwie infrastruktury. Łączę technologie Open Source z elektroniką, IoT i radiokomunikacją, a praktyczne doświadczenie wykorzystuję również podczas autorskich szkoleń technicznych dla firm i uczelni.