Использование PacketFilter для прозрачного прокси-пакета в OS X
Существует крутая утилита, называемая sshuttle (https://github.com/apenwarr/sshuttle). Это зависело от ipfw для пересылки пакетов в прошлом. Похоже, что ipfw в основном разбит в Mavericks, и совет заключается в использовании PacketFilter для этого сейчас.
Я провел большую часть дня, глядя на PacketFilter, и кажется, что ipfw имеет функцию, которую PacketFilter не поддерживает (надеюсь, что я ошибаюсь в этом).
Следующее правило:
ipfw -q add 12300 fwd 127.0.0.1,12300 tcp from any to any not ipttl 42 keep-state setup
отправит весь трафик на 127.0.0.1 (localhost) порт 12300. Однако он не изменяет IP-адрес или порт назначения в пакете TCP. Это важно для sshuttle, поскольку он использует информацию об исходном адресате для пересылки пакета в другую сеть.
Самое близкое правило, которое я могу найти в мире PacketFilter:
rdr pass proto tcp from any to any -> 127.0.0.1 port 12300
Это правило отправляет трафик на 127.0.0.1 (localhost) порт 12300, но также перезаписывает адрес назначения 127.0.0.1.
Любые идеи о том, как получить поведение sshuttle в OS X?