2013-12-06 3 views
8

Я пытаюсь настроить прозрачный прокси-сервер на моем Mac OS X Lion (10.7.5), поэтому я могу использовать mitmproxy (для перехвата трафика SSL из приложений Android). Я последовал за шагами в mitmproxy docs for setting up port forwarding with pf on Mac OS X, и все они прошли без каких-либо ошибок:Не удается настроить переадресацию портов для прозрачного прокси-сервера на Mac OS X

$ sudo sysctl -w net.inet.ip.forwarding=1 
Password: 
net.inet.ip.forwarding: 0 -> 1 

$ sudo pfctl -f pf.conf 
No ALTQ support in kernel 
ALTQ related functions disabled 

$ sudo pfctl -e 
No ALTQ support in kernel 
ALTQ related functions disabled 
pf enabled 

Но это, кажется, не имели никакого эффекта. Когда я перехожу на веб-сайты в своем браузере, он делает прямой запрос и не проходит через указанный мной порт. Вот pf.conf файл (en1 мой Wi-Fi):

rdr on en1 inet proto tcp to any port 80 -> 127.0.0.1 port 4500 
rdr on en1 inet proto tcp to any port 443 -> 127.0.0.1 port 4500 
+0

Вы настроили ваше клиентское устройство на использование хоста вашего прокси в качестве шлюза по умолчанию? – Tomer

ответ

2

Спасибо за остановку на канале IRC сегодня. Я проследил это, и основная проблема заключается в том, что правила rdr применяются к входящему трафику. Это означает, что они НЕ будут перенаправлять трафик, поступающий из самого окна. Если вы думаете об этом, это неизбежно: мы не можем отличить исходящее соединение от приложения non-mitmproxy и исходящее соединение от самого mitmproxy. Мы можем использовать route-to для отправки трафика на lo0, а затем перенаправить его, но это вызывает бесконечный цикл, когда собственные исходящие соединения mitmproxy также перенаправляются обратно в mitmproxy.

Поскольку я знаю немного о вашем случае использования, я бы предложил изучить способы сделать это с помощью VirtualBox. Планом атаки было бы установить сеть VirtualBox в режиме моста, а затем использовать правило pf с совпадением на исходном адресе для перенаправления трафика на mitmproxy. Это должно делать то, что вы хотите, а не вызывать сингулярности во времени и пространстве из-за бесконечного перенаправления.

Пожалуйста, снова пропустите канал IRC, если вам нужна дополнительная рука.

+0

Похоже, что было бы проще просто использовать мой реальный телефон Android (используя передачу файлов USB для загрузки сертификата mitmproxy), а не симулятор? – babonk

+0

Да, это более распространенный случай использования, и ваша текущая настройка должна «просто работать». – cortesi

+0

У меня такая же точная проблема. Тем не менее, я использую мой реальный телефон и мой митмопрокси не набирает никакого трафика вообще – Cripto

0

Вы используете порт 4500 вместо порта по умолчанию 8080. ли вы начать mitmproxy спецификации порта ?: mitmproxy -T --host -p 4500

Вы выполните следующие действия, чтобы установить сертификат в Android-устройство? http://mitmproxy.org/doc/certinstall/android.html

Другой проблемой может быть шлюз на вашем телефоне Android: Предпочтения - Wi-Fi - Удерживайте в сети, которую вы используете - Изменить сеть - Дополнительные параметры - Установите в качестве шлюза ip вашего устройства с помощью mitmproxy.

Кстати, у меня есть то же предупреждение с функцией ALTQ, но оно работает.

2

Вы попробовали 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 (продолжение ...)

Смежные вопросы