@xralf вы можете добавить эту информацию в ваш исходный вопрос? Комментарии похоронены, лучше всего разместить как можно больше информации в ваш вопрос, отредактировав его, Спасибо! @JosephR. - спасибо, ты слишком добра 8-) @Марк: ОП конкретно спрашивает, как это сделать без установки другого приложения. @PeterM я добавлю, что в скобках Если есть договоренность, там будет два года переходный период, чтобы все уладить. Я спрашиваю конкретно про нет-совпадение. Я согласен, что это не имело бы смысла быть кем угодно, но это не гарантирует того, он делает разумные вещи. Например, мой коллега как-то пришла к выводу, что это занимает несколько часов, чтобы добраться из аэропорта Кансай в Киото на поезде, потому что он сделал картах Google по запросу из Великобритании в середине ночи по японскому времени. Это не имеет смысла для Google предположим, что мы хотели знать времена путешествий прямо сейчас, а не в обычное время (это занимает около 80 минут), но Google сделал это все равно.

ТЛ;ДР: на Мохаве (не проверял на других), при создании РДР правила в ПФ, правила работы на некоторое время (некоторые проблемы при доступе к целевой порт напрямую), но через некоторое время эти правила перестают работать, хотя я не могу сделать через pfctl сообщить что-нибудь по-другому таким образом, что делает его очевидным, что они более не применяются.

Я создал /библиотека/LaunchDaemons/Дев.вверх.через pfctl.файл plist:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<!Элемент DOCTYPE plist с общественностью "-//Яблока//ДТД файл plist 1.0//ванной" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist ОС версия="1.0">
<дикт>
<ключ>отключен</ключ>
<ложных/>
<ключ>метка</ключ>
<строка>Дэв.вверх.через pfctl</строка>
<ключ>WorkingDirectory</ключ>
<строка>в/var/выполнения</строка>
<ключ>программы</ключ>
<строка>на/sbin/через pfctl</строка>
<ключ>Аргументы</ключ>
<массив>
<строка>через pfctl</строка>
<строка>-е</строка>
</массив>
<ключ>RunAtLoad</ключ>
<правда/>
</дикт>
</plist в>

...и пути/Library/LaunchDaemons/Дев.вверх.loopbackalias.файл plist:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<!Элемент DOCTYPE plist с общественностью "-//компьютер Apple//DTD с файл plist 1.0//ванной" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist ОС версия="1.0">
<дикт>
<ключ>метка</ключ>
<строка>Дэв.вверх.loopbackalias.файл plist</строка>
<ключ>RunAtLoad</ключ>
<правда/>
<ключ>Аргументы</ключ>
<массив>
<строка>на/sbin/ifconfig, которые</строка>
<строка>назван lo0</строка>
<строка>псевдоним</строка>
<строка>127.0.0.42</строка>
</массив>
</дикт>
</plist в>

Я добавил следующее в файл/etc/ПФ.конф:

# разрешить nginx для привязки на :20080 вместо :80 и :20443 вместо :443.
# Это позволяет нам запустить его как не-root пользователей, и таким образом не требует
# auth, чтобы обновить/перезапустить его.
РДР передать назван lo0 инет прото-TCP с любого порта 127.0.0.42 80 -> порт 127.0.0.42 20080
РДР передать назван lo0 инет прото-TCP с любой 127.0.0.42 порт 443 -> порт 127.0.0.42 20443

...и у меня nginx не работает и привязан к 127.0.0.42:20080 и 127.0.0.42:20443.

Когда я применяю настройки, перезагрузка или запуск через pfctl -F в файл /etc/ПФ.конф, все работает:

$ завиток http://127.0.0.42:80/services/ping
ОК

Однако...

Проблема 1

Хотя это правило является активным, доступ к целевой порт (20080/20443) напрямую имеет некоторые интересные вопросы. Есть задержка в доступе к ней, что, кажется, быстро растет с номером (последние?) доступы:

$ завиток -ы -о времени /dev/нуль http://127.0.0.42:20080/services/ping
(0,2 секунды)
$ завиток -ы -о времени /dev/нуль http://127.0.0.42:20080/services/ping
(1.6 секунд)
$ завиток -ы -о времени /dev/нуль http://127.0.0.42:20080/services/ping
(27 секунд)
$ завиток -ы -о времени /dev/нуль http://127.0.0.42:20080/services/ping
(тайм-аут)

(впрочем, на протяжении, доступ :80—порт перенаправляется на ПФ для :20080—работает и принимает <25 мс.)

Проблема 2

Через некоторое время, правила перенаправления полностью перестает действовать, как если ПФ не включается вообще, или правила не были загружены, но он до сих пор утверждает, включен и я все еще вижу это сообщает ПФ:

$ через pfctl -с нац
Нет поддержки altq в в ядра
Функции, связанные с altq в отключены
нац-якорь "ком.яблоко/*" все
РДР-якорь "ком.яблоко/*" все
РДР передать назван lo0 инет прото-TCP с любого порта 127.0.0.42 = 80 -> порт 127.0.0.42 20080
РДР передать назван lo0 инет прото-TCP с любого порта 127.0.0.42 = 443 -> 127.0.0.42 порт 20443
$ через pfctl -S Инфо | грэп включено
Нет поддержки altq в в ядра
Функции, связанные с altq в отключены
Статус: включен в течение 6 14 дней:56:42 отладки: срочно
$ завиток -с http://127.0.0.42:80/services/ping
завиток: (7) не удалось подключиться к порту 127.0.0.42 80: соединение сброшено
$ завиток -с http://127.0.0.42:20080/services/ping
ОК

Я в состоянии вызвать довольно надежно при отключении от WiFi. Я думаю, скорее всего это происходит только тогда, когда изменения в сети происходят.