Для чего нужен IP-адрес 127.0.0.2?

Я запускаю пример в hiredis, который использует "127.0.0.2" в качестве IP-адреса сервера Redis, и он работает правильно. На самом деле, сервер Redis работает на той же машине. Я знаю, что "127.0.0.1" - это IP-адрес "lo", но как насчет "127.0.0.2"? Это так же, как "127.0.0.1"?

3 ответа

Да:

Стандарты сети IPv4 резервируют весь адресный блок 127.0.0.0/8 для целей обратной связи. Это означает, что любой пакет, отправленный на один из этих 16 777 214 адресов (с 127.0.0.1 по 127.255.255.254), возвращается обратно. IPv6 имеет только один адрес:::1.

Для этой цели в различных стандартах IETF зарезервирован блок адресов IPv4 127.0.0.0/8 в нотации CIDR и адрес IPv6::1. Наиболее часто используемый адрес IPv4 - 127.0.0.1. Обычно эти петлевые адреса отображаются на имена хостов, localhost или loopback.

или из самого RFC:

127.0.0.0/8 - этот блок назначен для использования в качестве петлевого адреса узла Интернета. Датаграмма, отправленная протоколом более высокого уровня на адрес в любом месте этого блока, должна вернуться обратно в хост. Обычно это реализуется с использованием только 127.0.0.1/32 для обратной связи, но никакие адреса в этом блоке никогда не должны появляться ни в одной сети [RFC1700, стр. 5].

Для развлечения попробуйте пинговать:

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms
  • "Являются все 127.x.x.x адреса ограничены локальной машиной? "Да
  • "Являются все 127.x.x.x адреса, связанные с lo интерфейс "Да
  • "Являются 127.x.x.x адреса маршрутизируются по сети? "Нет

127.0.0.0/8 - этот блок назначен для использования в качестве петлевого адреса узла Интернета. Датаграмма, отправленная протоколом более высокого уровня
адрес в любом месте в этом блоке возвращается внутри хоста. это
обычно реализуется с использованием только 127.0.0.1/32 для обратной петли. Как
описанные в [RFC1122], раздел 3.2.1.3, адреса в пределах всего блока 127.0.0.0/8 нигде законно не появляются ни в одной сети. - RFC5735

  • "Является 127.0.0.2 такой же как 127.0.0.1? " НЕТ

В то время как 127.0.0.1 в 127.255.255.254 все ли локальные адреса привязаны к интерфейсу lo, Они не то же самое. Вы можете использовать каждый адрес для привязки разных сервисов к одному и тому же порту. Например, 16 миллионов веб-серверов на порту 80, доступные только с локального компьютера (если у вас не хватает памяти или других ресурсов в первую очередь)

Я только что настроил службу докера для привязки к 127.0.0.2:80, Затем я добавил псевдоним /etc/hosts, Теперь я могу подключиться к нему через http://myserver, но не через http://127.0.0.1 или же http://localhost, Однако это доступно только для этой машины. Как это только на lo интерфейс.

Затем я настроил другую службу докера для привязки к 127.0.0.3:80и служба Python на localhost:80 и еще один на 127.0.0.4:80,


Это может не работать на всех операционных системах. Я использую Debian(9) Gnu/Linux, ядро ​​Linux 4.9.0-3-amd64. Некоторые ОС могут обрабатывать все адреса 127.0.0.1127.255.255.254 тот же самый. Некоторые могут работать только с 127.0.0.1,

смотрите также

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

Выдержка:

Оператор попытался протестировать некоторое программное обеспечение в случае, когда его соединение с сервером было отклонено. Это было сделано на сервере временным iptables Правило, которое отклоняет весь трафик с IP-адреса клиента. Клиент сразу же смог "увидеть", что соединение было отклонено.

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

Решение было использовать 127.0.0.2 в качестве адреса сервера и установить правило, которое отклоняет подключения к нему. Информация об отказе пошла в 127.0.0.1 и смог передать клиенту программное обеспечение.

Другие вопросы по тегам