پیکربندی عمومی VPN از کار افتاد؟ مرحله شکست را بخوانید
پروفایل دانلودشده یک میزبان را در یک روز توصیف میکند. بخوانید کدام ادعا شکسته است، گواهیای را که طرف مقابل ارائه میکند بررسی کنید و هرگز بررسی را غیرفعال نکنید.
پروفایل سهشنبه کار میکرد، و جمعه کلاینت سی ثانیه میچرخد و تسلیم میشود. هیچ چیز روی دستگاه شما تغییر نکرده است. دقیقاً همین نکته است: پیکربندی دانلودشده یک میزبان را در یک لحظه توصیف میکند، و اپراتور در آن سوی مرز هیچ الزامی ندارد که آن توصیف را درست نگه دارد. وسوسه این است که شروع کنید به ویرایش تنظیمات امنیتی تا تونل دوباره بالا بیاید. همین غریزه است که باعث میشود مردم در نهایت پروفایلی را با بررسی گواهی غیرفعال اجرا کنند، که از نداشتن هیچ تونلی بدتر است.
فایل یک لحظه را توصیف میکند، نه یک قرارداد
فایل پیکربندی مجموعهای از ادعاهاست: این نام میزبان روی این درگاه با این پروتکل گوش میدهد، گواهیای مطابق این نام ارائه میکند و این اعتبارنامهها را میپذیرد. وقتی هر یک از اینها دیگر درست نباشد، فایل کهنه است و اصلاح به سمت اپراتور در مرز تعلق دارد، نه به تنظیمات شما.
فهرستهای گره عمومی بهخاطر ماهیتشان این را آشکار میکنند. گرهها را داوطلبان اداره میکنند، پیدا و ناپدید میشوند، نشانیها بازیافت میشوند و درگاهها توسط شبکهای که پشت آن قرار دارند مسدود میشوند. فهرست یک عکس لحظهای است که دوباره تولید میشود، و نسخه روی دیسک شما عکس یک عکس لحظهای قدیمیتر است.
سرویسهای تجاری کندتر تغییر میکنند، اما نه هرگز. مراجع صدور گواهی تغییر میکنند، یک شنونده از نشانی مشترک به نشانی اختصاصی منتقل میشود، یک پروتکل قدیمی بازنشسته میشود و فهرست رمزنگاری جدیدی میرسد. هر یک از اینها تا زمانی که کلاینت شما تلاش کند متصل شود و پاسخی متفاوت از آنچه فایل انتظار دارد بگیرد، نامرئی است.
پیش از دست زدن به هر تنظیمی مرحله شکست را بخوانید
پیام خطا میگوید کدام ادعا شکسته است، و هر ادعا اصلاح کاملاً متفاوتی دارد. ویرایش رمزنگاری وقتی نام میزبان دیگر تفکیک نمیشود، یک بعدازظهر را تلف میکند و به کسی چیزی نمیآموزد.
| What happens | The assertion that broke | Supported response |
|---|---|---|
| Name never resolves | The host still exists under that name | Get a current endpoint from the operator |
| TCP connect times out | The listener is on that port and reachable | Check the current published port, then the local network |
| TLS or key exchange fails | The peer presents the expected identity | Compare the certificate, not the cipher list |
| Authentication rejected | The account is still valid | Get credentials reissued or stop using the service |
dig +short vpn.example.net
curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect}\n' --max-time 8 https://vpn.example.net:443/
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/nullخط میانی مسیر مسدود را از دستدادن دستی شکسته جدا میکند، و خط سوم صادرکننده و تاریخهای اعتبار گواهیای را نشان میدهد که واقعاً ارائه میشود. اگر آن صادرکننده همانی نباشد که پروفایل پین کرده است، گواهی تغییر کرده است و هیچ گزینهای در سمت کلاینت پین قدیمی را دوباره درست نمیکند.
تغییرات گواهی و هویت همانهای خاموشاند
بیشتر شکستها خودشان را اعلام میکنند. تغییرات هویت اینطور نیستند، زیرا کلاینتی که نام گواهی را پین میکند گواهی جدید کاملاً سالمی را با پیامی رد میکند که بسیاری آن را اشک نرمافزاری میخوانند. تونل سالم است. پین کهنه است.
پیش از هر نتیجهگیری گزینههای هویت را بگردید:
grep -nE '^(remote|proto|auth|verify-x509-name|tls-crypt|key-direction|ca) ' profile.ovpn
openssl x509 -in profile-ca.crt -noout -subject -datesاگر پروفایل یک CA جاسازیشده دارد و اپراتور به مرجع جدیدی منتقل شده است، فایل قدیمی نمیتواند سرور جدید را اعتبارسنجی کند. جایگزینی بلوک CA با بلوک منتشرشدهٔ اپراتور اصلاحی مشروع است. حذف دستور بررسی اینطور نیست، و همان کلیدهای فشردهشده با نتیجهای کاملاً متفاوت است.
ارتقای کلاینت میتواند همان نشانه را بدون هیچ تغییری از سوی اپراتور ایجاد کند. گزینههایی که بیصدا تحمل میشدند اکنون رد میشوند، یا یک پروتکل منسوخ حذف میشود. این یک محدودیت سازگاری در نرمافزار شما است، و ارزش دارد پیش از مقصر دانستن سرور پروفایل دومی را با همان کلاینت آزمایش کنید.
تنها اپراتور میتواند جانشین معتبر منتشر کند
وقتی گرهای ناپدید میشود، جانشین باید از همان منبعی بیاید که نسخه اصلی را منتشر کرده است. پروفایلی که در یک پیام مستقیم میرسد چون «همان نام سرور را استفاده میکند»، پیکربندی تأییدنشده از طرفی ناشناخته است، و وارد کردن آن کنترل مسیریابی شما را به آن طرف میدهد.
بررسی ارزان است. فایل کنونی را از مکان منتشرشده بگیرید، نقطه پایانی و پروتکل را با فهرست مقایسه کنید و بهجای اعتماد به نام فایل، اثر انگشت مواد CA را تأیید کنید:
curl -sS -o current.ovpn https://example.org/nodes/current.ovpn
sha256sum current.ovpn profile.ovpn
grep -nE '^(remote|proto) ' current.ovpnاگر دو هش فقط در فاصلهها تفاوت داشته باشند، تغییر قالببندی دارید. اگر در نقاط پایانی تفاوت داشته باشند، اپراتور چیزی را جابهجا کرده و فایل منتشرشده مرجع است. اگر فایل منتشرشده از فایل شما قدیمیتر باشد، احتمالاً به یک حافظه نهان نگاه میکنید و پاسخ کهنه شما را به جهت اشتباه میفرستد.
ورودی قدیمی را بازنشسته کنید و ثبت کنید چه شد
پس از تأیید یک جانشین کارآمد، پروفایل قدیمی را حذف کنید نه اینکه آن را بهعنوان جایگزین نگه دارید. ورودی کهنهای که نیمه وصل میشود تله است: در زمان قطعی انتخاب میشود، کند شکست میخورد و کسی که اشکالزدایی میکند ده دقیقه اول را با فایل اشتباه میگذراند.
یک ثبت کوتاه بیرون از پیکربندی نگه دارید: تاریخ، نقطه پایانی قدیمی، مرحله شکست و اینکه چه چیزی جای آن را گرفت. گرههای عمومی تغییر میکنند و شش هفته بعد همان پرسش با فرد دیگری میرسد. یک خط در یک فایل یادداشت در چند ثانیه پاسخش را میدهد.
اگر از یک شبکه هر گره به همان شکل شکست میخورد و از شبکهای دیگر هیچکدام، ویرایش پروفایلها را رها کنید و مسیر محلی را ببینید. یک درگاه اسیر، یک محدوده درگاه فیلترشده یا یک پروکسی شنودگر در ارائهدهندگان نامرتبط خطاهای یکسانی تولید میکند، و همین الگو تنها نشانهای است که مشکل هرگز فایل نبوده است.