Myślę, że odpowiedziałeś na własne pytanie.
Na przykład apache
ma Listen
opcję, która mówi, który adres i port mają nasłuchiwać. W zależności od tego, jak to jest ustawione, apache
nasłuchuje na dowolnym adresie IP, konkretny adres: -
Listen *:80
Listen 0.0.0.0:80
Listen 127.0.0.1:80
Listen 192.168.0.5:80
Powyższe opcje są wyświetlane jako: -
:::80
0.0.0.0:80
127.0.0.1:80
192.168.0.5:80
i przetłumacz na: -
- Słuchaj na dowolnym adresie IP (IPv4 lub IPv6)
- Nasłuchuj na dowolnym adresie IPv4 na tym serwerze
- Słuchaj tylko na lokalnym hoście IPv4
- Nasłuchuj na zewnętrznym adresie IPv4 192.68.0.5
Możesz skonfigurować swoją usługę, aby nasłuchiwała tylko localhost
interfejsu, jeśli nie chcesz, aby ktokolwiek z zewnątrz miał do niego dostęp. Na przykład, jeśli korzystasz z serwera LAMP, będziesz apache
nasłuchiwał na wszystkich adresach IP (aby użytkownicy mogli uzyskać do niego dostęp), podczas gdy mysql
bazę danych można skonfigurować tak, aby była dostępna tylko z localhost
(używając jej bind=127.0.0.1
dyrektywy). W ten sposób php
działające na tym samym serwerze będą mogły uzyskać dostęp do bazy danych, podczas gdy użytkownicy zewnętrzni (i niezaufani) nie będą mogli uzyskać do niej dostępu.
:::80
nie zawsze oznacza również IPv4. unix.stackexchange.com/a/496150/333382127.0.0.1 i 0.0.0.0
127.0.0.1
oznacza lokalny interfejs lub adres pętli zwrotnej. Dostępne tylko z lokalnego hosta.0.0.0.0
to adres wieloznaczny dla każdego interfejsu.On
netstat -ntlp
Local Address
oznacza „Wydrukuj aktywne nasłuchiwanie połączeń TCP, pokaż adresy IP jako wartości liczbowe i pokaż PID oraz nazwę programu, który korzysta z tego połączenia”.Różnica według przykładów
Np. Jeśli mam
to znaczy:
Usługa
prog1
z PID1189
nasłuchuje na porcie53
z protokołemtcp
. Jest dostępny tylko z lokalnego hosta.Usługa
prog2
z PID1189
nasłuchuje na porcie6666
z protokołemtcp
. Dostęp do tego portu jest dozwolony z dowolnego innego komputera we wszystkich sieciach, w których komputer jest częścią.Źródła: 1 2 3
źródło
0.0.0.0
oznacza, że proces jest powiązany ze wszystkimi interfejsami.127.0.0.1
oznacza, że proces jest powiązany tylko z127.0.0.1
interfejsem (sprzężenie zwrotne).Jeśli masz inne interfejsy, możesz mieć
x.y.z.a
wpisy wskazujące, że proces był powiązany z tymi konkretnymi interfejsami.Proces zostanie poinformowany tylko wtedy, gdy ruch dotrze do interfejsów, z którymi jest związany, więc tak, to rodzaj filtru, chociaż zwykle nie jest opisany w tych terminach.
źródło
„Adres lokalny” to adres, z którym powiązane jest dane gniazdo. To jest adres, na który odbiera połączenia. Adresy, o które pytasz, to „adresy specjalne”. Zgodnie ze stroną podręcznika dla protokołu Linux IPv4 :
Dla adresu
0.0.0.0
oznacza to, że gniazdo może odbierać połączenia dla dowolnego adresu w systemie i na dowolnym interfejsie.źródło
Jak już powiedziałeś, adres IP hosta lokalnego akceptuje połączenia tylko z tymi portami lokalnie, natomiast adres IP 0.0.0.0 odnosi się do portów, które są otwarte dla wszystkich.
Na przykład
Lokalny
Do wszystkich
źródło