ناحیه VPN در OpenWrt، ارسال به جلو و پوشاندن آدرس: کدام لازم است؟
ورودی ناحیه، ارسال به جلو و پوشاندن آدرس به پرسشهای متفاوتی پاسخ میدهند. پیش از باز کردن ناحیه WAN تصمیم بگیرید ترافیک VPN شما به کدام نیاز دارد.
سه تغییر هر بار که VPN با OpenWrt روبهرو میشود با هم اشتباه گرفته میشوند: باز کردن یک درگاه، اجازه دادن به ارسال به جلو و روشن کردن پوشاندن آدرس. اینها به پرسشهای متفاوتی پاسخ میدهند و معمولاً تنها یکی از آنها نیاز واقعی است. خواندن هر کنترل بر پایه نقش ترافیکی که آن را اداره میکند، گمان را به تصمیم تبدیل میکند و همچنین میگوید وقتی تغییر اشتباه است چه نشانهای را انتظار داشته باشید. با نام بردن نقشی که شکست خورده شروع کنید، نه کادر تیکی که به یاد دارید.
پیش از دست زدن به هر کنترل، نقش ترافیک را نام ببرید
ورودی ناحیه تعیین میکند چه چیزی میتواند به خود روتر برسد. خروجی ناحیه ترافیکی را در بر میگیرد که روتر خودش ایجاد میکند، ارسال به جلوی ناحیه مقدار پیشفرض برای ترافیکی است که از یک ناحیه میگذرد، و پوشاندن آدرس تعیین میکند آیا نشانی مبدأ در مسیر خروج بازنویسی میشود. اینها چهار پرسش متفاوتاند و یک سیاست ناحیه به همه آنها یکجا با یک مقدار پاسخ میدهد، از این رو تغییر در کل ناحیه ابزاری خشن است. یک قاعده نامدار میتواند به یکی از آنها پاسخ دهد بدون آنکه به بقیه دست بزند.
نقشه سودمند بر پایه نقش ترافیک است، چون همان چیزی است که وقتی مشکلی پیش میآید میتوانید ببینید. هر نقش در زیر یک کنترل دارد که آن را تعیین میکند و یک نشانه دارد که به آن اشاره میکند:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
شنونده روی روتر به یک قاعده ورودی باریک نیاز دارد
یک سرور OpenVPN روی روتر ترافیکی را میپذیرد که به روتر نشانه رفته است، پس اتصال بیرونی آن به سیاست ورودی ناحیهای بستگی دارد که آن را حمل میکند. پروتکل انتقال و درگاه پیکربندیشده را اجازه دهید و هر چیز دیگری در آن ناحیه را ردشده بگذارید. یک قاعده درگاه تغییر بسیار کوچکتری از اجازه دادن در کل ناحیه است و همان چیزی است که یک سال بعد هم میتوانید توضیحش دهید.
دو چیز این قاعده را برای نگه داشتن ایمن میکند: درگاهی را نام میبرد که سرویس واقعاً استفاده میکند، و کنار تعریف ناحیه قرار دارد تا نفر بعدی ببیند چرا وجود دارد. سطرهای زیر فقط شکلاند و درگاه جانشین چیزی است که روی سرور پیکربندی شده است. وقتی سرویس جابهجا شد آن درگاه را در هر دو جا تغییر دهید، چون قاعدهای که روی درگاه قدیمی بماند تا یک بازرسی نامرئی است.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'پیش از بارگذاری دوباره اعتبارسنجی کنید، چون یک خطای نحوی در فایل دیوار آتش میتواند روتر را بدون مجموعه قواعد کارآمد بگذارد. در نسخهای که از fw4 استفاده میکند بررسی یک فرمان جداگانه است و بلند شکست میخورد به جای آنکه بیصدا یک بلوک شکسته را بپذیرد. فقط پس از موفقیت بررسی دوباره بارگذاری کنید و فایل پیشین را جایی نگه دارید که بتوانید بازگردانید.
fw4 check
service firewall reloadدرخواست کلاینت از ارسال به جلو میگذرد، نه از ورودی
پس از احراز هویت، درخواست کلاینت تونل برای یک سرویس LAN جریان ارسالشده پدید میآورد، پس کنترلی که آن را تعیین میکند رابطه ارسال به جلو میان ناحیه تونل و ناحیه LAN است. رابط تونل را به ناحیه مورد نظر اختصاص دهید، سپس جهت، منابع و سرویس را اعلام کنید. اختصاص ناحیه همان چیزی است که به قاعده ارسال به جلو معنا میدهد و این دو فقط با هم خوانده شدن معنا دارند. رابطههای ارسال به جلو که ناحیه تونل را مبدأ و ناحیه LAN را مقصد مینامد، یک تصمیم آگاهانه خوانده میشود، در حالی که دو اجازه در کل ناحیه یک حادثه خوانده میشود.
رسیدن به خود روتر همچنان از مسیر ورودی استفاده میکند، از این رو ping به دروازه هیچ چیزی درباره اشتراک فایل پشت آن نمیگوید. آن دو شکست در بلوکهای متفاوت زندگی میکنند و با تغییرهای متفاوت درست میشوند. هر دو مسیر را جداگانه بنویسید پیش از آنکه هر یک را تغییر دهید.
پوشاندن آدرس یک تصمیم مسیریابی است، نه یک مجوز
پوشاندن آدرس نشانی مبدأ ترافیک خروجی گزیده را بازنویسی میکند. میتواند طرحی برای خروج را نجات دهد که در آن طرف دور مسیر بازگشتی ندارد و همچنین نشانی کلاینتهای فردی را از هر سرویسی که نشانیها را ثبت یا بر پایه نشانی مجوز میدهد پنهان میکند. خاموش کردن آن یک انتخاب مسیریابی درباره مسیر بازگشت است، نه کلید امنیتی که یک حفره ورودی را میبندد. تونلی که با ترجمه روشن کار میکند و همان لحظه که خاموش شود شکست میخورد معمولاً مسیر بازگشت ندارد، نه قاعده دیوار آتش.
جایگزین مسیریابیشده به جای ترجمه به مسیر بازگشت در طرف دور نیاز دارد. هیچیک از دو گزینه مجوز دیوار آتش یا حساب برنامه را فراهم نمیکند، از این رو خاموش کردن پوشاندن آدرس تقریباً هرگز کلاینتی را که به هیچجا نمیرسد درست نمیکند. سیاست IPv4 و IPv6 را هم جداگانه بررسی کنید، چون یک تنظیم ترجمه هر دو خانواده را توصیف نمیکند.
تصمیم را با یک درخواست مجاز و یک درخواست ردشده اثبات کنید
یک درخواست بفرستید که باید مجاز باشد و یکی که باید رد شود، سپس کنترلی را که هر تصمیم را گرفته مشخص کنید. صفحهای که تصادفاً بارگذاری میشود مدرک نیست؛ مدرک قاعدهای است که تطبیق یافت، در زنجیرهای که تطبیق یافت. رد شدن به اندازه موفقیت اهمیت دارد، چون نشان میدهد سیاست کاری میکند به جای آنکه همه چیز مجاز باشد.
دو فرمان این مدرک را در نسخهای جاری به شما میدهند. شمارنده روی قاعده منطبق وقتی درخواست پذیرفته شود جابهجا میشود و گزارش، افتادن را نشان میدهد اگر ثبت را برای قاعده روشن کرده باشید:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'پیش از تغییر هر سیاست دیوار آتش یک مسیر مدیریتی نگه دارید که هنوز میتوانید از آن استفاده کنید و روند اعتبارسنجی و بازگردانی صاحب پیکربندی را دنبال کنید. تغییری که شما را بیرون از روتر قفل کند نتیجه آزمون نیست، حادثه دوم است. ناحیه و نقش ترافیک را کنار هر مشاهده بنویسید تا جفت نتیجه سیاست را توضیح دهد نه یک بارگذاری خوششانس صفحه.