Transparentni proxy DNAT: zašto je povratna ruta važna
Shvatite zašto DNAT može dostaviti zahtjev odvojenom proxyju dok odgovor zaobilazi gateway i prekida vezu.
Preusmjereni SYN može stići do Squida dok klijent još uvijek dobija timeout. U DNAT postavci povratni paket također mora stići do gatewaya koji posjeduje stanje prevođenja.
Razmotrite ovaj hipotetički 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 prvobitno povezao na adresu web stranice. Nakon DNAT-a proxy vidi izvor klijenta i može koristiti rutu lokalne podmreže da odgovori direktno. Taj odgovor zaobilazi obrnuto prevođenje gatewaya i može stići do klijenta s adrese proxyja umjesto s očekivane adrese web stranice. Gateway ne može popraviti pakete koje nikada nije primio.
| Pristup | Posljedica |
|---|---|
| Provoditi odgovore proxyja kroz gateway koji prevodi | Dolazna veza prema proxyju može zadržati adresu izvora klijenta |
| Primijeniti i odgovarajuće prevođenje izvora | Proxy odgovara gatewayu 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 također mijenja izvorne ACL-ove i atribuciju; prihvatite tu posljedicu kao dio dizajna.
Pouzdan HTTP hop može prenijeti metapodatke klijenta u zaglavlju za prosljeđivanje, ali NAT ne stvara to zaglavlje niti ga pretvara u identitet TCP partnera. Čuvanje izvora na vezi prema Squidu također ga ne čuva na Squidovoj odvojenoj vezi prema web stranici.
Na kraju, dizajn presretanja još uvijek mora osigurati informacije o odredištu koje Squid zahtijeva. Simetrično povratno rutiranje rješava ovaj mehanizam timeouta, ne cijelu konfiguraciju transparentnog proxyja.