Как получить петлевые адреса, отличные от 127.0.0.1, для работы в OS X

В соответствии со всем, что я прочитал, вся подсеть 127.xxx должна быть зацикленной.

Однако на моем Mac я могу пинговать только 127.0.0.1

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

3 ответа

Решение

Вот краткий ответ: 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 для обратной связи, но никакие адреса в этом блоке никогда не должны появляться ни в одной сети.

Для тех, кто заинтересован, вот небольшой скрипт 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 anwser и этой статьи:

  1. Добавьте скрипт псевдонима localhost:
      $ sudo touch /usr/local/bin/localhost_alias
$ sudo chmod +x /usr/local/bin/localhost_alias
  1. содержимое localhost_alias:
      #!/usr/bin/env bash

from=${1}
to=${2}

if [[ -z "$from" || -z "$to" ]]; then
  echo "Usage: $(basename "$0") 2-255 2-255 [from and to range numbers (127.0.0.[from-to])]"
  exit 0
fi 

for ((i=from;i<=to;i++))
do
    ifconfig lo0 alias 127.0.0.$i up
done
  1. добавить описание демона автозапуска:
      $ sudo touch /Library/LaunchDaemons/org.localhost.alias.plist
  1. Содержимое org.localhost.alias.plist:
      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.localhost.alias</string>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/localhost_alias</string>
      <string>2</string>
      <string>8</string>
    </array>
</dict>
</plist>
  1. И у нас есть127.0.0.2-127.0.0.8псевдонимы при загрузке

Вы можете запустить демон после создания этих файлов без перезагрузки, выполнив

      sudo launchctl load /Library/LaunchDaemons/org.localhost.alias.plist

Протестировано на MacOS Mojave.

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