Описание тега long-haul
Прежде чем ответить на ваш вопрос, Позвольте мне дать некоторую справочную информацию для тех, кто незнаком с переадресации портов на macOS: внутрипортовое экспедирование включает в себя замену адреса назначения и порта входящих пакетов для переадресации соединения на разные хосты и/или портов. в macOS обеспечивает перенаправление портов путем применения РДР
(перенаправление) правила фильтра пакетов устройства в/dev/ПФ
. Например, это правило:
РДР передать инет прото-TCP с любого порта 213.32.64.5 80 -> 8080 порт 10.4.1.2
перенаправляет входящие пакеты IPv4 отправили в 213.32.64.5:80
в 10.4.1.2:8080
(на пропуск
сайта предотвращает перенаправление пакетов заблокирован фильтр правилам, см. здесь для получения дополнительной информации). Чтобы применить правило, можно использовать через pfctl
или изменить файл/etc/ПФ.конф
, как описано здесь. Для получения более подробной информации о РДР
правила, увидеть человека в ПФ.конф
.
Теперь на ваш вопрос:
Как мне настроить проброс портов таким образом, что оба на localhost:8080 и localhost будет отправлять запросы на мой локальный сервер?
Чтобы иметь возможность получить доступ к исходной и перенаправленный порт надежно, необходимо исключить адрес назначения и порт (127.0.0.1:8080) из перенаправляется:
Эхо-нет РДР инет прото-TCP с 127.0.0.1 порт 8080
РДР инет прото-TCP с любого на 127.0.0.1 порт 80 -> 127.0.0.1 порт 8080
'| судо через pfctl -эф -
(Проверено на чистой установки высокого 10.13.6 и macOS Сьерра.)
Команда выше будет перезаписать все существующие правила, поэтому я рекомендую его только для тестирования. Вы можете перезагрузить ваш Mac по умолчанию для правил фильтра пакетов с судо через pfctl -F все -эф /и т. д./ПФ.конф
и добавить правила:
нет РДР инет прото-TCP с 127.0.0.1 порт 8080
РДР инет прото-TCP с любого на 127.0.0.1 порт 80 -> 127.0.0.1 порт 8080
для ПФ.конф
как описано здесь.
Я следовал инструкциям в этом ответе , чтобы пробросить порт 8080 на 80 на мой Mac. Это работает хорошо, за исключением того, что я не могу больше доступ к http://localhost:8080 явно через хром (он никогда не реагирует).
Этот комментарий на Сэл Ferrarello блоге описывает подобное поведение. Я был в состоянии воспроизвести его, но в моих тестах на подключение к порту 8080 работал с перебоями, или точнее: я мог бы загрузить http://127.0.0.1:8080но после первого подключения, нажатие на любую ссылку на сайте истекло. Спустя некоторое время, однако, мне удалось вновь подключить, просто опыт в любых последующих подключений то же время ожидания как и раньше.
Мне пришлось сделать достаточно много пакетов, я хотел бы поделиться команд я использовал для входа пакеты, соответствующие ор
правила (вот что значит войти
параметра ниже) с помощью "pflog0" псевдо-устройства (см. pflog с мужчиной
и мужчина ПФ.конф
для деталей):
Эхо-нет РДР журнала инет прото-TCP с 127.0.0.1 порт 8080
РДР инет журнала прото-TCP с любого на 127.0.0.1 порт 80 -> 127.0.0.1 порт 8080
'| судо через pfctl -эф -
судо команду ifconfig pflog0 создать
судо тсрйитр -х -н-е -я pflog0