Как добавить правило iptables для определенного события (HTTP/1.1 302 Найдено)

Маршрутизатор My Tomato имеет два интерфейса Eth0 - прямое соединение Tun1 - vpn

Иногда некоторые веб-сайты возвращают "HTTP/1.1 302 Found", и когда это происходит, я хочу добавить правило iptables для использования Tun1 вместо Eth0 для этого конкретного IP-адреса.

Я не могу понять, как отловить ответ "HTTP/1.1 302 Found" на маршрутизаторе и как использовать его в качестве триггера для правила IPTABLES. Должен ли я иметь tcpdump 24\7 или есть лучшие способы? Любой вклад будет по достоинству оценен. Благодарю.

1 ответ

Я сомневаюсь, что есть что-нибудь готовое для реализации такого поведения.

Для этого вам необходимо учесть следующие моменты:

  1. Это возможно только для HTTP-соединений, так как для этого требуется иметь возможность читать текстовые версии данных. В HTTPS данные зашифрованы.
  2. Нужно иметь механизм, который читает трафик и реализует разбор протокола HTTP и выясняет место назначения из Location HTTP заголовок.
  3. Нужно разобрать URL, чтобы извлечь домен из Location заголовок, а затем выполните поиск IP-адреса для этого домена.
  4. Нужно добавить правило IPTables NAT для IP-адреса, найденного в шаге 3, в таблицы брандмауэра ядра.

В заключение, для реализации этой функции потребуется много различных компонентов, и я не думаю, что никто не реализовал ее.

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