DNAT پروکسی شفاف: چرا مسیر بازگشت اهمیت دارد
بفهمید چرا DNAT میتواند درخواست را به یک پروکسی جداگانه برساند در حالی که پاسخ از دروازه عبور نمیکند و اتصال قطع میشود.
یک SYN تغییرمسیریافته میتواند به Squid برسد در حالی که کلاینت هنوز در مهلت انتظار است. در پیکربندی DNAT، بسته بازگشت نیز باید به دروازهای برسد که وضعیت ترجمه را در اختیار دارد.
این 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 directlyکلاینت در ابتدا به نشانی یک وبسایت متصل شد. پس از DNAT، پروکسی منبع کلاینت را میبیند و میتواند با مسیر زیرشبکه محلی مستقیماً پاسخ دهد. آن پاسخ ترجمه معکوس دروازه را از دست میدهد و ممکن است بهجای نشانی مورد انتظار وبسایت، از نشانی پروکسی به کلاینت برسد. دروازه نمیتواند بستههایی را که هرگز دریافت نمیکند ترمیم کند.
| رویکرد | پیامد |
|---|---|
| هدایت پاسخهای پروکسی از طریق دروازهای که ترجمه میکند | اتصال ورودی پروکسی میتواند نشانی منبع کلاینت را حفظ کند |
| اعمال ترجمه منبع مناسب نیز | پروکسی به دروازه بهعنوان همتای خود پاسخ میدهد، اما اکنون بهجای کلاینت اصلی همان منبع ترجمهشده را میبیند |
برای گزارشهای زیباتر، SNAT را بدون بررسی مسیر بازگشت حذف نکنید. اعمال گسترده آن نیز ACLهای منبع و انتساب را تغییر میدهد؛ این پیامد را بخشی از طراحی بپذیرید.
یک گام HTTP قابلاعتماد میتواند فراداده کلاینت را در سرآیند ارجاع منتقل کند، اما NAT آن سرآیند را نمیسازد و آن را به هویت همتای TCP تبدیل نمیکند. حفظ منبع روی اتصال به Squid نیز آن را روی اتصال جداگانه Squid به وبسایت حفظ نمیکند.
در پایان، طراحی رهگیری هنوز باید اطلاعات مقصد مورد نیاز Squid را فراهم کند. مسیریابی متقارن بازگشت این سازوکار مهلت را حل میکند، نه کل پیکربندی پروکسی شفاف را.