#network_time
🤔 فایروالها چطوری میفهمن یه packet باید اجازه عبور داشته باشه یا نه؟
تا حالا شده فکر کنی وقتی یه فایروال یا ابزار NAT روی یه لینوکس اجرا میشه، چطوری میتونه وسط مسیر یه packet رو بگیره، تغییرش بده یا اصلاً جلوی رفتنش رو بگیره؟ این کار از طریق مکانیزمی توی kernel به اسم Netfilter hooks انجام میشه که در واقع نقاط حساس و مشخصی توی مسیر حرکت یه packet هستن.
وقتی یه packet از کارت شبکه وارد سیستم میشه، kernel اون رو پردازش میکنه، اما در مراحل مختلف، مثل لحظهای که تازه وارد شده یا درست قبل از اینکه از سیستم خارج بشه، این مکانیزم اجازه میده که ما یه rule خاص رو اونجا اجرا کنیم. این ۵ تا نقطه اصلی شامل مرحلهی prerouting برای تغییر آدرس قبل از routing، مرحلهی input برای packetهایی که مستقیم به خود سیستم میرسن، مرحلهی forward برای packetهایی که فقط دارن از سیستم عبور میکنن، مرحلهی output برای packetهایی که خود سیستم تولید کرده، و مرحلهی postrouting برای اعمال تغییراتی مثل NAT دقیقاً قبل از خروج از interface هستن. در واقع در هر کدوم از این hookها، kernel مسیر پردازش رو موقتاً متوقف میکنه تا ببینه آیا باید اون packet رو drop کنه یا اجازه بده به مرحله بعد بره.
این ساختار دقیق همون چیزیه که ابزارهای مدیریت فایروال ازش استفاده میکنن تا بتونن کنترل کاملی روی ترافیک داشته باشن. بدون این hookها، نوشتن یه فایروال یا سیستم NAT خیلی سخت میشد چون دیگه نمیتونستیم بدون دستکاری خودِ kernel، دقیقاً مشخص کنیم که در چه مرحلهای از پردازش IP، چه تغییری باید روی header یا مقصد packet اعمال بشه.
❓ تا حالا شده موقع تنظیم فایروال با مشکلی برخورد کنین که نتونین بفهمین packet دقیقاً توی کدوم مرحله از این hooks drop شده؟ تجربهتون رو برامون تو کامنتا بنویسین.
@things_to_know_channel
Post #443
424
- ❤ 6
- 🔥 1