Назад | Перейти на главную страницу

Включение pf для прозрачного прокси в Mac OS X Mountain Lion

Я провожу тестирование веб-приложения на удобство использования и пытаюсь отлаживать и записывать некоторые сеансы SSL, используя mitmproxy как прозрачный прокси и по какой-то причине pf в Mac OS X Mountain Lion не настраивает прозрачные перенаправления.

Сначала включаю пересылку:

sudo sysctl -w net.inet.ip.forwarding=1

Далее я создаю простой pf.conf файл с единственной строчкой:

rdr on {en1, en0} inet proto tcp to any port {80, 443} -> 192.168.1.40 port 3128

Где 192.168.1.40 - это удаленный хост, который в настоящее время работает mitmproxy и en1 и en2 являются основными исходящими интерфейсами на Mac.

Наконец я запускаю pf с помощью следующих команд:

sudo pfctl -vf pf.conf
sudo pfctl -e

Однако ничего не происходит. Когда я перечисляю текущие правила для pf с участием pfctl -sr он ничего не показывает.

Я подтвердил это pf может работать на машине, задав ему фиктивное правило, которое блокирует весь исходящий доступ к порту 80 и которое работает.

Любые подсказки о том, что еще мне нужно сделать, чтобы включить pf перенаправить веб-трафик на прозрачный прокси в Mac OS X Mountain Lion?

Ты пробовал net.inet.ip.scopedroute=0? Из http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/:

Сейчас, если вы закончите эту настройку, вы заметите, что на самом деле ничего не работает. Причиной этого является ошибка в ядре OS X, которая требует сброса флага net.inet.ip.scopedroute на 0. Я не совсем уверен, что он делает, но Интернет сообщает, что он нарушает совместное использование сети через настройки пользователя. В любом случае он исправляет перенаправление на основе ipfw, поэтому вы можете перевернуть его с помощью sysctl:

$ sudo sysctl -w net.inet.ip.scopedroute=0

К сожалению, в OS X Lion этот флаг фактически нельзя перевернуть из пользовательского пространства, поэтому вам нужно установить его как параметр загрузки, а затем перезагрузить компьютер. Вы можете сделать это, отредактировав файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plist (продолжение ...)