Проследяване на TPROXY пакет до сокета
Проверете приемащия сокет, маркера на пакета и локалния маршрут на политиката като единен път на доставка през прозрачен прокси.
Броячът на TPROXY може да расте, докато приложението не получава нищо. Правилото е съвпаднало, но локалната доставка все още зависи от маршрутизацията на политиката и от съвместим приемащ сокет.
Linux TPROXY може да прихваща трафик, без да пренаписва дестинацията, както прави DNAT. Затова пакетите, адресирани до нелокална дестинация, трябва да достигат до подходящ локален сокет.
Проследете пътя на доставка
- Трафикът достига до хоста за прихващане по предвидения интерфейс и семейство адреси.
- Правилото за прихващане и маркерът на пакета определят политиката за локална доставка.
- Съвпадащо правило на политиката избира маршрут, който доставя пакетите локално.
- Проксито използва поддържан прозрачен слушател с необходимата опция на сокета.
Примерът за IPv4 в ядрото изисква поддръжка от приложението за IP_TRANSPARENT. Обикновен слушател на същия порт или глобална настройка за нелокално свързване не доказват такава поддръжка.
| Наблюдение | Следваща проверка |
|---|---|
| Няма подходящи входящи пакети | Път на трафика и входен интерфейс |
| Пакетите пристигат; броячът на прихващане не мърда | Семейство адреси, верига и условия за съвпадение |
| Правилото съвпада; локалната доставка се проваля | Маркер и избор на маршрут по политика |
| Сокетът слуша; приложението не вижда нищо | Възможности на прозрачния сокет и собственик на слушателя |
| Заявката започва; следващите отговори се провалят | Съвпадение на установен сокет и обратни маршрути |
Пазете заредената конфигурация и мрежовото пространство от имена при всяко наблюдение. По-късно правило може да презапише маркер или да избере друг маршрут. Ако прихващането е на хоста, а слушателят работи в контейнер, валиден локален за хоста маршрут не доставя автоматично в този контейнер.
Отчетете по-късните пакети
Примерът за ядрото включва съвпадение на сокет и път DIVERT, който маркира пакетите на прозрачните сокети. Пропускането му може да остави по-късния трафик на друг път, дори когато първоначалното прихващане успее.
Използвайте поддържания от приложението прозрачен режим и съответната документация на ядрото за всяко семейство адреси. Командата за локален маршрут при IPv4 не конфигурира IPv6 и поддръжката в едно семейство не доказва поведението на сокета в другото.
TPROXY също не генерира SOCKS преговори. Компонентът от прозрачен към SOCKS все пак трябва да открие дестинацията и да преговаря с upstream сървъра си.
Преминаване от REDIRECT
Запишете как съществуващото приложение получава оригиналната дестинация. REDIRECT променя дестинацията и разчита на подходящия механизъм за възстановяване; TPROXY се нуждае от своя прозрачен сокет и маршрутна уредба. Избирайте според приложението и политиката за адрес на източника.
Свържете броячите с избрания маршрут, възможностите на сокета и журнала на приложението, преди да сменяте режимите на прихващане. При дистрибуция с необходимите средства липсваща стъпка на доставка е по-добра отправна точка от прекомпилиране на ядрото.