Intereting Posts
Как обновить все пакеты Debian из исходного кода? многие отсутствующие зависимости, отсутствие ссылок (centOS 7, postgresql 9.3) Использование команды test для создания каталога, если он не существует Есть несколько версий Nginx на Debian Как указать уровень журнала строки вывода из службы systemd? В цифрах в / proc / <pid> / io включены пейджинг и обмен I / O? Как запустить команду только в том случае, если sed заменяет строки LXDE (Openbox): добавьте «угол изменения размера» в окно Инструменты tslib ничего не рисуют на экране Является ли блок-блок устройства привязанным к определенной версии ядра Linux? рекурсивное удаление с помощью sftp? Драйвер сенсорного экрана Команда Emacs вырезает ИЛИ копирует в системный буфер обмена? Как узнать, какая служба работает на конкретном порту в Linux? Найти совпадения из индексного файла без точного соответствия и распечатать последнее поле

значение столбца локального адреса Netstat

Когда я делаю netstat -ntlp появляется столбец с именем Local Address :

  • иногда он выводит IP-адрес как 0.0.0.0:7180
  • и иногда 127.0.0.1:9001

Каковы последствия обоих обозначений?

Определяет ли конкретный IP-адрес фильтр для входящих соединений? Например, для 127.0.0.1:9001 он будет принимать соединения только с localhost на порт 9001?

Я думаю, вы ответили на свой вопрос.

В качестве примера у 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 работающий на том же сервере, сможет получить доступ к базе данных, в то время как внешние (и ненадежные) пользователи не смогут получить к ней доступ.

127.0.0.1 и 0.0.0.0

127.0.0.1 означает локальный интерфейс или адрес обратной связи. Доступно только с вашего локального хоста.

0.0.0.0 является подстановочным адресом для каждого интерфейса.

В Local Address netstat -ntlp «Печать активных подключений tcp прослушивания, отображение IP-адресов в виде числовых значений и отображение PID и имени программы, использующей это соединение».


Разница на примере

Например, если у меня есть

 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1189/prog1 tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 1188/prog2 

это значит:

Служба prog1 с PID 1189 прослушивает порт 53 с протоколом tcp . Он доступен только с вашего локального хоста.

Служба prog2 с PID 1189 прослушивает порт 6666 с протоколом tcp . Доступ к этому порту разрешен с любого другого компьютера во всех сетях, в которых находится компьютер.

Источники: 1 2 3

0.0.0.0 означает, что процесс привязан ко всем интерфейсам.

127.0.0.1 означает, что процесс привязан только к интерфейсу 127.0.0.1 (loopback).

Если у вас есть другие интерфейсы, у вас могут быть записи xyza указывающие, что процесс связан с этими конкретными интерфейсами.

Процесс будет передан только в том случае, если трафик поступает на интерфейсы, к которым он привязан, так что да, это своего рода фильтр, хотя обычно это не описывается в этих терминах.

Как вы сказали, IP-адрес localhost только принимает соединения с этими портами локально, в то время как IP 0.0.0.0 относится к портам, которые открыты для всех.

Например

Местный

 127.0.0.1:8307 VMWARE 127.0.0.1:25 MASTER 

Все

 0.0.0.0:80 HTTP 0.0.0.0:443 SKYPE 

«Местный адрес» – это адрес, к которому привязан соответствующий сокет. Это адрес, на который он получает соединения. Адреса, о которых вы просите, являются «специальными адресами». Согласно странице руководства для протокола IPv4 для Linux :

Существует несколько специальных адресов: INADDR_LOOPBACK ( 127.0.0.1 ) всегда ссылается на локальный хост через устройство loopback; INADDR_ANY ( 0.0.0.0 ) означает любой адрес для привязки; INADDR_BROADCAST ( 255.255.255.255 ) означает любой узел и оказывает такое же влияние на bind как INADDR_ANY по историческим причинам.

То, что это означает для адреса 0.0.0.0 заключается в том, что сокет может получать соединения для любого адреса в системе, на любом интерфейсе.