Для чого це 127.0.0.2 IP-адреса?


39

Я запускаю приклад в hiredis, який використовує "127.0.0.2" як IP сервера redis, і він працює належним чином. Насправді сервер redis працює на одній машині. Я знаю, що "127.0.0.1" - це IP-адреса "lo", а як щодо "127.0.0.2"? Це те саме, що і "127.0.0.1"?

Відповіді:


37

Так:

Мережеві стандарти IPv4 резервують весь блок адрес 127.0.0.0/8 для цілей зворотного зв'язку. Це означає, що будь-який пакет, надісланий на одну з цих 16 777 214 адрес (від 127.0.0.1 до 127.255.255.254), є петлею назад. IPv6 має лише одну адресу: 1.

Різні стандарти цільової групи Internet Engineering (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.0.0.1 до 127.255.255.254 відображена на ній", що надає суть цієї відповіді прямому конфлікту з Вікіпедією.
SilverSkin

6
@SilverSkin Ви б не хотіли пояснити, що ви маєте на увазі? Єдина відмінність між відповіддю та тим, що зараз у Вікіпедії, полягає в тому, що вони (правильно) виключили 127.0.0.0 та 127.255.255.255, які є мережевими / широкомовними адресами. Суть ще однакова - 127.xxx == 127.0.0.1 (за винятком 127.0.0.0 та 127.255.255.255, що очікується в будь-якій мережі / 8).
icyrock.com

1
Тож немає різниці між прив’язкою до 127.0.0.1 проти прив’язкою до 127.0.0.124? То чому ж найманий персонал турбує 127.0.0.2, якщо це точно однакова адреса? Що також станеться, якщо ви надіслали повідомлення на 127.0.0.0?
CMCDragonkai

7
Потрібно відзначити, що це не те саме в OS X, яка лише 127.0.0.1 прямує до петлі. Дивіться тут .
Венбінг Лі

6
@CMCDragonkai 127.0.0.1 і 127.0.0.124 можуть знаходитися на одному інтерфейсі, але вони не однакові. Можна використовувати нечастий ip, наприклад, 127.0.0.2, якщо хочеться скористатися налаштованою службою на загальному порту і не заважати іншим службам, які можуть слухати цей самий порт на 127.0.0.1
Кіт Рейнольдс

6
  • "Чи всі 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.

Дивись також



На це мені знадобилося близько години, але я зміг нарешті зрозуміти, що ти намагався передати. Я оновив цитату зі статті Вікіпедії у прийнятій відповіді. Оскільки цитоване твердження протягом багатьох років змінювалося, я цитував інше твердження, щоб відновити цю оригінальну інформацію, яку містила відповідь.
Рамхаунд

1

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

Витяг:

ОП там намагалася перевірити деяке програмне забезпечення у випадку, коли його з'єднання з сервером було відхилено. Це було зроблено на сервері тимчасовим iptablesправилом, яке відхиляє весь трафік від IP-адреси клієнта. Клієнт одразу зміг "побачити", що з'єднання було відхилено.

Проблема з’явилася, коли ця людина перемістила серверне програмне забезпечення на ту ж машину, що і клієнт, і намагалася використовувати інтерфейс зворотного зв'язку. Правило було встановлено для блокування зв'язку, 127.0.0.1але інформацію, від якої було підключено з'єднання, було застосовано те саме правило, і він ніколи не потрапляв до клієнтського програмного забезпечення, яке повісилося (імовірно, до вичерпання).

Рішення полягало в тому, щоб використовувати 127.0.0.2як адресу сервера і встановити правило, яке відхиляє з'єднання з ним. Інформація про відмову перейшла до 127.0.0.1клієнтського програмного забезпечення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.