Броячът на TPROXY може да расте, докато приложението не получава нищо. Правилото е съвпаднало, но локалната доставка все още зависи от маршрутизацията на политиката и от съвместим приемащ сокет.

Linux TPROXY може да прихваща трафик, без да пренаписва дестинацията, както прави DNAT. Затова пакетите, адресирани до нелокална дестинация, трябва да достигат до подходящ локален сокет.

Проследете пътя на доставка

  1. Трафикът достига до хоста за прихващане по предвидения интерфейс и семейство адреси.
  2. Правилото за прихващане и маркерът на пакета определят политиката за локална доставка.
  3. Съвпадащо правило на политиката избира маршрут, който доставя пакетите локално.
  4. Проксито използва поддържан прозрачен слушател с необходимата опция на сокета.

Примерът за IPv4 в ядрото изисква поддръжка от приложението за IP_TRANSPARENT. Обикновен слушател на същия порт или глобална настройка за нелокално свързване не доказват такава поддръжка.

НаблюдениеСледваща проверка
Няма подходящи входящи пакетиПът на трафика и входен интерфейс
Пакетите пристигат; броячът на прихващане не мърдаСемейство адреси, верига и условия за съвпадение
Правилото съвпада; локалната доставка се проваляМаркер и избор на маршрут по политика
Сокетът слуша; приложението не вижда нищоВъзможности на прозрачния сокет и собственик на слушателя
Заявката започва; следващите отговори се провалятСъвпадение на установен сокет и обратни маршрути

Пазете заредената конфигурация и мрежовото пространство от имена при всяко наблюдение. По-късно правило може да презапише маркер или да избере друг маршрут. Ако прихващането е на хоста, а слушателят работи в контейнер, валиден локален за хоста маршрут не доставя автоматично в този контейнер.

Отчетете по-късните пакети

Примерът за ядрото включва съвпадение на сокет и път DIVERT, който маркира пакетите на прозрачните сокети. Пропускането му може да остави по-късния трафик на друг път, дори когато първоначалното прихващане успее.

Използвайте поддържания от приложението прозрачен режим и съответната документация на ядрото за всяко семейство адреси. Командата за локален маршрут при IPv4 не конфигурира IPv6 и поддръжката в едно семейство не доказва поведението на сокета в другото.

TPROXY също не генерира SOCKS преговори. Компонентът от прозрачен към SOCKS все пак трябва да открие дестинацията и да преговаря с upstream сървъра си.

Преминаване от REDIRECT

Запишете как съществуващото приложение получава оригиналната дестинация. REDIRECT променя дестинацията и разчита на подходящия механизъм за възстановяване; TPROXY се нуждае от своя прозрачен сокет и маршрутна уредба. Избирайте според приложението и политиката за адрес на източника.

Свържете броячите с избрания маршрут, възможностите на сокета и журнала на приложението, преди да сменяте режимите на прихващане. При дистрибуция с необходимите средства липсваща стъпка на доставка е по-добра отправна точка от прекомпилиране на ядрото.

Подобни статии