Dlaczego musimy podawać adresy IP każdemu interfejsowi? Czy nie wystarczyłoby po jednym dla każdego urządzenia?
Dlaczego musimy podawać adresy IP każdemu interfejsowi? Czy nie wystarczyłoby po jednym dla każdego urządzenia?
Odpowiedzi:
Podłączenie interfejsu do sieci czyni z niego część tej sieci. Dlatego adres IP jest własnością połączenia, a nie hosta.
Podobnie host może mieć wiele połączeń sieciowych i odpowiednio adresy IP. Różne interfejsy często mają różne funkcje, dlatego ważne jest ich rozróżnienie (np. Konsola wewnętrzna, usługi publiczne, iSCSI).
Routery wymagają wielu adresów IP do swoich interfejsów.
Nie.
To powiedziawszy, zobaczmy uproszczony przykład:
Mam komputer z trzema interfejsami: eth0
(przewodowy Ethernet), wlan0
(wifi) i vboxnet0
(virtualbox). Jeden z interfejsów jest podłączony do sieci wewnętrznej, jeden do Internetu, a ostatni do sieci komputerów wirtualnych. Powiedzmy, że mam tylko jeden adres, 10.1.2.3, i chcę wysłać dużo pakietów do 192.168.1.2, dostępnych w jednej z tych sieci - dokąd mam je wysłać? Nie można ich po prostu wysłać Wszędzie, takie zachowanie zalałoby wszystkie sieci w krótkim czasie.
Ale jeśli interfejs eth0 ma 192.168.1.3, wlan0 ma 10.1.2.3, a vboxnet0 ma 172.0.0.1, wówczas domyślna tabela routingu prawdopodobnie powie „wyślij go eth0”. (To może oczywiście stać się znacznie bardziej skomplikowane w przypadku bardziej złożonych reguł routingu).
I odwrotnie, mogę chcieć uruchomić usługę tylko na interfejsie otwartym dla sieci prywatnej - więc kiedy przychodzi żądanie na innym interfejsie, nie jest ono w ogóle obsługiwane.
Przypadek 1: routery
Teoretycznie byłoby to możliwe.
Jednak zwykle pakiet IP jest wysyłany „bezpośrednio” do miejsca docelowego, gdy adres IP „pasuje” do określonej maski sieci (np. 10.0.0.0/28); w przeciwnym razie pakiet zostanie wysłany przez router.
To znaczy:
Pakiety wysyłane z jednego komputera do drugiego w jednej z dwóch sieci nie przechodzą przez router.
Oznacza to, że adresy IP każdego komputera pasują do maski sieci w sieci, do której są podłączeni.
Pakiety wysyłane do routera (w tym pakiety routowane przez router!) Nie są wysyłane z komputera do routera przez drugi router.
Oznacza to, że adres IP routera musi być zgodny z maskami sieci obu sieci.
Pakiety IP wysyłane z jednego komputera w jednej sieci do komputera w drugiej sieci są jednak przesyłane przez router.
Oznacza to, że adresy IP komputerów w jednej sieci nie mogą być zgodne z maską sieci drugiej sieci.
Jest prawie niemożliwe wybranie adresu IP i dwóch masek sieciowych w taki sposób, aby jeden adres IP pasował do obu masek sieciowych, ale wiele adresów IP pasuje tylko do jednej maski sieci.
Przypadek 2: Różne sieci prywatne
Moglibyśmy mieć przypadek, że komputer jest podłączony do dwóch prywatnych sieci, które nie mogą wymieniać danych między sobą.
W takim przypadku komputer może mieć ten sam adres IP w obu sieciach.
W przypadku IPv4 większość systemów operacyjnych nie obsługuje tego, ponieważ systemy operacyjne używają masek sieciowych obu sieci do rozróżnienia między nimi. Sieci muszą mieć różne maski sieciowe ...
W przypadku IPv6 (przy użyciu adresów „link-local”) komputer może mieć ten sam (link-local) adres IP w dwóch różnych sieciach - dlatego dwie karty sieciowe mogą mieć ten sam adres IP!
Urządzenie, które ma adres IP istnieje w zasięgu sieci.
Router to urządzenie, którego głównym celem jest przekazywanie ruchu między sieciami .
Aby router mógł przekazywać pakiety między dwiema sieciami, musi istnieć w obu sieciach.
Router będzie miał „uzbrojenie” w każdej sieci - lub, jak to nazywamy, interfejs . A interfejs istnieje w sieci, przypisując mu adres IP w sieci.
Stąd, podczas konfigurowania routera, każdy interfejs otrzymuje adres IP do identyfikacji sieci, które to Router należy zasięgu .
Oświadczenie: powyższy link prowadzi do mojego bloga. Mój blog nie zarabia. Nie czerpię zysku z lektury. Podaję link dla Twojej korzyści (i każdego innego czytelnika).
Zastanawiałem się, dlaczego musimy podawać adresy IP każdemu interfejsowi? Czy nie dałbyś każdemu urządzeniu wystarczającej ilości?
Zacznę od podważenia twojego założenia. Dlaczego mówisz, że nie tak zachowują się maszyny? Powiedzmy, że przypisuję 192.168.1.1/24 do eth1 i 192.168.2.1/24 do eth2. Poza instalowaniem trasy dla 192.168.1.0/24 poza eth1 i 192.168.2.0/24 poza eth2 i określaniem preferowanego źródłowego adresu IP dla pakietów wysyłanych wzdłuż tej trasy, jakie znaczenie ma to, do którego interfejsu przypisuję adres IP? Co naprawdę się zmienia? W jakim sensie maszyna nie zachowuje się tak, jakby wszystkie adresy IP przypisane do interfejsów na maszynie należały do maszyny?
Stosowane są oba podejścia. Najpopularniejszym podejściem jest w rzeczywistości hybryda tych dwóch podejść.
Na skraju „podaj urządzeniu adres IP” można sobie wyobrazić urządzenie, które zachowywałoby się tak, jakby wszystkie jego interfejsy były podłączone do mostka filtrującego z jednym adresem IP przypisanym do mostu.
Na skraju „nadaj każdemu interfejsowi adres IP” możesz wyobrazić sobie urządzenie, które zachowywałoby się tak, jakby każdy interfejs miał jak oddzielną maszynę. (Zobacz tutaj, jeśli uważasz, że tak właśnie działają obecnie urządzenia, lub pomyśl o osobie, która łączy się z adresem IP przypisanym do jednego interfejsu, ale pakiety przychodzą i są wysyłane z innego).
W praktyce większość maszyn działa gdzieś pomiędzy. Działają tak, jakby wszystkie adresy IP były własnością maszyny. Przypisanie adresu IP do konkretnego urządzenia tak naprawdę nie robi nic więcej poza informowaniem systemu operacyjnego o zainstalowaniu domyślnej trasy przez ten interfejs i ustawieniu domyślnego źródłowego adresu IP dla pakietów wysyłanych z tego interfejsu, w którym źródłowy adres IP nie jest zmuszony.
W przeciwnym razie zachowują się tak, jakby wszystkie adresy IP należały do urządzenia. Sposób przetwarzania pakietu nie zależy w dużej mierze od tego, w którym interfejsie jest odbierany - pakiety z źródłowym adresem IP przypisanym do jednego interfejsu otrzymanego w innym są rutynowe. Który interfejs ma przypisany adres, nie ma bezpośredniego wpływu na to, który interfejs wysyłany jest pakiet, określa to tabela routingu.
W ogólnym przypadku potrzebujesz jednego adresu IP na sieć lokalną, z którą się łączysz, i tak właśnie zdefiniowano protokół TCP / IP: każdy host w danej sieci lokalnej ma adres IP, który pozwala:
Tak długo, jak masz sieci lokalne z wieloma podłączonymi urządzeniami (większość sieci lokalnych 802.x, w tym Ethernet, Wi-Fi), dość trudno jest obejść ten problem, chyba że zasadniczo zmienisz sposób działania protokołu TCP / IP.
Można jednak tego uniknąć, chociaż jest to dość specyficzne.
Rozważ sieć, która ma tylko łącza punkt-punkt (Ethernet typu punkt-punkt między dwoma urządzeniami bez przełącznika lub koncentratora, łącza DSL, łącza SONET / SDH, Frame Relay lub ATM VC ...).
Zwykłą konwencją jest użycie / 30 dla każdego łącza, więc urządzenie na każdym końcu ma adres IP na tym łączu.
Możesz jednak użyć opcji „Numer IP nienumerowany” i nie przypisywać żadnych adresów IP do tych łączy. Teraz przypisujesz adres IP interfejsowi sprzężenia zwrotnego urządzenia (tak naprawdę każdy interfejs, ale do tego celu jest najłatwiejszy) i używasz protokołu routingu dynamicznego (IS-IS, OSPF, EIGRP ...). Ten protokół routingu będzie reklamował sposób kierowania ruchu do tego adresu IP za pomocą różnych nienumerowanych łączy.
Adresy IP zawierają informacje o routingu. Adres IP jest podzielony na dwa składniki, numer sieci i numer hosta , w oparciu o przypisaną długość prefiksu (która pierwotnie została wyrażona jako maska sieci, i tak często jest wewnętrznie implementowana w stosach sieciowych).
Aby routing działał poprawnie, wszystkie urządzenia podłączone do określonej sieci muszą mieć adresy o tym samym numerze sieci. Nadawcy określają, czy odbiorca jest w tej samej, czy innej sieci, porównując własny numer sieci z adresem odbiorcy. Jeśli są w tej samej sieci, wysyłają bezpośrednio; w przeciwnym razie wysyłają do routera, którego zadaniem jest przybliżenie wiadomości do miejsca docelowego.
Jeśli więc urządzenie jest podłączone do wielu sieci, potrzebuje adresu w każdej z tych sieci, aby można było do niego dotrzeć z urządzeń w tej sieci.
To powiedziawszy, tak naprawdę nie jest konieczne przypisywanie adresów konkretnym interfejsom sieciowym. Urządzenie może mieć po prostu listę wszystkich posiadanych adresów IP w jednej tabeli. Ale interfejsy nadal potrzebują informacji o sieci, z którą są połączone. Przypisując adres IP i maskę sieci do każdego interfejsu, umieszczamy te informacje w jednym miejscu, co upraszcza projektowanie. Nie ma potrzeby stosowania dodatkowego kodu, aby lista adresów IP była spójna z listą sieci, do których podłączone są interfejsy.
Może wystarczyć posiadanie jednego adresu IP w standardowym przypadku, ale jak podkreślają inne odpowiedzi, istnieje wiele przypadków, w których tak nie jest.
Inne odpowiedzi wspominały już o przypadku routera. Wspomina się o virtualbox, tak jak w przypadku maszyn wirtualnych: może być uruchomionych na jednym urządzeniu fizycznym kilka wirtualnych. Innym przypadkiem są sieci VLAN, być może faktycznie podłączone do jednej karty sieciowej, kilku różnych wirtualnych sieci LAN z różnymi adresami IP. I nawet z niektórych powodów możesz mieć interfejs z wieloma adresami IP, na przykład dlatego, że chcesz uruchomić kilka serwerów WWW na porcie TCP 80. Taka konfiguracja nie jest rzadkością dla serwerów, wypożyczany sprzęt może mieć pojedynczą kartę interfejsu sieciowego , ale skonfigurowanych zostanie kilka adresów IP.