Transparentni proxy DNAT: zašto je povratna ruta važna
Shvatite zašto DNAT može dostaviti zahtjev odvojenom proxyju dok odgovor zaobilazi pristupnik i prekida vezu.
Preusmjereni SYN može stići do Squida dok klijent još uvijek čeka na istek. U DNAT postavci povratni paket također mora stići do pristupnika koji posjeduje stanje prevođenja.
Razmotrite ovaj hipotetski LAN:
client 192.168.40.25 → gateway 192.168.40.1
DNAT → proxy 192.168.40.10
proxy 192.168.40.10 → client 192.168.40.25 directlyKlijent se isprva povezao na adresu web-mjesta. Nakon DNAT-a proxy vidi izvor klijenta i može upotrijebiti rutu lokalne podmreže za izravan odgovor. Taj odgovor zaobilazi obrnuto prevođenje pristupnika i može doći do klijenta s adrese proxyja umjesto s očekivane adrese web-mjesta. Pristupnik ne može popraviti pakete koje nikada ne primi.
| Pristup | Posljedica |
|---|---|
| Provoditi odgovore proxyja kroz pristupnik koji prevodi | Dolazna veza prema proxyju može zadržati izvornu adresu klijenta |
| Primijeniti i odgovarajuće prevođenje izvora | Proxy odgovara pristupniku kao svom partneru, ali sada vidi taj prevedeni izvor umjesto izvornog klijenta |
Ne uklanjajte SNAT zbog ljepših zapisa bez provjere povratne rute. Široka primjena mijenja i izvorne ACL-ove te atribuciju; prihvatite tu posljedicu kao dio dizajna.
Pouzdan HTTP skok može prenijeti metapodatke klijenta u zaglavlju prosljeđivanja, ali NAT ne stvara to zaglavlje niti ga pretvara u identitet TCP partnera. Čuvanje izvora na vezi prema Squidu ne čuva ga ni na Squidovoj odvojenoj vezi prema web-mjestu.
Naposljetku, dizajn presretanja još uvijek mora osigurati podatke o odredištu koje Squid zahtijeva. Simetrično povratno usmjeravanje rješava ovaj mehanizam isteka, ne cijelu konfiguraciju transparentnog proxyja.