Адсочванне пакета TPROXY аж да сокета
Праверце прымальны сокет, пазнаку пакета і лакальны маршрут палітыкі як адзін шлях дастаўкі праз празрысты проксі.
Лічыльнік TPROXY можа расці, а праграма пры гэтым нічога не атрымлівае. Правіла супала, але лакальная дастаўка ўсё яшчэ залежыць ад маршрутызацыі палітыкі і сумяшчальнага прымальнага сокета.
Linux TPROXY можа перахопліваць трафік, не перапісваючы прызначэнне, як гэта робіць DNAT. Таму пакеты, адрасаваныя нелакальнаму прызначэнню, павінны дасягаць прыдатнага лакальнага сокета.
Прасочыце шлях дастаўкі
- Трафік дасягае хоста перахопу праз патрэбны інтэрфейс і сямейства адрасоў.
- Правіла перахопу і пазнака пакета вызначаюць палітыку лакальнай дастаўкі.
- Адпаведнае правіла палітыкі выбірае маршрут, які дастаўляе пакеты лакальна.
- Проксі выкарыстоўвае падтрыманы празрысты слухач з патрэбнай опцыяй сокета.
Прыклад IPv4 у ядры патрабуе падтрымкі IP_TRANSPARENT з боку праграмы. Звычайны слухач на тым жа порце або глабальная налада нелакальнага звязвання не пацвярджаюць такой падтрымкі.
| Назіранне | Наступная праверка |
|---|---|
| Няма датычных уваходных пакетаў | Шлях трафіку і ўваходны інтэрфейс |
| Пакеты прыходзяць; лічыльнік перахопу стаіць | Сямейства адрасоў, ланцужок і ўмовы супадзення |
| Правіла супадае; лакальная дастаўка не ўдаецца | Пазнака і выбар маршруту палітыкі |
| Сокет слухае; праграма нічога не бачыць | Магчымасці празрыстага сокета і ўласнік слухача |
| Запыт пачынаецца; наступныя адказы не ўдаюцца | Супадзенне ўсталяванага сокета і зваротныя маршруты |
Захоўвайце загружаную канфігурацыю і сеткавае прастору імёнаў разам з кожным назіраннем. Наступнае правіла можа перазапісаць пазнаку або выбраць іншы маршрут. Калі перахоп адбываецца на хосце, а слухач працуе ў кантэйнеры, сапраўдны лакальны маршрут хоста не дастаўляе аўтаматычна ў гэты кантэйнер.
Улічвайце наступныя пакеты
Прыклад ядра ўключае супадзенне сокета і шлях DIVERT, які пазначае пакеты, што належаць празрыстым сокетам. Калі гэта апусціць, наступны трафік можа апынуцца на іншым шляху, нават калі пачатковы перахоп удаўся.
Выкарыстоўвайце падтрыманы праграмай празрысты рэжым і адпаведную дакументацыю ядра для кожнага сямейства адрасоў. Каманда лакальнага маршруту IPv4 не наладжвае IPv6, і падтрымка ў адным сямействе не пацвярджае паводзіны сокета ў іншым.
TPROXY таксама не стварае перамовы SOCKS. Кампанент пераходу ад празрыстага да SOCKS усё адно павінен выявіць прызначэнне і дамовіцца са сваім вышэйшым серверам.
Пераход ад REDIRECT
Запішыце, як існуючая праграма атрымлівае зыходнае прызначэнне. REDIRECT змяняе прызначэнне і абапіраецца на адпаведны механізм аднаўлення; TPROXY патрэбен свой празрысты сокет і арганізацыя маршрутызацыі. Выбірайце згодна з праграмай і палітыкай адраса крыніцы.
Перш чым мяняць рэжымы перахопу, спалучайце лічыльнікі з выбраным маршрутам, магчымасцямі сокета і журналам праграмы. На дыстрыбутыве, які дае патрэбныя сродкі, адсутны крок дастаўкі — лепшы пачатак, чым перакампіляцыя ядра.