Pagsunod sa isang TPROXY packet hanggang sa socket
Suriin ang tumatanggap na socket, marka ng packet at lokal na ruta ng patakaran bilang isang daan ng paghahatid ng transparent na proxy.
Maaaring tumaas ang counter ng TPROXY habang walang natatanggap ang aplikasyon. Tumugma ang tuntunin, ngunit nakadepende pa rin ang lokal na paghahatid sa policy routing at sa katugmang tumatanggap na socket.
Maaaring harangin ng TPROXY sa Linux ang trapiko nang hindi nire-rewrite ang destinasyon tulad ng DNAT. Kaya ang mga packet na nakadirekta sa hindi lokal na destinasyon ay dapat umabot sa angkop na lokal na socket.
Sundin ang daan ng paghahatid
- Umaabot ang trapiko sa host ng pagharang sa nilalayong interface at pamilya ng address.
- Tinutukoy ng tuntunin ng pagharang at marka ng packet ang patakaran ng lokal na paghahatid.
- Pumipili ang katugmang tuntunin ng patakaran ng rutang naghahatid ng mga packet nang lokal.
- Gumagamit ang proxy ng suportadong transparent na listener na may kailangang opsyon ng socket.
Ang halimbawang IPv4 ng kernel ay nangangailangan ng suporta ng aplikasyon para sa IP_TRANSPARENT. Ang ordinaryong listener sa parehong port, o pandaigdigang hindi lokal na bind setting, ay hindi nagpapatunay ng suportang iyon.
| Obserbasyon | Susunod na pagsusuri |
|---|---|
| Walang kaugnay na papasok na packet | Daan ng trapiko at input interface |
| Dumarating ang mga packet; hindi gumagalaw ang counter ng pagharang | Pamilya ng address, chain at mga kondisyon ng pagtutugma |
| Tumutugma ang tuntunin; nabibigo ang lokal na paghahatid | Marka at pagpili ng ruta ng patakaran |
| Nakikinig ang socket; walang nakikita ang aplikasyon | Kakayahan ng transparent na socket at may-ari ng listener |
| Nagsisimula ang kahilingan; nabibigo ang mga sumunod na tugon | Pagtutugma ng naitatag na socket at mga ruta ng pagbabalik |
Itabi ang na-load na configuration at network namespace kasama ng bawat obserbasyon. Maaaring i-overwrite ng susunod na tuntunin ang isang marka o pumili ng ibang ruta. Kung nangyayari ang pagharang sa host habang tumatakbo ang listener sa isang container, hindi awtomatikong naghahatid ang valid na lokal na ruta ng host papasok sa container na iyon.
Isaalang-alang ang mga susunod na packet
Kasama sa halimbawa ng kernel ang pagtutugma ng socket at isang daan ng DIVERT na nagmamarka ng mga packet ng transparent na socket. Kapag iniwan ito, maaaring manatili ang susunod na trapiko sa ibang daan kahit nagtagumpay ang unang pagharang.
Gamitin ang suportadong transparent na mode ng aplikasyon at ang katugmang dokumentasyon ng kernel para sa bawat pamilya ng address. Hindi kinokonfigura ng IPv4 local-route command ang IPv6, at hindi nagpapatunay ang suporta sa isang pamilya ng pag-uugali ng socket sa isa pa.
Hindi rin gumagawa ng negosasyon ng SOCKS ang TPROXY. Kailangan pa rin ng bahaging mula transparent patungong SOCKS na tuklasin ang destinasyon at makipagnegosasyon sa upstream nito.
Paglipat mula sa REDIRECT
Itala kung paano nakukuha ng umiiral na aplikasyon ang orihinal na destinasyon. Binabago ng REDIRECT ang destinasyon at umaasa sa angkop na mekanismo ng pagbawi; kailangan ng TPROXY ang sarili nitong transparent na socket at kaayusan ng routing. Pumili ayon sa aplikasyon at patakaran ng source address.
Ipares ang mga counter sa piniling ruta, kakayahan ng socket at log ng aplikasyon bago baguhin ang mode ng pagharang. Sa isang distribusyong nagbibigay ng mga kinakailangang pasilidad, ang nawawalang hakbang ng paghahatid ay mas mabuting simula kaysa sa muling pag-compile ng kernel.