Как получить петлевые адреса, отличные от 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.

elliotbetancourt
источник

Ответы:

73

Вот краткий ответ: 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
Laurent
источник
Я читаю это неправильно? То, что вы создали, похоже, что оно делает все адреса от 127.0.0.1 до 127.0.0.255. Если вы измените «псевдоним sudo ifconfig lo0 127.0.0. $ I up» на «sudo ifconfig lo0 alias 127. $ i. $ I. $ I up», это сделает вас правыми? Однако вы бы пропустили все, что меньше 2 ... Так что, возможно, использовать другую переменную для двух других октетов? Самый высокий IP-адрес для обратной связи - 127.255.255.255
Эверетт
1
@Everett, вы правильно прочитали, он работает только с адресами 127.0.0. *. Причина, по которой я не охватил весь диапазон, заключается в том, что он обрабатывает даже 255 адресов довольно медленно, поэтому 255x255x255 займет слишком много времени.
Лоран
1
Спасибо. Я просто хотел убедиться, что ожидание было установлено, потому что кто-то придет сюда и скажет: «Эй, это не сработало для 127.7.53.91». Я бы не стал этого делать, но кто-то сделает ...
Эверетт
2
На самом деле, предложение @ Everett также не сработает, поскольку оно разрешит только адреса, такие как 127.7.7.7 или 127.42.42.42, то есть все те, у которых три последние цифры равны. Вам потребуется три отдельных цикла, чтобы фактически включить все IP-адреса в блоке 127/8. Однако делать это, безусловно, не будет хорошей идеей: весьма вероятно, учитывая, что каждый IP-адрес должен быть включен отдельно, что к каждому назначенному IP-адресу подключены некоторые ресурсы; выделение примерно 17,7 миллионов IP-адресов (то есть 256 ^ 3) может иметь некоторые существенные последствия ...
jwatkins
2
@jwatkins Итог: включите их, только если они вам нужны, что на самом деле является практическим правилом для всего.
Уильям Т. Фроггард