Насколько я понимаю, 0.0.0.0
имеются в виду все сетевые интерфейсы данного хоста (включая 127.0.0.1
).
Предположим, у меня есть три интерфейса 192.0.2.40
, 203.0.113.150
и 127.0.0.1
на сервере (ОС Linux).
На 192.0.2.40:777
, у меня есть ServerA. На 203.0.113.150:777
, у меня есть ServerB. Как сервер будет обрабатывать запрос на 0.0.0.0:777
? Я имею в виду, когда один и тот же порт ( 777
) прослушивается на разных интерфейсах. Или я все неправильно понимаю?
решение1
Как сервер обработает запрос на 0.0.0.0:777?
Этого не произойдет — вы не сможете отправить запрос на 0.0.0.0, и точка.
Это означает, что хост будет реагировать на КАЖДЫЙ запрос (на порту 777), независимо от используемого IP-адреса. Очевидно, что сервер должен быть настроен с IP-адресом, но это означает, что процесс сервера не выполняет никакой дополнительной фильтрации.
решение2
0.0.0.0
и 127.0.0.1
используются внутри. 0.0.0.0
используется для обозначения всех интерфейсов, и 127.0.0.1
обозначает интерфейс обратной связи. Они не имеют ничего общего с входящим трафиком.
Если клиенту необходимо подключиться к вашему серверу, ему необходимо указать фактический IP-адрес интерфейса, например 192.0.2.40:777
или 203.0.113.150:777
. Таким образом, ваша машина Linux узнает, какой сервер должен обслуживать запрос. (Если клиент попытается подключиться к 127.0.0.1
или 0.0.0.0
, он подключится ких(система, а не ваша.)