Я провожу тестирование веб-приложения на удобство использования и пытаюсь отлаживать и записывать некоторые сеансы 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 (продолжение ...)