سه تغییر هر بار که VPN با OpenWrt روبه‌رو می‌شود با هم اشتباه گرفته می‌شوند: باز کردن یک درگاه، اجازه دادن به ارسال به جلو و روشن کردن پوشاندن آدرس. این‌ها به پرسش‌های متفاوتی پاسخ می‌دهند و معمولاً تنها یکی از آن‌ها نیاز واقعی است. خواندن هر کنترل بر پایه نقش ترافیکی که آن را اداره می‌کند، گمان را به تصمیم تبدیل می‌کند و همچنین می‌گوید وقتی تغییر اشتباه است چه نشانه‌ای را انتظار داشته باشید. با نام بردن نقشی که شکست خورده شروع کنید، نه کادر تیکی که به یاد دارید.

پیش از دست زدن به هر کنترل، نقش ترافیک را نام ببرید

ورودی ناحیه تعیین می‌کند چه چیزی می‌تواند به خود روتر برسد. خروجی ناحیه ترافیکی را در بر می‌گیرد که روتر خودش ایجاد می‌کند، ارسال به جلوی ناحیه مقدار پیش‌فرض برای ترافیکی است که از یک ناحیه می‌گذرد، و پوشاندن آدرس تعیین می‌کند آیا نشانی مبدأ در مسیر خروج بازنویسی می‌شود. این‌ها چهار پرسش متفاوت‌اند و یک سیاست ناحیه به همه آن‌ها یک‌جا با یک مقدار پاسخ می‌دهد، از این رو تغییر در کل ناحیه ابزاری خشن است. یک قاعده نام‌دار می‌تواند به یکی از آن‌ها پاسخ دهد بدون آنکه به بقیه دست بزند.

نقشه سودمند بر پایه نقش ترافیک است، چون همان چیزی است که وقتی مشکلی پیش می‌آید می‌توانید ببینید. هر نقش در زیر یک کنترل دارد که آن را تعیین می‌کند و یک نشانه دارد که به آن اشاره می‌کند:

Traffic roleControl that decides itWhere it lives in the configSymptom when it is wrong
A client reaching a listener on the routerInput policy of the zone that carries the connection, or a rule for the portoption input in the zone stanza, or a named ruleThe handshake never completes and the tunnel log says nothing
A tunnel client reaching the router itselfInput policy of the tunnel zoneoption input in the VPN zoneA ping to the gateway fails
A tunnel client reaching another LAN hostForwarding from the tunnel zone to the LAN zoneconfig forwarding plus the zone assignmentThe gateway answers and the file share times out
The router's own traffic leaving the WANOutput policy, and translation if the far side needs itoption output and option masqThe 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'

پیش از تغییر هر سیاست دیوار آتش یک مسیر مدیریتی نگه دارید که هنوز می‌توانید از آن استفاده کنید و روند اعتبارسنجی و بازگردانی صاحب پیکربندی را دنبال کنید. تغییری که شما را بیرون از روتر قفل کند نتیجه آزمون نیست، حادثه دوم است. ناحیه و نقش ترافیک را کنار هر مشاهده بنویسید تا جفت نتیجه سیاست را توضیح دهد نه یک بارگذاری خوش‌شانس صفحه.

مقالات مرتبط