LINUX.ORG.RU
ФорумAdmin

Ip 0.0.0.0

 


0

2

Подскажите такой вопрос. Возьмем к примеру приложение zabbix server. По умолчанию оно слушает с ip 0.0.0.0 Но если в zabbix agent указать нормальный адрес , к примеру 192.168.3.100. То все будет нормально работать? Или могут возникнуть какие-то проблемы и лучше 0.0.0.0 поменять на нормальный ip? Влияет ли указание «точного адреса 192.168.3.100» или нет «0.0.0.0» на работоспособность?


0.0.0.0 – означает, что адреса как такового нету. Обычно в таком случае приложение может слушать любой адрес.

Korchevatel ★★★★★ ()

оно слушает с ip 0.0.0.0

В реальности такого IP нет, поэтому слушать его невозможно. 0.0.0.0 — всего лишь адрес-ссылка на уровне самого хоста, указывающая на все имеющиеся IPv4-адреса (на любых сетевых интерфейсах).

andreboth ()

Нули означают слушать все адреса.

Указание конкретного адреса, означает слушать только его

Shulman ()
Ответ на: комментарий от andreboth

0.0.0.0 — всего лишь адрес-ссылка на уровне самого хоста, указывающая на все имеющиеся IPv4-адреса (на любых сетевых интерфейсах).

на любых сетевых интерфейсах

Да ладно? Прямо таки на любых... Пример:

$netstat -lntp
tcp        0      0 0.0.0.0:2500            0.0.0.0:*               LISTEN      1511/./a.out
Вопрос: Оно слушает на всех интерфейсах или нет?

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от andreboth

Нет не понял. Вы написали:

указывающая на все имеющиеся IPv4-адреса (на любых сетевых интерфейсах)

Вот я и спрашиваю вас: «Оно слушает на всех интерфейсах или нет?»

anc ★★★★★ ()
Ответ на: комментарий от andreboth

Хорошо. Уточняющий вопрос, у меня в системе 26 интерфейсов (сам офигел, никогда не заострял на этом вопрос ;) ), слушать будет на всех 26-ти? Что бы два раза не вставать, из этих 26-ти интерфейсов физических сетевых карт три штуки, если на всех 26-ти не будет слушать, то хотя бы на физических трех будет?

anc ★★★★★ ()
Ответ на: комментарий от andreboth

Совсем запутали, выше вы писали:

всего лишь адрес-ссылка на уровне самого хоста, указывающая на все имеющиеся IPv4-адреса (на любых сетевых интерфейсах)

А сейчас отвечаете:

слушать будет на всех 26-ти?

Нет.

если на всех 26-ти не будет слушать, то хотя бы на физических трех будет?

Нет.

Где правда?

anc ★★★★★ ()
Ответ на: комментарий от anc

А где противоречие? На любых — не значит, что на всех сразу.

andreboth ()

Тебе было бы неплохо сети подучить дружище.

anonymous ()

Нули значит «слушай на всех адресах, какие найдешь». Если у вас там один адрес, то пофиг. Если вы не планируете добавлять еще адреса - то пофиг. Если планируете добавлять, но не бесконтрольно - то пофиг. Если собираешься добавлять и удалять адреса по тыще раз на дню и не хочешь менять конфиг - оставь нули.

slowpony ★★★★ ()
Ответ на: комментарий от shell-script

Нет. На всех ipv4-адресах. Если на каких-то интерфейсах нет ipv4-адресов, очевидно на них слушать не будет.

Садитесь неуд, придете осенью на пересдачу.

anc ★★★★★ ()
Ответ на: комментарий от shell-script

Ответ знаю, это же я задал вопрос и именно с такими условиями. Правильный ответ: неизвестно. Вводных которые я дал не достаточно, что бы ответить на вопрос.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от shell-script

Ну уж вы то со своим стажем могли бы догадаться по косвенным признакам. Емним на эти «косвенные признаки» даже литл холивары разводили. Оно же на поверхности в первой ( из двух ) строчке :)

anc ★★★★★ ()

В вашем случае: если zabbix-agent, запущенный на том же узле, что и zabbix-сервер, будет обращаться к последнему по 127.0.0.1, то, если zabbix слушает 0.0.0.0 всё будет работать, а если 192.168.3.100 — нет. Во всех остальных случаях будет работать одинаково.

ugoday ★★★★★ ()
Ответ на: комментарий от anc

И я таки не понимаю. Я даже с перепугу пошёл в man setsockopt и man 2 bind, а из них в man 2 ip(читал бегло только касательно мультикаст-адресов) и всё-равно не вижу, где я ошибался.

INADDR_ANY (0.0.0.0) means any address for binding;
и далее
if  it is equal to INADDR_ANY, an appropriate interface is chosen by the system.

Т.е. как я и написал. Слушать будет все адреса. Слушать будет только не тех интерфейсах, где ipv4 адреса присутствуют. В чём ошибка?

shell-script ★★★★★ ()
Ответ на: комментарий от shell-script

Начну с конца и ответа на вопрос, что я имел ввиду написав «Оно же на поверхности в первой ( из двух ) строчке»
Я намекал на использование netstat, если вместо него использовать ss то всё стало бы очевидно по выхлопу.

Я даже с перепугу пошёл в man setsockopt

Вот это абсолютно верное направление, снимаю шляпу. Чутка не докопали. Третий параметр, нас интересует значение SO_BINDTODEVICE. Целиком например так setsockopt( lis, SOL_SOCKET, SO_BINDTODEVICE, "eth0", 4) где int lis = socket(AF_INET, SOCK_STREAM, 0) до и после все как обычно в работе с серверными сокетами. При этом указав .sin_addr.s_addr = htonl(INADDR_ANY) мы как раз и получим тот самый результат в выхлопе netstat Ip 0.0.0.0 (комментарий) А вот выхлоп ss уже покажет то, что нас интересует.

tcp    LISTEN     0      10     *%eth0:2500                  *:*                   users:(("a.out",pid=22232,fd=3))
как видите тут указан интерфейс eth0 на котором и слушаем.

anc ★★★★★ ()
Ответ на: комментарий от anc

Но если пакет придет на другой физический интерфейс, соединение (по дефолту) все равно будет установлено, так что всем пофиг и можно считать, что слушаются все интерфейсы.

anonymous ()
Ответ на: комментарий от anonymous

Но если пакет придет на другой физический интерфейс, соединение (по дефолту) все равно будет установлено

Неа.

anc ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.