>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak przestać obliczać maski podsieci w głowie i zacząć żyć

W każdym zespole jest ta osoba, która odpowiada "ile adresów w /26?" z prędkością kalkulatora i natychmiast mówi, czy 10.0.13.37 należy do zakresu 10.0.12.0/22. Ja nie jestem tą osobą. Za każdym razem, gdy muszę pracować z siecią, otwieram Pythona i zaczynam klikać bity. Tak było do momentu, gdy natknąłem się na cidr.xyz.

Co to właściwie jest

cidr.xyz to kalkulator CIDR i wizualizator podsieci stworzony przez dewelopera o nicku yuvadm. Projekt istnieje już od jakiegoś czasu: repozytorium zostało utworzone w grudniu 2015 roku, a od tego czasu zgromadził około 850 gwiazdek i 238 forków. Sama usługa działa pod adresem cidr.xyz i działa w całości w przeglądarce.

Idea jest odświeżająco prosta: wprowadzasz adres IP i maskę (w notacji CIDR lub klasycznym formacie 255.255.255.0), a strona natychmiast pokazuje wszystko, co można wyciągnąć z tej pary. Pierwsza linia po wprowadzeniu danych to gotowy do użycia sufiks CIDR, który możesz skopiować bezpośrednio do konfiguracji.

Co pokazuje kalkulator

Pozwól, że przejdę przez przykład. Wprowadzamy 10.0.13.37 z maską /22. Wynik daje nam:

  • Adres sieci i adres rozgłoszeniowy
  • Pierwszy i ostatni użyteczny adres hosta
  • Liczbę hostów w podsieci
  • Adres i maskę w formacie binarnym, bit po bicie
  • Maskę wieloznaczną (tę 0.0.3.255, bez której nie napiszesz ACL)
  • Format "zakres wszystkiego" — znajomy ciąg znaków dla konfiguracji pfSense lub Cisco
  • Maskę binarną w formie dziesiętnej

Brzmi jak opis każdego ipcalc, ale jest jedna rzecz, która wyróżnia cidr.xyz na tle setki podobnych narzędzi — wizualizacja. Poniżej pól wprowadzania danych rysowana jest siatka bitów: 32 bity adresu i 32 bity maski, podzielone na oktety. Bity odpowiedzialne za sieć i host są podświetlone różnymi kolorami.

I wtedy następuje moment olśnienia. Wcześniej wiedziałem, że /22 oznacza 22 bity sieciowe, ale trzymałem to w głowie jako abstrakcyjną wiedzę. Na cidr.xyz możesz zobaczyć, jak granica między częścią sieciową a hostową przeskakuje, gdy przeciągasz maskę z /24 na /21. Natychmiast rozumiesz, dlaczego 10.0.13.37/22 oznacza sieć 10.0.12.0 — trzeci oktet 13 w systemie binarnym to 00001101, a z maską /22 pierwsze sześć bitów trzeciego oktetu jest zamrożonych przez sieć, pozostałe sześć bitów jest przeznaczone dla hostów. Żadna tabela nie da ci tego uczucia "aha, to o to chodzi".

Dla kogo to jest

Przede wszystkim dla osób przygotowujących się do wywiadów lub certyfikacji. Pytania o VLSM i podział sieci pojawiają się w CCNA, a zrozumienie arytmetyki bitowej jest tam naprawdę niezbędne.

Po drugie, dla administratorów i inżynierów SRE pracujących z konfiguracjami. Szybkie sprawdzenie, czy maska wieloznaczna dla ACL jest obliczona poprawnie, czy zakres 172.16.0.0/12 faktycznie kończy się na 172.31.255.255 — to zadanie na dziesięć sekund.

Po trzecie, dla wszystkich innych, którzy spotykają się z sieciami raz w miesiącu i raz w miesiącu zapominają, jak to działa. Zaliczam się do tej kategorii.

Pod maską

Projekt jest napisany w TypeScript, z użyciem React i Next.js. README jest maksymalnie minimalistyczne — tylko dwie sekcje — ale wystarczy do uruchomienia lokalnej kopii:

npm install
npm run dev

Po tym narzędzie jest dostępne pod adresem localhost:3000 i możesz zagłębić się w kod lub dostosować je do siebie. Na przykład poważnie myślałem o dodaniu obliczania liczby podsieci przy dzieleniu przez podaną liczbę. To ten rzadki przypadek, gdy codebase jest tak zwięzły, że możesz realistycznie zgłosić pull request w jeden wieczór.

Wdrożenie jest zautomatyzowane: gałąź master leci przez Cloudflare Workers. Licencja MIT, więc jeśli chcesz, możesz to sforkować lub osadzić gdzieś.

Odrobina krytyki

Nie ma beczki miodu bez łyżki dziegciu. Funkcjonalność jest dostosowana do IPv4 — kalkulator nie przyjmuje adresów IPv6. Jeśli żyjesz w świecie fd00::/8, to narzędzie ci nie pomoże. Wizualizacja binarna też czasem przytłacza: przy pierwszym spojrzeniu na migającą tabelę bitów łatwo trafić w złe miejsce. I tak, 850 gwiazdek to nie milion — projekt jest znany w wąskich kręgach, ale nie zapomniany: ostatni commit do gałęzi master był niedawno, repozytorium żyje.

Czy warto spróbować

Zdecydowanie tak, jeśli: przygotowujesz się do wywiadu sieciowego; tworzysz konfiguracje dla sprzętu sieciowego; chcesz wreszcie wizualnie zrozumieć, jak maska podsieci dzieli przestrzeń adresową. Po prostu dodaj cidr.xyz do zakładek obok tłumacza — przyda się.

A jeśli chcesz czegoś więcej, sforkuj repozytorium i dodaj obsługę IPv6. Sądząc po zwięzłości kodu, to całkowicie wykonalne zadanie na weekend.

Powiązane projekty