IP/ пакетная маршрутизация на основе порта dest - какие-либо советы по использованию PF или написанию NKE?

Надеясь на некоторые подсказки относительно того, какой тип NKE я должен создать. Я ищу, чтобы сделать маршрутизацию пакетов в стиле iproute2 на OS X, или, возможно, я должен сказать "macOS". По умолчанию в macOS команда "route" ограничивается IP-адресом. Я бы хотел, чтобы мои маршруты основывались на портах.

Чтобы расшириться, я нахожусь в корпоративной сети, где разрешены только порты 80 и 443, но есть вторая сеть, которая очень медленная, но допускает весь трафик. Я хотел бы направить весь трафик на 80/443 через более быструю корпоративную сеть, а все остальное - через более медленную сеть, за одним исключением: трафик, который пытается связаться с корпоративной сетью через диапазон ip локальной сети. Я знаю, что в каждом конкретном случае я мог настроить свои приложения для использования определенных интерфейсов поверх других, и я мог бы также использовать прокси-сервер, подключенный к интерфейсу, для "перенаправления" трафика на другой интерфейс, если он совпадает с фильтром, но я В прошлом были проблемы с использованием памяти / диска и локальными прокси.

Так что у меня возникла сумасшедшая идея, поскольку я не могу изменить маршрутизацию macOS по портам, что, если я смогу создать свой собственный виртуальный сетевой интерфейс, который будет находиться на вершине заказа услуг и направлять трафик? Предположительно это означает пересылку пакетов, возможно, воссоздание их, и поэтому я не уверен на 100%, что это лучший подход. В качестве альтернативы я мог бы прослушивать на существующем интерфейсе трафик, который я хочу перенаправить, и просто изменять эти перенаправленные пакеты на другой интерфейс.

Читая документацию NKE, такую ​​как документация NKE на веб-сайте Apple, я нахожусь в том же положении, что и этот неотвеченный плакат в списке рассылки Apple, в котором я пытаюсь выяснить, как "спроектировать собственную маршрутизацию". Приведенные примеры имеют тенденцию фокусироваться на брандмауэрах или переписывании пакетов (например, NAT), а не на переназначении интерфейса для использования. Даже хорошие книги не могут мне помочь.

Если это возможно с PF, я бы хотел сделать это там, потому что не писать расширения ядра безопаснее. Я также знаю о IPNetSentryX, но якобы его срок службы истек, что означает, может быть, он все- таки использовал IPFW? Он говорит, что использовал NKE, поэтому я предполагаю, что это возможно?

Мысли? Я искал Github, но нашел только два репозитория для рутинга сетевого трафика машины, кучу VPN-клонов, использующих код TunTap, и это прочтение при создании расширения для прослушивания рекламы маршрутизатора. К сожалению, нет примеров маршрутизации или изменения интерфейсов для трафика. Мысли?

Обновление 1: проверил документы на PF для BSD 4.3, и у него, похоже, нет того, что нам нужно для маршрутизации. Глядя на страницу справки IPNetRouterX по альтернативным маршрутам, кажется, что я бы хотел использовать фильтр сетевого интерфейса Kext от Apple.

Обновление 2: есть 3 соответствующих доклада от WWDC о разработке Kext, по крайней мере, тех, которые онлайн примерно с 2010 года:

  • Драйверы для устройств ввода-вывода WWDC 2010 Session 203 для Mac OS X
  • Сессия WWDC 2013. Что нового в Kext Development (последняя треть охватывает новые флаги отладки и изменения в 10.9)
  • WWDC 2015, сессия 706 " Безопасность и ваши приложения" (в которой кратко упоминается кекс)

Учитывая, как много работы требуется для поддержки второй виртуальной машины для тестирования kexts, я не уверен, что хочу пройти через это в kext. В Linux это всего лишь одна или две строки с инструментами iproute2 для пользователя, но в Mac это невозможно без разработки ядра. Это в основном первый раз, когда меня раздражает мой выбор OS X вместо Linux на настольном компьютере.

Тем не менее, если у кого-нибудь есть какая-либо kext сетевая маршрутизация на указателях разработки macOS, я весь в ушах. Это может сделать веселый проект выходного дня, просто чтобы посмотреть, смогу ли я это сделать.

0 ответов

Другие вопросы по тегам