Як змусити адреси, відмінні від 127.0.0.1, працювати на OS X


55

Відповідно до всього, що я прочитав, вся підмережа 127.xxx повинна мати зворотний зв'язок.

Однак на моєму Mac я можу пінг лише 127.0.0.1

Я знаю, що я робив це раніше (хоча можливо в іншій ОС) і став дуже корисним для розробки декількох SSL-сайтів на місцях і для тунелювання віддалених служб для доступу до локального IP (наприклад, я міг стати ssh на свій сервер MySQL, і просто перенесіть стандартний порт на той же порт на моїй локальній машині, але на 127.0.0.2, а мій локальний сервер працював на 127.0.0.1.

Відповіді:


72

Ось коротка відповідь: sudo ifconfig lo0 alias 127.0.0.* up

Кожен псевдонім повинен бути доданий окремо ( sudo ifconfig lo0 alias 127.0.0.2 up, sudo ifconfig lo0 alias 127.0.0.3 up). Це можна зробити вручну для тестування, або підмножина або повний список інших 250 доступних номерів у цій підмережі можуть бути внесені в сценарій StartupItems, який буде робити це автоматично в момент завантаження.

Довга відповідь: Відповідно до RFC3330, 127.0.0.0/8 - Цей блок призначений для використання в якості адреси зворотного зв'язку з хостом в Інтернеті. Діаграма, що надсилається протоколом вищого рівня на адресу в будь-якій точці цього блоку, повинна повернутися назад до хоста. Зазвичай це реалізується, використовуючи лише 127.0.0.1/32 для зворотного зв'язку, але жодна адреса в цьому блоці ніколи не повинна з’являтися в будь-якій мережі.


4
Якби тільки існував спосіб змусити це працювати за 127 рік. *. *. *
Метью Шинкель

Якщо виявиться, що це також працює на CentOS, ви, сер, отримуєте від мене щедрість.
Парфянський розстріл

Насправді, в будь-якому випадку ви отримуєте щедрість. Оскільки це не працює для CentOS, я просто запитаю і відповім на це питання, як тільки я дізнаюся відповідь.
Парфянський розстріл

Як я налаштував 4 сервери на порт 8, використовуючи різні адреси зворотного зв'язку на debian9 Gnu / Linux superuser.com/a/1255308/62123
ctrl-alt-delor

12

Для тих, хто цікавиться, ось невеликий сценарій bash, який додає всі псевдоніми для IP-адрес 127.0.0. *:

#!/bin/bash
for ((i=2;i<256;i++))
do
    sudo ifconfig lo0 alias 127.0.0.$i up
done

Чи читаю я це неправильно? Те, що ви створили, виглядає так, що воно має всі адреси від 127.0.0.1 до 127.0.0.255. Якщо ви зміните "sudo ifconfig lo0 псевдонім 127.0.0. $ I up" на "sudo ifconfig lo0 псевдонім 127. $ i. $ I. $ I up", це допоможе вам отримати більшість з них правильно? Однак ви б пропустили все, що менше 2 .. Тож, можливо, використовуйте іншу змінну для інших двох октетів? Найвища IP-адреса для зворотного зв'язку - 127.255.255.255
Everett

1
@Everett, ви правильно це прочитали, він робить лише адреси 127.0.0. *. Причина, що я не охопив весь діапазон, полягає в тому, що обробляти навіть 255 адреси насправді досить повільно, тому 255x255x255 буде зайняти занадто довго.
Лоран

1
Дякую. Я просто хотів переконатися, що очікування встановлено, тому що хтось прийде сюди і скаже: "Ей, це не спрацювало за 127.7.53.91". Я б цього не робив, але хтось зробить ...
Еверетт

2
Насправді, пропозиція @ Еверетта також не спрацювала, оскільки вона дозволила б отримати адреси, такі як 127.7.7.7 або 127.42.42.42, тобто всі ті, хто має три останні цифри, дорівнюють. Вам потрібно три чіткі петлі, щоб фактично включити всі IP-адреси в блоці 127/8. Однак це, звичайно, не було б гарною ідеєю: велика ймовірність, враховуючи, що кожен ІС повинен бути включений окремо, що до кожного призначеного ІС є додаткові ресурси; виділення приблизно 17,7 мільйонів IP-адрес (тобто 256 ^ 3) може виявитись суттєвими наслідками ...
jwatkins

2
Підсумок @jwatkins: Увімкніть їх лише в тому випадку, якщо вони вам потрібні, що є правилом для всього, насправді.
Вільям Т Фроггард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.