Я думаю, что вы ответили на свой вопрос.
Например, apache
есть Listen
опция, которая сообщает, какой адрес и порт слушать. В зависимости от того, как это установлено, apache
будет прослушивать любой IP-адрес, определенный адрес: -
Listen *:80
Listen 0.0.0.0:80
Listen 127.0.0.1:80
Listen 192.168.0.5:80
Вышеуказанные параметры отображаются как: -
:::80
0.0.0.0:80
127.0.0.1:80
192.168.0.5:80
и перевести на: -
- Прослушивание любого IP-адреса (IPv4 или IPv6)
- Прослушивание любого IPv4-адреса на этом сервере.
- Слушайте только локальный IPv4
- Прослушивание внешнего IPv4-адреса 192.68.0.5
Вы можете настроить свой сервис на прослушивание только localhost
интерфейса, если вы не хотите, чтобы кто-то внешний обращался к нему. Например, если вы используете сервер LAMP, вы будете apache
прослушивать все IP-адреса (чтобы ваши пользователи могли к нему обращаться), в то время как mysql
базу данных можно настроить так, чтобы она была доступна только с localhost
(используя ее bind=127.0.0.1
директиву). Таким образом, php
работа на том же сервере будет иметь доступ к базе данных, в то время как внешние (и ненадежные) пользователи не смогут получить к ней доступ.
:::80
также не всегда подразумевает IPv4 unix.stackexchange.com/a/496150/333382127.0.0.1 и 0.0.0.0
127.0.0.1
означает локальный интерфейс или адрес обратной связи. Доступно только с вашего локального хоста.0.0.0.0
это подстановочный адрес для каждого интерфейса.Вкл
netstat -ntlp
Local Address
означает «Распечатать активные прослушивающие tcp-соединения, показывать IP-адреса в виде числовых значений и показывать PID и имя программы, которая использует это соединение».Разница по примеру
Например, если у меня есть
это значит:
Служба
prog1
с PID1189
прослушивает порт53
с протоколомtcp
. Он доступен только с вашего локального хоста.Служба
prog2
с PID1189
прослушивает порт6666
с протоколомtcp
. Доступ к этому порту разрешен с любого другого компьютера во всех сетях, частью которых он является.Источники: 1 2 3
источник
0.0.0.0
означает, что процесс связан со всеми интерфейсами.127.0.0.1
означает, что процесс связан только с127.0.0.1
интерфейсом (loopback).Если у вас были другие интерфейсы, у вас могли бы быть
x.y.z.a
записи, указывающие, что процесс был связан с этими конкретными интерфейсами.Процесс будет сообщен только в том случае, если трафик поступит на интерфейсы, к которым он привязан, так что да, это своего рода фильтр, хотя обычно он не описывается в этих терминах.
источник
«Локальный адрес» - это адрес, к которому привязан данный сокет. Это адрес, по которому он получает соединения. Адреса, о которых вы спрашиваете, являются «специальными адресами». Согласно странице руководства для протокола Linux IPv4 :
Для адреса это означает,
0.0.0.0
что сокет может принимать соединения для любого адреса в системе, на любом интерфейсе.источник
Как вы уже сказали, IP-адрес localhost локально принимает подключения к этим портам, а IP-адрес 0.0.0.0 относится к портам, которые открыты для всех.
Например
Местный
Все
источник