Как получить петлевые адреса, отличные от 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 и этой статьи:
- Добавьте скрипт псевдонима localhost:
$ sudo touch /usr/local/bin/localhost_alias
$ sudo chmod +x /usr/local/bin/localhost_alias
- содержимое 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
- добавить описание демона автозапуска:
$ sudo touch /Library/LaunchDaemons/org.localhost.alias.plist
- Содержимое 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>
- И у нас есть
127.0.0.2
-127.0.0.8
псевдонимы при загрузке
Вы можете запустить демон после создания этих файлов без перезагрузки, выполнив
sudo launchctl load /Library/LaunchDaemons/org.localhost.alias.plist
Протестировано на MacOS Mojave.