Niedobór adresów IPv4
Według Vinta Cerfa (ojca IP) rozmiar 32-bitowego adresu IPv4 został wybrany dowolnie. Własność intelektualna była eksperymentem rządowym / akademickim, a obecny publiczny Internet nigdy nie był przewidziany. Paradygmat IP polegał na tym, że każde podłączone urządzenie będzie miało unikalny adres IP (wszystkie pakiety wysyłane między urządzeniami IP będą łączone kompleksowo ze źródłowego adresu IP do docelowego adresu IP), a wiele protokołów korzystających z adresu IP zależy od każdego urządzenia posiadający unikalny adres IP.
Zakładając, że moglibyśmy użyć każdego możliwego adresu IPv4 *, istnieje tylko 4 294 967 296 możliwych adresów IPv4, ale (we wrześniu 2018 r.) Obecna populacja świata wynosi 7 648 290 361. Jak widać, nie ma wystarczającej liczby możliwych adresów IPv4, aby każda osoba mogła mieć nawet jeden, ale wiele osób ma komputer, drukarkę, telefon komórkowy, tablet, konsolę do gier, smart TV itp., Z których każdy wymaga adresu IP i co nawet nie wpływa na potrzeby biznesowe dotyczące adresów IP. Jesteśmy także u progu Internetu Rzeczy (Internet of Things), gdzie każde urządzenie potrzebuje adresu IP: żarówki, termostaty, termometry, mierniki deszczu i systemy zraszaczy, czujniki alarmowe, urządzenia, pojazdy, otwieracze do bram garażowych, systemy rozrywki, obroże dla zwierząt domowych i kto wie co jeszcze.
* Istnieją bloki adresów IPv4, których nie można użyć do adresowania hosta. Na przykład multiemisja ma blok 268 435 456 adresów, których nie można użyć do adresowania hosta. IANA prowadzi rejestr adresów specjalnych IPANA IANA IPv4 pod adresem https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml w celu udokumentowania wszystkich bloków adresów specjalnych i ich celów .
IANA (Internet Assigned Numbers Authority) zabrakło bloków adresów IPv4, aby przypisać do RIR (regionalnych rejestrów internetowych), które mają zostać przypisane w ich odpowiednich regionach, a RIR zabrakło teraz również adresów IPv4 do przypisania w każdym regionie. Dostawcy usług internetowych (ISP) i firmy, które chcą lub potrzebują adresów IPv4, nie mogą już uzyskiwać adresów IPv4 z RIR i muszą teraz próbować kupować adresy IPv4 od firm, które mogą mieć dodatkowe (w miarę pogłębiania się niedoborów adresów IPv4 cena adresów IPv4 idzie w górę).
Nawet jeśli wszystkie adresy IPv4, które są zarezerwowane do specjalnych celów i nie mogą być używane do adresowania hosta, zostały udostępnione do użytku, nadal bylibyśmy w tej samej pozycji, ponieważ po prostu nie ma wystarczającej liczby adresów IPv4 z powodu ograniczonego rozmiaru adresów IPv4.
Łagodzenie niedoboru adresu IPv4
IANA i RIR skończyłyby się adresy IPv4 wiele lat wcześniej, zanim zrobiłyby to, gdyby IANA i IETF (Internet Engineering Task Force) nie podjęły działań zaradczych w związku z brakiem adresów IPv4. Jednym ważnym ograniczeniem było wycofanie klas sieci IPv4 na rzecz CIDR (Classless Inter-Domain Routing). Adresowanie klasowe dopuszcza tylko trzy przypisane rozmiary sieci (16 777 216, 65 536 lub 256 wszystkich adresów hosta na sieć), co oznacza, że wiele adresów jest marnowanych (firma potrzebująca tylko 300 adresów hosta musiałaby mieć przydzieloną sieć klasową, która ma 65 536 możliwych hostów adresy, marnując ponad 99% adresów w klasowej sieci),
Zdecydowanie złagodzenie, które miało największy wpływ na wydłużenie czasu życia IPv4, to użycie prywatnego adresowania i wariantu NAT (Network Address Translation) o nazwie NAPT (Network Address Port Translation), co większość ludzi ma na myśli, gdy odnoszą się do NAT lub PAT (PAT jest terminem specyficznym dla dostawcy dla NAPT). Niestety, NAPT jest brzydkim obejściem, które łamie paradygmat IP od końca do końca, i które psuje protokoły, które zależą od unikalnego adresowania IP, wymagające jeszcze bardziej brzydkich obejść.
NAT / NAPT
Koncepcja NAT jest dość prosta: zastępuje źródłowy i docelowy adres IPv4 w nagłówku pakietu, gdy pakiet przechodzi przez urządzenie NAT. W praktyce wymaga obliczeń, ponieważ nagłówek IPv4 ma pole obliczane w celu sprawdzenia integralności nagłówka IPv4, a wszelkie zmiany wprowadzone w nagłówku IPv4 wymagają ponownego obliczenia pola, a niektóre protokoły transportowe w pakiecie danych mają również swoje własne obliczone pola, które muszą zostać ponownie obliczone, przy użyciu zasobów obliczeniowych w urządzeniu NAT, które mogłyby zostać wykorzystane do przekazywania pakietów.
W podstawowym NAT urządzenie NAT ma pulę adresów IPv4, których używa do zamiany źródłowych adresów IPv4 nagłówków pakietów dla pakietów IPv4 wysyłanych z sieci wewnętrznej do sieci zewnętrznej i utrzymuje tablicę tłumaczeń w celu przetłumaczenia docelowe adresy IPv4 ruchu zwracanego z sieci zewnętrznej w celu dostarczenia pakietów z powrotem do właściwych hostów w sieci wewnętrznej. Wymaga to również zasobów na urządzeniu NAT, aby zbudować i utrzymywać tablicę translacji oraz przeprowadzać wyszukiwania tablic. Takie wykorzystanie zasobów może spowolnić przekazywanie pakietów, ponieważ zasoby używane przez NAT są pobierane z zasobów, które mogłyby być wykorzystane do przekazywania pakietów.
NAPT przenosi Basic NAT dalej, tłumacząc także adresy protokołów transportowych (porty) dla TCP i UDP oraz identyfikatory zapytań dla ICMP. Tłumacząc również adresy warstwy transportowej, NAPT pozwala na użycie jednego zewnętrznego adresu IPv4 dla wielu wewnętrznych adresów IPv4 hosta. NAPT wymaga jeszcze więcej zasobów niż Basic NAT, ponieważ wymaga osobnej tabeli dla każdego protokołu warstwy transportowej, a także musi wykonywać obliczenia integralności protokołów transportowych.
Korzystanie z prywatnego adresowania IPv4, które może być ponownie wykorzystane w wielu sieciach (być może zauważyłeś, że większość sieci domowych / domowych domyślnie używa tej samej sieci 192.168.1.0/24, która znajduje się w jednym z przydzielonych przez IANA zakresów prywatnych adresów IPv4) , wraz z NAPT, pozwala użytkownikom biznesowym i domowym na używanie jednego zewnętrznego (publicznego) adresu dla dużej sieci wewnętrznej (prywatnie zaadresowanej). Oszczędza to wiele, wiele adresów IPv4 (kilkakrotnie łączną liczbę możliwych adresów IPv4) i wydłużyło żywotność IPv4 daleko poza punkt, w którym zawaliłby się bez NAPT. NAPT ma kilka poważnych wad:
- NAPT łamie paradygmat IP od końca do końca i działa tylko z TCP, UDP i ICMP, łamiąc inne protokoły transportowe. Istnieją również protokoły warstwy aplikacji, które używają protokołu TCP lub UDP, które są uszkodzone przez NAPT, mimo że TCP i UDP nominalnie działają z NAPT. Inne zabezpieczenia, np. STUN / TURN, mogą być dostępne dla niektórych protokołów warstwy aplikacji, ale mogą zwiększyć koszty i złożoność.
- NAPT jest bardzo zasobochłonny, spowalnia przekazywanie pakietów w porównaniu do tego, co jest możliwe bez użycia jakiejkolwiek formy NAT. Niektórzy dostawcy dodają dedykowany sprzęt, aby ograniczyć potrzebę kradzieży zasobów z przekazywania pakietów, ale wiąże się to z dodatkowymi kosztami, rozmiarem, złożonością i zużyciem energii.
- Podczas korzystania z NAPT ruch inicjowany spoza sieci NAPT nie może być dostarczany do sieci wewnętrznej, ponieważ w tabeli tłumaczeń nie ma wpisu tłumaczenia, który jest dodawany przez ruch inicjowany wewnątrz. Pojedynczy zewnętrzny (publiczny) adres jest skonfigurowany na urządzeniu NAT i zakłada się, że wszelkie pakiety z tym docelowym adresem IPv4 i brakiem wpisu źródłowego adresu IPv4 w tabeli translacji protokołu transportowego są dla urządzenia NAPT, a nie sieć wewnętrzna. W przypadku tego problemu istnieje ograniczenie, zwane Port Forwarding.
- Przekazywanie portów zasadniczo konfiguruje ręcznie ręczny stały wpis w tabeli translacji, aby umożliwić inicjowany z zewnątrz ruch, który jest kierowany do określonego protokołu transportowego i adresu, aby protokół był dostarczany do określonego hosta wewnętrznego. Ma to tę wadę, że pozwala tylko jednemu hostowi wewnętrznemu być celem dla określonego protokołu i adresu transportowego. Na przykład, jeśli w sieci wewnętrznej znajduje się wiele serwerów WWW, tylko jeden z serwerów WWW może być widoczny na porcie TCP 80 (domyślny dla serwerów WWW).
- Ponieważ niedobór adresów IPv4 jest tak poważny, usługodawcom internetowym (dostawcom usług internetowych) brakuje adresów publicznych, aby przypisać je swoim klientom. Dostawcy usług internetowych nie mogą już uzyskiwać więcej adresów publicznych, więc przyjęli pewne środki zaradcze, które szczególnie krzywdzą użytkowników domowych / mieszkaniowych. Dostawcy usług internetowych chcą zarezerwować swoją cenną pulę adresów publicznych dla klientów biznesowych, którzy są gotowi zapłacić za przywilej uzyskania adresów publicznych. Aby to zrobić, dostawcy usług internetowych zaczynają teraz przypisywać adresy prywatne lub współdzielone swoim klientom domowym / mieszkalnym, a dostawcy usług internetowych używają NAPT na swoich routerach, aby ułatwić korzystanie z wielu adresów prywatnych lub współdzielonych na jednym adresie publicznym. Stwarza to sytuację, w której sieć domowa / mieszkalna stoi za dwoma tłumaczeniami NAPT (ISP NAPT dla klienta NAPT),
- Wiele osób popełnia błąd, utożsamiając NAPT i bezpieczeństwo, ponieważ wewnętrznych hostów nie można bezpośrednio adresować z zewnątrz. To fałszywe poczucie bezpieczeństwa. Ponieważ zapora sieciowa łącząca sieć z publicznym Internetem jest wygodnym miejscem do uruchamiania NAPT, po prostu dezorientuje sytuację. Stwarza to niebezpieczne wrażenie, że sam NAPT jest zaporą ogniową, a prawdziwa zapora ogniowa jest niepotrzebna. Bezpieczeństwo sieci pochodzi z zapór ogniowych, które domyślnie blokują cały ruch inicjowany z zewnątrz, pozwalając tylko na ruch, na który jest wyraźnie skonfigurowane, aby umożliwić, może przeprowadzić głęboką kontrolę zawartości pakietu, aby usunąć niebezpieczne ładunki pakietów. Niektóre osoby nie zdają sobie sprawy z tego, że bez zapory ogniowej, sprzętowej lub programowej, na zewnątrz lub wbudowanej w urządzenie NAPT w celu ochrony urządzenia NAPT, samo urządzenie NAPT jest podatne na atak. W przypadku naruszenia bezpieczeństwa urządzenia NAPT, ono, a przez to osoba atakująca, ma pełny dostęp do prywatnie zaadresowanej wewnątrz sieci. Pakiety inicjowane z zewnątrz, które nie pasują do tabeli translacji, są kierowane do samego urządzenia NAPT, ponieważ to właśnie urządzenie jest adresowane adresem zewnętrznym, więc urządzenie NAPT może zostać bezpośrednio zaatakowane.
Rozwiązanie problemu braku adresu IPv4
IETF przewidział niedobór adresów IPv4 i stworzył rozwiązanie: IPv6, który wykorzystuje 128-bitowe adresy, co oznacza, że istnieje 340 3402 366 920,938,463,463,374,607,431,768,211,456 możliwych adresów IPv6. Prawie niewyobrażalna liczba adresów IPv6 eliminuje potrzebę NAPT (IPv6 nie ma żadnych standardów NAT, podobnie jak IPv4, a eksperymentalny NAT RFC IPv6 specjalnie zabrania NAPT), przywracając oryginalny paradygmat end-to-end IP. Łagodzenie niedoboru adresu IPv4 ma na celu przedłużenie żywotności IPv4, aż IPv6 stanie się wszechobecny, w którym to momencie IPv4 powinien zanikać.
Ludzie tak naprawdę nie mogą pojąć liczb wielkości używanych w IPv6. Na przykład standardowa sieć IPv6 używa 64 bitów dla każdej części sieci i hosta adresu sieciowego. To 18 446,744,073,709,551,616 możliwych sieci IPv6 / 64 i ta sama (ogromna) liczba adresów hostów dla każdej z tych sieci. Aby spróbować zrozumieć tak dużą liczbę, rozważ narzędzia, które skanują wszystkie możliwe adresy w sieci. Jeśli takie narzędzie może skanować 1 000 000 adresów na sekundę (mało prawdopodobne), wykonanie skanowania w jednej sieci IPv6 / 64 zajęłoby 584 542 lata. Obecnie tylko 1/8 całkowitej przestrzeni adresowej IPv6 jest przydzielona na globalne adresy IPv6, co działa na 2 305 843 009 213 693 952 standardowych sieci IPv6 / 64, a jeśli populacja świata wynosi 21 miliardów w roku 2100 (nieco realistyczna liczba), każdy z tych 21 miliardów ludzi może mieć 109 802 048 standardowych sieci IPv6 / 64, przy czym każda sieć ma 18 446,744,073,709,551,616 możliwych adresów hosta. Niestety (dziesięciolecia) braku adresów IPv4 tak głęboko zakorzeniło zachowanie adresów u ludzi, że wiele osób po prostu nie może sobie pozwolić na ich odejście i próbują zastosować je do IPv6, co jest bezcelowe i w rzeczywistości szkodliwe. IPv6 jest tak naprawdę zaprojektowany do marnowania adresów.
IETF miał również tę zaletę, że spojrzał na nią z perspektywy czasu i poprawił IP (w IPv6), usuwając funkcje IPv4, które nie działały dobrze, ulepszając niektóre funkcje IPv4 i dodając funkcje, których IPv4 nie miał, tworząc nowe i ulepszone IP . Ponieważ IPv6 jest protokołem całkowicie odrębnym od IPv4, można go uruchamiać równolegle z IPv4, ponieważ przejście z IPv4 na IPv6. Hosty i urządzenia sieciowe mogą jednocześnie obsługiwać zarówno IPv4, jak i IPv6 na tym samym interfejsie (podwójny stos), a każde z nich jest niewidoczne dla drugiego; nie ma interferencji między tymi dwoma protokołami.
Problem z IPv6 polega na tym, że w rzeczywistości jest to zupełnie inny protokół, który jest niezgodny z wszechobecnym IPv4, a wiele osób zaradza brakowi adresu IPv4 jako „wystarczająco dobrym”. W rezultacie jest ponad 20 lata od momentu ustandaryzowania protokołu IPv6, a teraz mamy prawdziwą trakcję w korzystaniu z protokołu IPv6 (raporty Google, od września 2018 r., światowe przyjęcie IPv6 na poziomie ponad 20%, a wskaźnik przyjęcia IPv6 w USA wynosi ponad 35%). Powodem, dla którego ostatecznie przechodzimy na IPv6 jest to, że po prostu nie ma już nieużywanych adresów IPv4 do przypisania.
Istnieją inne przeszkody, wszystkie związane z kulturą IPv4, które po prostu trudno jest przeoczyć. Wiele osób boi się także IPv6, ponieważ dorastało i czuje się dobrze z IPv4, brodawkami i innymi. Na przykład adresy IPv6 wydają się duże i brzydkie w porównaniu z adresami IPv4, co wydaje się zniechęcać wiele osób. Rzeczywistość jest taka, że IPv6 jest często łatwiejszy i bardziej elastyczny niż IPv4, szczególnie w zakresie adresowania, a wnioski wyciągnięte z IPv4 zostały zastosowane od samego początku.