· Tomasz Siroń · Technologia

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

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

1. Czym jest Unifi Security Gateway i do czego służy?

Unifi Security Gateway (USG) to router/firewall firmy Ubiquiti z ekosystemu UniFi. Służy do zarządzania siecią firmową – oferuje firewall, VPN, routing i integrację z UniFi Controller. Pod maską działa EdgeOS (oparty na Vyatta/Debian Linux), co daje zaawansowane możliwości przez CLI, niedostępne w interfejsie graficznym.

2. Co to jest BGP i dlaczego jest ważny dla połączeń z chmurą?

BGP (Border Gateway Protocol) to protokół dynamicznego routingu używany do wymiany informacji o trasach między systemami autonomicznymi (AS). W kontekście AWS, BGP pozwala na automatyczne przełączanie ruchu między tunelami VPN (failover) bez ręcznej interwencji. AWS VPN Gateway natywnie obsługuje BGP, co czyni go preferowanym protokołem routingu dla połączeń Site-to-Site.

3. Ile tuneli VPN wymaga AWS VPN Gateway?

AWS Virtual Private Gateway (VGW) tworzy automatycznie dwa tunele IPsec dla każdego połączenia VPN – tunel podstawowy i zapasowy. Oba tunele powinny być skonfigurowane po stronie klienta, aby zapewnić wysoką dostępność. AWS rozdziela tunele między różne urządzenia w swojej infrastrukturze, co chroni przed awariami po stronie chmury.

4. Czy mogę użyć routingu statycznego zamiast BGP z AWS?

Tak, AWS obsługuje routing statyczny jako alternatywę dla BGP. Jednak routing statyczny nie oferuje automatycznego failoveru – przy awarii tunelu musisz ręcznie przekierować ruch. Przy wielu oddziałach i dwóch tunelach na oddział, zarządzanie trasami statycznymi staje się szybko niepraktyczne. BGP jest zdecydowanie zalecany.

5. Co to jest MTU i dlaczego jest problematyczne w tunelach VPN?

MTU (Maximum Transmission Unit) to maksymalny rozmiar pakietu, który może być przesłany bez fragmentacji. Standardowe MTU Ethernet to 1500 bajtów. Tunele IPsec dodają nagłówki enkapsulacji (~64 bajty), co zmniejsza efektywne MTU do ~1436 bajtów. Pakiety większe niż MTU tunelu mogą być cicho odrzucane (tzw. „czarna dziura PMTUD"), powodując problemy z łącznością – strony się nie ładują, a ping działa.

6. Jak szybko następuje przełączenie na tunel zapasowy (failover)?

Czas failoveru zależy od konfiguracji timerów BGP. Domyślnie BGP Hold Timer wynosi 180 sekund, co oznacza, że AWS uzna sesję za martwą po 3 minutach. Można to skrócić – w naszym projekcie ustawiliśmy keepalive na 10 sekund i hold timer na 30 sekund, co dało failover w ~30–40 sekund. AWS obsługuje również BFD (Bidirectional Forwarding Detection) dla jeszcze szybszego wykrywania awarii.

7. Czy Unifi Dream Machine Pro (UDM Pro) obsługuje BGP w GUI?

Nie, UDM Pro (następca USG) nadal nie oferuje konfiguracji BGP w interfejsie graficznym. Mimo że urządzenie jest znacznie wydajniejsze, konfiguracja zaawansowanego routingu nadal wymaga CLI. Warto jednak pamiętać, że UDM Pro zmienił system bazowy z EdgeOS na UniFi OS, co oznacza inne podejście do konfiguracji CLI niż w przypadku starszego USG.

8. Co to jest config.gateway.json i dlaczego jest kluczowy?

config.gateway.json to plik konfiguracyjny w ekosystemie UniFi, który pozwala na trwałe dodanie ustawień CLI. Umieszcza się go w katalogu site kontrolera UniFi. Kontroler stosuje te ustawienia przy każdym provisionowaniu urządzenia, co zapobiega utracie konfiguracji po aktualizacji firmware lub zmianach w GUI. Bez tego pliku zmiany CLI byłyby nadpisywane.

9. Czy WireGuard byłby lepszym wyborem niż IPsec?

WireGuard jest nowocześniejszy, szybszy i prostszy w konfiguracji niż IPsec. Jednak w momencie realizacji projektu AWS VPN Gateway obsługiwał wyłącznie IPsec. Obecnie AWS nadal wymaga IPsec dla natywnych połączeń Site-to-Site VPN. WireGuard byłby opcją przy użyciu własnej instancji EC2 jako punktu końcowego VPN zamiast zarządzanego VGW.

10. Jaki jest koszt AWS VPN Gateway?

AWS nalicza opłaty za: (1) aktywne połączenie VPN – ~0,05 USD/godzinę (~36 USD/miesiąc per połączenie), (2) transfer danych wychodzących (egress) – standardowe opłaty AWS za transfer. Dla firmy z 5 oddziałami to ~180 USD/miesiąc za same połączenia VPN, plus koszty transferu danych. Alternatywą jest AWS Transit Gateway, który centralizuje połączenia, ale jest droższy przy małej liczbie oddziałów.

11. Jak zabezpieczyć się przed utratą konfiguracji po aktualizacji firmware USG?

Trzy kluczowe kroki: (1) zawsze używaj config.gateway.json zamiast bezpośrednich komend CLI, (2) zrób backup konfiguracji przed każdą aktualizacją, (3) testuj aktualizacje firmware najpierw na urządzeniu w środowisku testowym (jeśli to możliwe). W przypadku krytycznych konfiguracji BGP warto również mieć procedurę szybkiego przywrócenia konfiguracji.

12. Czy SparkSome może pomóc w podobnym projekcie sieciowym?

Tak. SparkSome specjalizuje się w projektowaniu i wdrażaniu infrastruktury sieciowej – od prostych sieci biurowych po rozbudowane systemy WAN z połączeniami do chmury publicznej. Pomagamy firmom wykorzystać pełny potencjał istniejącego sprzętu, zanim zaproponujemy wymianę na nowe rozwiązania. Skontaktuj się z nami, aby omówić Twoje potrzeby.

Potrzebujesz konsultacji technicznej?

Masz pytania dotyczące wpisu lub swojej infrastruktury? Napisz do nas. Pomożemy Ci to spokojnie przeanalizować i znaleźć rozwiązanie.

logo SparkSome

NIP: 6793289948

REGON: 527616291

KRS: 0001085500

Kapitał zakładowy: 50 000 zł

© Copyright
SparkSome Venture sp. z o.o.