Краткая версия:
Как перенаправить весь трафик с порта 80/443 en2 на 127.0.0.1:8080, если я включил общий доступ к Интернету в OS X Mountain Lion (10.8)?
Немного фона:
Я работаю над магистерской диссертацией, в которой буду оценивать коммуникационную безопасность для различных приложений для смартфонов. Я решил использовать свой новый MacBook Air в качестве маршрутизатора.
Я подключил свой Air к Интернету с помощью USB Ethernet и настроил общий доступ к Интернету для своего Wi-Fi. Это прекрасно работает. Я могу подключить другие устройства к своему Air через Wi-Fi и получить доступ к Интернету. Большой!
Теперь я хочу перехватить этот трафик и модифицировать его на лету. Я решил, что для этого мне нужен прокси-сервер, но мне нужен прозрачный, где мне не нужно выполнять какие-либо настройки на устройстве. Я обнаружил, что mitmproxy предлагает именно эти функции. Итак, он работает на 127.0.0.1:8080 и готов к перехвату трафика.
К сожалению, я застрял, пытаясь перенаправить трафик, поступающий от Wi-Fi (en2) через порты 80 и 443, на 127.0.0.1:8080. Документы mitmproxy предлагают конфигурацию для pfctl, но она не работает. Я заметил, что Apple предоставила некоторую конфигурацию для общего доступа к Интернету, включив NAT. Поэтому, если я не использую их конфигурацию, общий доступ к Интернету перестанет работать. И когда я пытаюсь добавить строки rdr в их конфиг, это не действует (пробовал несколько мест в файле /etc/pf.conf). Мой трафик просто проходит в интернет, минуя mitmproxy.
Я нашел ответ.
Я загрузил свои правила как часть привязки com.apple/100.InternetSharing/natpmp
, которая используется для общего доступа к Интернету.
В файле mitm.pf.conf
есть правила:
rdr on bridge0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr on bridge0 proto tcp from any to any port 443 -> 127.0.0.1 port 8080`
Загрузите его с помощью якоря общего доступа к Интернету:
sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
В аналогичной ситуации я использовал брандмауэр для перенаправления трафика с одной сетевой карты на прокси. Вы можете использовать что-то вроде этого:
$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 80 in via en1
$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 443 in via en1
Если бы у меня работало нормально.
Вы также можете использовать бесплатную программу WaterRoof в качестве графического интерфейса для настройки брандмауэра. Он ничего не добавляет к команде ipsw, он просто упрощает доступ ко всем параметрам.
Эта страница очень помогла мне в настройке моей конфигурации:
Кристофер Рейджер
Брэди