Studia przypadków


Przypadek 1: getty


Studium Przypadku (Case Study): Jak jedna linia w rc.conf sparaliżowała FreeBSD i zmyliła diagnostykę systemu

Wstęp i kontekst środowiska

  • System operacyjny: FreeBSD (architektura amd64)
  • System plików: UFS2 (klasyczny układ partycji, w tym odrębne punkty montowania / oraz /usr)
  • Dodatkowe usługi: Aktywne kontenery/klatki jail zarządzane z poziomu systemu-gospodarza (hosta).

1. Objawy awarii (Symptomy pierwotne)

Po restarcie maszyny system nie potrafił przejść do normalnego trybu wielozadaniowego (Multi-User) i wpadał w pętlę krytycznych błędów konsoli tekstowej:

  1. Pętla Getty: Ekran był masowo zalewany komunikatem:
    init: cant exec getty /usr/libexec/getty for port /dev/ttyv0: no such file or directory
    a następnie:
    getty repeating too quickly on port ttyv0, sleeping 30 secs.
    Objaw ten dotyczył wszystkich konsol wirtualnych od ttyv0 do ttyv7.
  2. Awaria trybu awaryjnego (Single-User Mode): Próba wejścia do trybu jednoosobowego w celu naprawy konfiguracji kończyła się powtarzającym komunikatem:
    cannot read termcap database.
    Uniemożliwiało to poprawne działanie standardowych powłok tekstowych i zaawansowanych edytorów (np. vi), wymuszając pracę w trybie terminala dump.
  3. Status "Amnesiac": W rzadkich momentach, gdy system pozwalał na interakcję w trybie Multi-User, zgłaszał się pod domyślną nazwą jądra: amnesiac. Całkowicie brakowało dostępu do programu /usr/bin/login, a interfejsy sieciowe oraz kontenery jail pozostawały nieaktywne.

2. Chronologia diagnostyki i ślepe zaułki (Kolejne próby rozwiązania)

Próba 1: Podejrzenie uszkodzenia plików binarnego systemu i bazy termcap

  • Hipoteza: Plik /usr/libexec/getty lub baza /usr/share/misc/termcap uległy fizycznemu uszkodzeniu, usunięciu lub skróceniu (błąd EOF) podczas operacji na jailach lub nieudanej aktualizacji.
  • Działanie: Ręczne podmienienie pliku getty oraz bazy termcap ze sprawnej maszyny o identycznej wersji systemu. Prnebadowanie bazy poleceniem
    cap_mkdb
    .
  • Wynik: Brak rezultatu. Mimo fizycznej obecności plików o prawidłowych uprawnieniach (root:wheel, 755/644), system nadal zgłaszał ich brak (No such file or directory).

Próba 2: Podejrzenie awarii bibliotek dynamicznych (Błąd linkera)

  • Hipoteza: Komunikat No such file or directory w systemach UNIX przy istniejącym pliku wykonywalnym często oznacza brak linkera dynamicznego lub powiązanych bibliotek .so.
  • Działanie: Podmieniono kluczowe biblioteki systemowe: libc.so.7, libutil.so.9 oraz libsys.so.7. Sprawdzono zależności za pomocą ldd oraz nagłówek ELF poleceniem
    objdump -p
    .
  • Wynik: Kolejny fałszywy trop. Plik getty okazał się sprawny, a ldd nie wykazywał braków (status not found zniknął), jednak jądro wciąż odrzucało wykonanie programu.

Próba 3: Próba wymuszenia aktualizacji i naprawy przez freebsd-update

  • Hipoteza: Głębokie uszkodzenie struktury plików (np. przez wyciek uprawnień z jaila do hosta). Narzędzie automatyczne powinno przywrócić spójność.
  • Działanie: Podniesienie sieci w trybie Single-User (dhclient, ręczne trasowanie i konfiguracja DNS w /etc/resolv.conf) w celu wywołania
    freebsd-update fetch install
    lub
    freebsd-update IDS
    .
  • Wynik: Niepowodzenie. Narzędzie freebsd-update przerywało pracę generycznym i mylącym błędem o wspieraniu wyłącznie architektur Tier 1, wywołanym niespójnością środowiska operacyjnego w pamięci RAM.

Próba 4: Analiza tabeli montowania i uprawnień katalogów root

  • Hipoteza: Partycja /usr montuje się w trybie tylko do odczytu (ro) lub doszło do uszkodzenia wskaźników ścieżek jądra (vnodes/nullfs leakage) przez nieprawidłowo zamknięte jaile.
  • Działanie: Weryfikacja pliku /etc/fstab oraz komend
    mount -u /
    i
    mount -a
    . Próba przeniesienia getty i bazy termcap na partycję główną / w celu ominięcia struktury /usr.
  • Wynik: Częściowy sukces. Ominięcie ścieżki /usr pozwoliło systemowi ruszyć bez pętli błędów, ale ujawniło symptom głębszy – system wstawał jako amnesiac i wciąż ignorował podłączanie dysków w trybie Multi-User. Ponowne wpisanie exit natychmiast zrzucało system z powrotem do Single-User.

3. Przełom i identyfikacja prawdziwej przyczyny

Kluczem do rozwiązania zagadki okazało się prześledzenie rozruchu skryptu startowego linia po linii za pomocą wbudowanego mechanizmu debugowania powłoki sh w trybie awaryjnym (Single-User Mode):

/bin/sh -x /etc/rc

Wynik testu: Skrypt /etc/rc rozpoczynał działanie, ładował podstawowe zmienne, po czym nagle i po cichu kończył pracę (exit 0), całkowicie przerywając dalszą procedurę bootowania. Dalsza weryfikacja za pomocą:

/rescue/cat -n /etc/rc.conf

ujawniła anomalie. Na samym końcu pliku konfiguracyjnego /etc/rc.conf znajdowało się pojedyncze, ukryte polecenie:

exit

Jak do tego doszło? Słowo to zostało najprawdopodobniej przypadkowo zapisane do pliku podczas jednej z sesji SSH (np. poprzez błędne przekierowanie strumienia

echo "coś" > /etc/rc.conf
zamiast dopisania >>, bądź wklejenie komendy wyjścia z terminala bezpośrednio do otwartego edytora).

4. Dlaczego ta jedna linia wywołała tak spektakularną lawinę błędów? (Analiza techniczna)

W systemie FreeBSD plik /etc/rc.conf nie jest pasywnym plikiem tekstowym (jak np. pliki .ini czy .json). Jest on wykonywany metodą tzw. sourcingu (kropki lub polecenia . / source) wewnątrz głównego skryptu startowego /etc/rc. Wstrzyknięcie słowa exit do rc.conf spowodowało, że:

  1. Główny proces systemu (init) wywoływał /etc/rc.
  2. Skrypt /etc/rc w pierwszych linijkach wczytywał /etc/rc.conf.
  3. Interpreter natrafiał na instrukcję exit wewnątrz rc.conf i błyskawicznie zamykał cały proces /etc/rc.
  4. W efekcie system nigdy nie wykonał kolejnych kroków rozruchu:
    • Nie ustawiono nazwy hosta i parametrów sieci (stąd status amnesiac).
    • Nie uruchomiono skryptu montującego dyski z tabeli /etc/fstab (partycja /usr pozostawała fizycznie odłączona w trybie Multi-User).
  5. Gdy init przechodził do kolejnej fazy i próbował uruchomić ekrany logowania z pliku /etc/ttys, odpytywał odłączoną partycję /usr o program /usr/libexec/getty. Ponieważ katalog był pusty, jądro zwracało błąd No such file or directory, prowokując pętlę restartów too quickly.

5. Rozwiązanie (Remedium)

Naprawa systemu wymagała całkowitego odcięcia się od uszkodzonej konfiguracji i przywrócenia spójności z poziomu czystej, statycznej powłoki ratunkowej:

  1. Uruchomienie systemu w trybie Single-User Mode.
  2. Wywołanie w pełni niezależnej powłoki ratunkowej (niepotrzebującej bibliotek dynamicznych):
    Enter full pathname of shell: /rescue/sh
  3. Zamontowanie partycji głównej w trybie zapisu:
    /rescue/mount -u /
  4. Usunięcie wadliwej linii z pliku konfiguracyjnego (za pomocą
    /rescue/ee /etc/rc.conf
    lub automatycznie przez sed).
  5. Przywrócenie fabrycznego, czystego pliku konfiguracji terminali /etc/ttys za pomocą narzędzia fetch.
  6. Wykonanie
    /rescue/reboot
    .

Po usunięciu słowa exit, skrypt /etc/rc wykonał się w całości, automatycznie montując wszystkie partycje UFS2, podnosząc sieć i przywracając sprawność procesu getty na wszystkich konsolach.

Lekcja dla administratorów (Takeaway)

  • Weryfikuj źródło, a nie objawy: Lawina błędów binarnych (getty, termcap, ldd) była jedynie efektem domina wywołanym brakiem montowania partycji /usr.
  • Pamiętaj o naturze rc.conf: W systemach z rodziny BSD pliki konfiguracyjne są częścią kodu powłoki. Błąd składni lub wstrzyknięte polecenie sterujące w pliku konfiguracyjnym ma bezpośredni wpływ na stabilność profesjonalnego procesu init.
  • Narzędzia /rescue ratują życie: W krytycznych momentach niespójności środowiska współdzielonego, statycznie linkowane binarie z katalogu /rescue są jedynym pewnym punktem podparcia dla administratora.


Przypadek 2: BIND+DNSSEC+splitDNS



# BIND 9.20 + DNSSEC + split DNS – przypadek błędnej konfiguracji i diagnostyki
## Opis problemu
Administrator utrzymuje własny serwer DNS oparty o BIND 9.20 na FreeBSD.
Założenia były następujące: Po zmianach w konfiguracji pojawiły się jednocześnie dwa problemy:
  1. strefa zwracała SOA, ale nie zwracała rekordu A dla domeny głównej,
  2. po restarcie named nie były aktualizowane pliki .signed.

# Objawy
Lokalny serwer DNS odpowiadał:
dig @192.168.1.1 domena.pl A
wynik:
status: NOERROR
ANSWER: 0
AUTHORITY: 1
domena.pl. IN SOA ns1.example.pl. hostmaster.example.pl.

Brak rekordu A mimo obecności wpisu:
@ IN A 192.168.1.100
w pliku strefy.
Jednocześnie:
named-checkzone domena.pl domena.pl.zone.db
zwracał:
loaded serial XXXXX
OK

co oznaczało, że plik źródłowy był poprawny.
# Pierwszy trop – strefa nie korzysta z aktualnego pliku
Polecenie:
rndc zonestatus domena.pl
pokazało:
file: domena.pl.zone.db.signed
serial: 202407013
signed serial: 202407376

natomiast:
named-checkzone domena.pl domena.pl.zone.db
pokazywał już nowszy numer seryjny:
2026060105
Oznaczało to, że:
# Dodatkowa komplikacja – pliki .signed.signed
W katalogu stref pojawiły się pliki:
domena.pl.zone.db.signed
domena.pl.zone.db.signed.jbk
domena.pl.zone.db.signed.signed
domena.pl.zone.db.signed.signed.jnl

Jest to typowy objaw sytuacji, gdy:
file "domena.pl.zone.db.signed";
inline-signing yes;

BIND próbuje podpisać już podpisaną strefę. W efekcie tworzone są kolejne poziomy:
.signed
.signed.signed

co prowadzi do chaosu i utrudnia diagnostykę.
# Prawidłowa konfiguracja inline-signing
Dla automatycznego DNSSEC plik strefy powinien wskazywać na plik źródłowy:
zone "domena.pl" {
type primary;
file "/ścieżka/domena.pl.zone.db";
dnssec-policy default;
inline-signing yes;
allow-update { none; };
};

Nie należy wskazywać:
file "domena.pl.zone.db.signed";
jako pliku źródłowego strefy.
# Rozwiązanie
Po poprawieniu konfiguracji wykonano:
service named stop
usunięto stare pliki:
rm domena.pl.zone.db.signed*
następnie:
service named start
Po uruchomieniu BIND automatycznie wygenerował nowe pliki:
domena.pl.zone.db.signed
domena.pl.zone.db.signed.jbk

i załadował aktualną zawartość strefy.
Weryfikacja:
dig @192.168.1.1 domena.pl A +short
wynik:
192.168.1.100
Problem został rozwiązany.
# Drugi problem – dziwna nazwa domena.pl.example.pl
Polecenie:
nslookup domena.pl 8.8.8.8
zwracało:
Aliases: domena.pl.example.pl
co sugerowało błędną konfigurację DNS.
Po analizie okazało się, że:
cat /etc/resolv.conf
zawierało:
search example.pl
oraz publiczna strefa example.pl posiadała rekord:
*.example.pl CNAME example.pl
W efekcie resolver próbował automatycznie dopisywać sufiks:
domena.pl → domena.pl.example.pl
a wildcard odpowiadał poprawnym rekordem. Nie był to błąd DNS domeny.pl, lecz efekt działania mechanizmu search domain.
# Split DNS – poprawna interpretacja
W tym przypadku administrator celowo utrzymywał dwie różne wersje tej samej domeny:
## Publiczny DNS
domena.pl -> 88.x.x.x
obsługiwany przez zewnętrznego operatora.
## Lokalny DNS
domena.pl -> 192.168.1.100
obsługiwany przez własny serwer BIND.
Jest to klasyczna konfiguracja split DNS i sama w sobie nie stanowi błędu.
# Czy usuwać "search example.pl"?
Nie zawsze. Jeżeli administrator korzysta z nazw skróconych:
ssh serwer1
ping nas
ping backup

to wpis:
search example.pl
jest przydatny. Należy jednak pamiętać, że powoduje on automatyczne rozwijanie nazw:
host → host.example.pl
oraz
domena.pl → domena.pl.example.pl
gdy resolver uzna, że nazwa nie jest w pełni kwalifikowana.
# Czy usuwać wildcard *.example.pl?
Nie w każdym przypadku. Wildcard:
*.example.pl CNAME example.pl
jest często wykorzystywany do obsługi usług typu:
jellyfin.example.pl
grafana.example.pl
nextcloud.example.pl

Usunięcie go może spowodować niedziałanie wielu istniejących subdomen. Przed usunięciem należy sprawdzić, czy nie jest używany przez działające usługi.
# Wnioski
Najważniejsze przyczyny problemu:
  1. Strefa korzystała ze starego pliku .signed.
  2. W katalogu pojawiły się pliki .signed.signed, co wskazywało na błędny przebieg podpisywania.
  3. Po usunięciu starych plików podpisanych BIND wygenerował je ponownie i załadował aktualną strefę.
  4. Rekord A dla domeny głównej wrócił do odpowiedzi DNS.
  5. Alias domena.pl.example.pl nie wynikał z błędu strefy, lecz z konfiguracji search w resolverze oraz obecności wildcarda w strefie nadrzędnej.
  6. Split DNS działał prawidłowo – problem dotyczył procesu DNSSEC i plików podpisanych, a nie samej koncepcji rozdzielenia DNS publicznego i prywatnego.


Przypadek 3: tworzenie sitemap.xml i 404



Studium przypadku: sitemap.xml, błędy 404 i problemy z narzędziami analitycznymi
Wstęp

W trakcie pracy nad rozbudowaną witryną składającą się z kilkuset statycznych stron HTML wykonano standardową kontrolę techniczną serwisu po wygenerowaniu mapy witryny (sitemap.xml).

Celem było sprawdzenie poprawności indeksacji oraz weryfikacja, czy wszystkie adresy zwracają kod HTTP 200.

Wyniki pozornie były proste — mapa witryny działała, a strona była dostępna. Jednak analiza crawlerem wykazała kilka błędów 404, których lokalizacja w kodzie nie była oczywista.


Problem

Po uruchomieniu skanowania narzędziem typu crawler pojawiło się kilka adresów zwracających błąd 404.

Co istotne:

Problem polegał nie tyle na samej liczbie błędów, co na braku jednoznacznej informacji, skąd one pochodzą.


Pierwsza diagnoza

Naturalnym krokiem jest przeszukanie kodu HTML pod kątem błędnego adresu. W praktyce jednak nie zawsze prowadzi to do rozwiązania problemu.

Odwołania do nieistniejących zasobów mogą znajdować się w różnych miejscach:

W efekcie ręczne przeszukiwanie pojedynczych plików często nie daje natychmiastowego wyniku.


Weryfikacja sitemap.xml

Jednym z pierwszych kroków powinna być analiza samej mapy witryny.

W wielu przypadkach błędy 404 wynikają z:

Każdy adres w sitemap.xml powinien zwracać kod HTTP 200. Jeśli tak nie jest, mapa witryny wprowadza w błąd mechanizmy indeksujące oraz narzędzia analityczne.


Problemy z narzędziami do skanowania i generowania sitemap

W trakcie analizy okazało się, że duża część trudności nie wynikała z samej witryny, ale z narzędzi używanych do jej analizy.

Różne wyniki w różnych crawlerach

Różne narzędzia dawały różne rezultaty:

Brak spójności utrudniał jednoznaczną ocenę sytuacji.


Brak informacji o źródle błędu

Część narzędzi wskazywała jedynie adres 404, bez informacji:

Powodowało to konieczność ręcznego przeszukiwania całej struktury serwisu.


Błędy spoza HTML

Nie wszystkie wykryte adresy pochodziły bezpośrednio z treści strony.

Część była generowana przez:

W efekcie część błędów nie miała „widocznego” miejsca w HTML.


Problemy z generatorem sitemap

Dodatkowym źródłem niejednoznaczności był sam generator sitemap.xml, który:

W rezultacie mapa witryny mogła zawierać adresy, które nie były już częścią aktualnej struktury serwisu.


Wnioski praktyczne

Analiza przypadku prowadzi do kilku wniosków:

W praktyce nawet niewielka liczba błędów może wskazywać na pozostałości po wcześniejszych zmianach w strukturze strony.


Zakończenie

W środowisku rozbudowanych serwisów statycznych najtrudniejszym elementem nie jest samo wykrycie błędu, ale jego poprawna interpretacja.

Crawler i sitemap są narzędziami pomocniczymi — przydatnymi, ale nieomylne dane trzeba zawsze potwierdzić w kodzie źródłowym oraz strukturze serwera.

Dopiero połączenie analizy narzędziowej i ręcznej weryfikacji pozwala uzyskać pełny obraz stanu technicznego witryny.

Przypadek 4: sitemap - a co widzi Google

Sitemap, crawlery i SEO techniczne – czyli co tak naprawdę widzi Google

W praktyce administracji stron WWW bardzo często pojawia się uproszczenie: „mam sitemapę, więc Google wie wszystko o mojej stronie”. To jedno z tych zdań, które brzmią sensownie, ale w realnym świecie technicznym są tylko częściowo prawdziwe.

Sitemap XML nie jest mapą w sensie diagnostycznym. To jest raczej lista adresów URL przekazana robotowi wyszukiwarki. Google dostaje informację: „te strony istnieją”. Ale to nie oznacza, że te strony są poprawne, dostępne, dobrze połączone albo wartościowe w strukturze serwisu.

Sitemap – lista, nie analiza

Plik sitemap.xml pełni jedną funkcję: pokazuje robotowi wyszukiwarki, jakie adresy URL powinny zostać uwzględnione w indeksowaniu. I to wszystko.

Nie sprawdza on:

Sitemap jest więc bardziej deklaracją niż analizą. Można powiedzieć, że to „spis treści”, ale bez sprawdzania, czy wszystkie rozdziały nadal istnieją.

Crawlery – czyli jak Google „czyta” stronę

Zupełnie inną klasą narzędzi są crawlery. To one działają podobnie do Googlebota: przechodzą po stronie link po linku i sprawdzają jej rzeczywisty stan.

Crawler:

Dopiero na podstawie takiego skanu można powiedzieć coś o „zdrowiu” strony, a nie tylko o jej liście adresów.

Broken links – sygnał, nie katastrofa

W trakcie crawlowania często pojawiają się tzw. broken links (np. 404). Wbrew popularnemu podejściu nie są one automatycznie problemem krytycznym dla SEO. Google nie „karze” za pojedyncze błędy tego typu.

Problem zaczyna się dopiero wtedy, gdy:

Wtedy nie chodzi już o pojedyncze błędy, ale o degradację spójności całego serwisu.

Sitemap vs crawler – różnica, która robi różnicę

W praktyce te dwa podejścia często są mylone, bo wiele narzędzi łączy je w jednym interfejsie. Ale funkcjonalnie to są dwa różne światy:

I dopiero zestawienie tych dwóch perspektyw daje realny obraz strony.

Wnioski praktyczne

W przypadku stron średniej wielkości (kilkaset do kilku tysięcy podstron) często zaczyna się moment, w którym sama sitemap przestaje być wystarczająca jako narzędzie kontroli.

Pojawia się wtedy potrzeba spojrzenia na stronę jak Googlebot:

I to jest moment, w którym SEO techniczne zaczyna mieć większe znaczenie niż sama obecność sitemapy.

Przypadek 5: DNSSEC i zarządzanie domeną

Case study: DNSSEC w środowisku hostingowym – gdzie kończy się technologia, a zaczyna organizacja

DNSSEC w teorii jest prostym mechanizmem: podpisujemy strefę DNS, publikujemy rekordy kryptograficzne i zyskujemy ochronę przed podszywaniem się pod odpowiedzi DNS. W praktyce jednak wdrożenie w środowisku hostingowym pokazuje, że największym problemem nie jest sama technologia, ale model zarządzania domeną.

Założenie

Celem było sprawdzenie, czy DNSSEC można włączyć w typowej konfiguracji: domena krajowa (.pl), DNS zarządzany przez dostawcę hostingu, bez własnej infrastruktury DNS.

Weryfikacja stanu

Pierwszym krokiem była kontrola delegacji zabezpieczeń:

dig domena.pl DS

Brak rekordu DS w odpowiedzi oznacza brak aktywnego DNSSEC po stronie rejestru.

Następnie sprawdzono strefę DNS:

Wniosek był jednoznaczny: strefa DNS nie jest podpisana, a DNSSEC nie jest aktywny.

Problem praktyczny

W środowiskach hostingowych często nie ma bezpośredniego przełącznika DNSSEC w panelu użytkownika, mimo że:

Brakuje jednak elementu kluczowego: publikacji rekordu DS w rejestrze domeny.

Kluczowy wniosek

DNSSEC nie jest usługą „po stronie hostingu DNS”, tylko elementem łańcucha zależności:

rejestr domeny → delegacja DS → serwery DNS → podpisana strefa

Oznacza to, że:

Konkluzja

DNSSEC w praktyce ujawnia typowy problem infrastruktury DNS: rozdzielenie odpowiedzialności.

Z punktu widzenia administratora:

W efekcie technologia, która ma zwiększać bezpieczeństwo, często okazuje się trudna nie dlatego, że jest skomplikowana, ale dlatego, że jest rozproszona między różne systemy.

Przypadek 6: sprzętowe wybory - komputer dla OPNsense




 Wybór sprzętu pod firewall 2.5G / 10G (OPNsense / FreeBSD) – case study
 Wstęp

Dobór sprzętu do nowoczesnego firewalla opartego o OPNsense przestał być prosty. W praktyce nie wybiera się już „routera”, tylko mały serwer brzegowy (edge firewall).

W analizowanym przypadku celem było zbudowanie urządzenia:


 Kluczowy problem

W urządzeniach klasy AliExpress (CWWK / Topton / OEM):

Największe obciążenia nie wynikają z NAT, ale z:


 Testowane klasy CPU
 1. CPU legacy (i3-5010U / i3-8140U)

👉 wniosek: nie nadają się do 2.5G


 2. CPU energooszczędne (N300 / N305 / N355)

👉 wniosek:

świetne do routera, ale ograniczone pod IDS i VPN przy dużym ruchu


 3. CPU wydajnościowe (i5-8259U / i5-1235U)

👉 wniosek:

najlepsza klasa dla firewalla 2.5G+ z zapasem


Tabela porównawcza (realna klasa firewall)
CPURdzeniePassMarkNAT 2.5GVPNIDS/IPSKlasa
i3-5010U2C/4T~2klegacy
i3-8140U2C/4T~4k🟡basic
N3008C/8T~6k🟡🟡low-power
N3058C/8T~9–10k🟢🟡🟡edge router
N3558C/8T~11k🟢🟢🟡🟢strong low-power
i5-8259U4C/8T~8k🟢🟢🟡mid firewall
i5-1235U10C/12T~13–14k🟢🟢🟢🟢🟢🟢optimal firewall

 Finalna architektura (reference design)

W toku analizy wybrano docelową konfigurację:

 Intel i5-1235U + 6× Intel i226-V + 2× 10GbE uplink


Topologia:
 Dlaczego ten wybór wygrał
 1. Zrównoważony CPU

i5-1235U oferuje:

👉 klucz:

firewall musi mieć headroom, nie tylko „peak performance”


 2. Rozdzielenie warstw sieci

👉 efekt:


 3. Kompatybilność FreeBSD
 4. RAM 16 GB
 Dlaczego nie N-series

Mimo dobrych parametrów energetycznych:

👉 wniosek:

N-series = edge router
i5-1235U = edge firewall


 Kluczowy wniosek

W firewallach 2.5G–10G nie wygrywa najniższy pobór energii, tylko stabilny zapas CPU przy szczytowym obciążeniu (VPN + IDS + routing).


 Podsumowanie
 Najlepszy wybór (reference design)  Energooszczędna alternatywa  Minimum sensowne  Odrzucone
 Konkluzja

Dobór sprzętu firewall w tej klasie nie polega na wyborze „najmocniejszego CPU”, tylko na znalezieniu punktu, w którym: