Лічыльнік TPROXY можа расці, а праграма пры гэтым нічога не атрымлівае. Правіла супала, але лакальная дастаўка ўсё яшчэ залежыць ад маршрутызацыі палітыкі і сумяшчальнага прымальнага сокета.

Linux TPROXY можа перахопліваць трафік, не перапісваючы прызначэнне, як гэта робіць DNAT. Таму пакеты, адрасаваныя нелакальнаму прызначэнню, павінны дасягаць прыдатнага лакальнага сокета.

Прасочыце шлях дастаўкі

  1. Трафік дасягае хоста перахопу праз патрэбны інтэрфейс і сямейства адрасоў.
  2. Правіла перахопу і пазнака пакета вызначаюць палітыку лакальнай дастаўкі.
  3. Адпаведнае правіла палітыкі выбірае маршрут, які дастаўляе пакеты лакальна.
  4. Проксі выкарыстоўвае падтрыманы празрысты слухач з патрэбнай опцыяй сокета.

Прыклад IPv4 у ядры патрабуе падтрымкі IP_TRANSPARENT з боку праграмы. Звычайны слухач на тым жа порце або глабальная налада нелакальнага звязвання не пацвярджаюць такой падтрымкі.

НазіраннеНаступная праверка
Няма датычных уваходных пакетаўШлях трафіку і ўваходны інтэрфейс
Пакеты прыходзяць; лічыльнік перахопу стаіцьСямейства адрасоў, ланцужок і ўмовы супадзення
Правіла супадае; лакальная дастаўка не ўдаеццаПазнака і выбар маршруту палітыкі
Сокет слухае; праграма нічога не бачыцьМагчымасці празрыстага сокета і ўласнік слухача
Запыт пачынаецца; наступныя адказы не ўдаюццаСупадзенне ўсталяванага сокета і зваротныя маршруты

Захоўвайце загружаную канфігурацыю і сеткавае прастору імёнаў разам з кожным назіраннем. Наступнае правіла можа перазапісаць пазнаку або выбраць іншы маршрут. Калі перахоп адбываецца на хосце, а слухач працуе ў кантэйнеры, сапраўдны лакальны маршрут хоста не дастаўляе аўтаматычна ў гэты кантэйнер.

Улічвайце наступныя пакеты

Прыклад ядра ўключае супадзенне сокета і шлях DIVERT, які пазначае пакеты, што належаць празрыстым сокетам. Калі гэта апусціць, наступны трафік можа апынуцца на іншым шляху, нават калі пачатковы перахоп удаўся.

Выкарыстоўвайце падтрыманы праграмай празрысты рэжым і адпаведную дакументацыю ядра для кожнага сямейства адрасоў. Каманда лакальнага маршруту IPv4 не наладжвае IPv6, і падтрымка ў адным сямействе не пацвярджае паводзіны сокета ў іншым.

TPROXY таксама не стварае перамовы SOCKS. Кампанент пераходу ад празрыстага да SOCKS усё адно павінен выявіць прызначэнне і дамовіцца са сваім вышэйшым серверам.

Пераход ад REDIRECT

Запішыце, як існуючая праграма атрымлівае зыходнае прызначэнне. REDIRECT змяняе прызначэнне і абапіраецца на адпаведны механізм аднаўлення; TPROXY патрэбен свой празрысты сокет і арганізацыя маршрутызацыі. Выбірайце згодна з праграмай і палітыкай адраса крыніцы.

Перш чым мяняць рэжымы перахопу, спалучайце лічыльнікі з выбраным маршрутам, магчымасцямі сокета і журналам праграмы. На дыстрыбутыве, які дае патрэбныя сродкі, адсутны крок дастаўкі — лепшы пачатак, чым перакампіляцыя ядра.

Падобныя артыкулы