OpenVPN وصل میشود اما هیچ چیز جریان ندارد: لایهای را پیدا کنید که بسته در آن میافتد
یک تونل متصل بدون ترافیک دستکم پنج علت دارد. شنونده را اثبات کنید، بسته بیرونی را ثبت کنید، سپس بگذارید شمارندهها یا یک ردیابی نام قاعده را بگویند.
OpenVPN میگوید متصل است و هیچ ترافیکی حرکت نمیکند، جملهای که دستکم پنج عیب بیارتباط را پوشش میدهد. ویرایش قواعد فایروال پیش از آنکه بدانید کدام لایه شکست میخورد، ناشناختهها را چند برابر میکند و برای مهندس بعدی آشفتگی میگذارد. در عوض از فرایند به بیرون کار کنید، زیرا هر گام زیر یا یک مرحله را پاک میکند یا جایی را که بسته میمیرد باریکتر میکند. ترتیب اینجا مهم است: ثبتکردنی که پیش از دانستن اینکه کدام نشانی مقید است گرفته شود چیزی را اثبات میکند، فقط نه آن چیزی را که لازم دارید.
سوکت یا مقید است یا نیست
سرویسی که فعال بودن را گزارش میدهد هنوز میتواند به نشانی یا ترابری مقید باشد که هرگز قصدش را نداشتید. خود سوکت را بپرسید: ss -lunp شنوندههای UDP را فهرست میکند و ss -ltnp شنوندههای TCP را، و ستونی که ارزش خواندن دارد نشانی محلی است، نه وضعیت.
پاسخ خالی معمولاً یکی از سه چیز را معنا میدهد: فرایند پس از شروع خارج شده، فایل پیکربندی دیگری بارگذاری کرده، یا روی نشانی متفاوت از نشانیای که به آن زنگ زده میشود گوش میدهد.
ss -lunp | grep 1194
ss -ltnp | grep 1194
دستور local شنونده را به یک نشانی میخ میکند، پس کلاینتی که به جای دیگری روی همان میزبان نشانه رفته رد میشود، در حالی که سرویس از بیرون هنوز سالم به نظر میرسد. نام نمونه هم میتواند به فایلی اشاره کند که هرگز ویرایشش نکردید، که روی میزبانهایی رخ میدهد که دو نمایه را کنار هم اجرا میکنند.
بسته بیرونی را ثبت کنید، نه تونل را
روی رابط فیزیکی و درگاه واقعی فیلتر کنید، با جایگزینی رابط خودتان: tcpdump -ni eth0 udp port 1194. بستههای خروجی که چیزی برنمیگردد به آنچه بالادست نشسته اشاره میکنند: فیلتر ارائهدهنده، یک دستگاه NAT، یا نشانی دوری که آن نیست که فکر میکنید. سکوت در هر دو جهت به مسیریابی کلاینت یا فایروال محلی اشاره میکند. پاسخهایی که بدون پیشرفت تونل میرسند به کانال کنترل اشاره میکنند، یعنی ناسازگاری کلید یا رمز، نه به فیلتر.
هر دو جهت را ثبت کنید و فایل را کوتاه نگه دارید. ثبت طولانی سه ثانیه مهم را دفن میکند، و پاسخ تقریباً همیشه در نخستین تبادل است.
اول شمارندهها، ردیابی فقط وقتی دروغ میگویند
با شمارندهها شروع کنید، چون هیچ هزینهای ندارند. nft list ruleset یا iptables -L -n -v به تنها پرسشی که اینجا مهم است پاسخ میدهد: آیا قاعده تطبیق یافت؟ ترتیب نتیجه را تعیین میکند، چون نخستین تطبیق برنده است، به همین دلیل DROP گسترده پیش از ACCEPT بعدی آن ACCEPT را مرده رها میکند و به همین دلیل افزودن یک قاعده چنین بهندرت چیزی را درست میکند.
مالکیت هم مردم را لغزش میدهد. هسته بستههای محلی تولیدشده را به فرایندی نسبت میدهد که سوکت را باز کرده، و OpenVPN معمولاً بهعنوان root اجرا میشود، پس قاعدهای که به شناسه کاربر عادی گره خورده هرگز ترافیک خود تونل را نمیبیند. پیش از تصمیم به نادرست بودن قاعده، UID مالک را بررسی کنید.
تنها وقتی شمارندهها مبهم میمانند، گزارش ارزش سروصدا را دارد، و آن هم فقط برای برشی باریک: قاعدهای در iptables که نرخ را محدود میکند و پیشوند به خطوط گزارشش میدهد، یا قاعدهای در nftables که meta nftrace set 1 را حمل میکند در حالی که nft monitor trace در حال اجراست. ردیابی زنجیره و قاعدهای را نام میبرد که بسته را پذیرفت یا انداخت. سپس هر دو را بردارید و ثبت بار داده را بیرون نگه دارید.
ترابری را هم بررسی کنید. سرویس فایروالی که به TCP محدود است هیچ چیزی درباره شنونده UDP روی آن شماره نمیگوید، پس قاعدهای که درست خوانده میشود هنوز میتواند هر بسته را بیندازد.
مسیریابی و راه بازگشت
بسته پذیرفتهشدهای که هنوز ناپدید میشود باید مسیر مقصدش بررسی شود. ip route get مسیر انتخابشده برای یک نشانی را گزارش میکند، و فیلتر مسیر معکوس میتواند پاسخی را که از رابطی میرسد که جدول اصلی هرگز انتخابش نمیکرد بیندازد. نشانه دقیقاً مانند انداختهشدن توسط فایروال به نظر میرسد، به همین دلیل این بررسی پیش از قاعده NAT دیگری میآید.
روی دروازه، بهجای زنجیره input، ارسال و زنجیره forward را بررسی کنید. سپس تأیید کنید که سوی دور میداند چگونه به نشانی مبدأ برسد، چون مسیر خروجی کارکردی که چیزی برنمیگرداند در هر دو حالت سکوت است.
آنچه یادداشت باید بگوید
برای هر تغییر، مرحلهای را که آزمودید، شاهدی را که خواندید و مقدار شمارنده در دو سوی آن را یادداشت کنید. همان یادداشت است که "اکنون کار میکند" را در بازبینی بعدی ماندگار میکند.
دو میانبر یادداشت را صادق نگه میدارد. بستهای که هرگز میزبان را ترک نکرده نمیتواند توسط قاعدهای جای دیگر انداخته شده باشد، هر قدر هم پیکربندی سوی دور قانعکننده به نظر برسد. بستهای که رفت و بازگشت، پرسش را بالای لایه شبکه میبرد، جایی که شمارندههای فایروال دیگر چیزی برای گفتن به شما ندارند.