دو پروفایل، یکی وصل می‌شود و دیگری نه، و راه سریع دیدن علت یک diff است. مشکل این است که همان diff کلید خصوصی درون‌خطی، کلید ایستا و هر بلوک اعتباری را که فایل حمل می‌کند چاپ می‌کند، و مردم پیش از آنکه متوجه شوند خروجی را در گفتگو می‌چسبانند. تصمیم درباره اینکه چه چیزی را مقایسه می‌کنید پیش از اجرای دستور می‌آید. ساختار و نقش‌ها را روی نسخه‌های محافظت‌شده مقایسه کنید و وقتی فرد دیگری باید ببیند، فایل ویرایش‌شدهٔ جداگانه بسازید.

یک فایل .ovpn در واقع چه چیزی دارد

یک فایل .ovpn یک پیکربندی با بلوک‌های درون‌خطی اختیاری است. می‌تواند گواهی CA، گواهی کارخواه، کلید خصوصی، کلید tls-auth یا tls-crypt و دستورالعمل‌هایی داشته باشد که به فایل‌های بیرونی اشاره می‌کنند یا اعتبارنامه می‌خواهند. دو فایل می‌توانند تقریباً یکسان به نظر برسند و فقط درون یک بلوک فرق کنند، یا در یک دستورالعمل که انتقال را کاملاً عوض می‌کند. تعداد خطوط هیچ چیزی درباره اینکه کدام‌یک رخ داده به شما نمی‌گوید.

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

بر پایه نقش مقایسه کنید، نه بر پایه خط

ترتیب خود اتصال را دنبال کنید: نخست نقطهٔ پایانی و انتقال، سپس اعتماد و هویت مورد انتظار، سپس احراز هویت کاربر، سپس مسیرها، DNS و قلاب‌های اسکریپت. این توالی با کاری که کارخواه می‌کند می‌خواند، پس نخستین تفاوتی که می‌بینید نخستین چیزی است که می‌توانست اتصال را بشکند. مقایسهٔ الفبایی در عوض تنظیمات مرتبط را در سراسر خروجی پراکنده می‌کند.

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

  • remote، proto و درگاه، شامل هر بلوک اتصال.
  • ca و cert: صادرکننده، موضوع و تاریخ انقضا.
  • اینکه اصلاً کلید خصوصی هست یا نه، هرگز اینکه چه دارد.
  • tls-auth یا tls-crypt وجود و جهت کلید.
  • دستورالعمل‌های احراز هویت، شامل هر ارجاع به فایل اعتبارنامه.
  • مسیرها، گزینه‌های DNS و قلاب‌های اسکریپتی که هنگام اتصال اجرا می‌شوند.

وقتی فایلی چند بلوک اتصال دارد، هر گزینه را کنار نقطهٔ پایانی خودش نگه دارید. مقایسهٔ تنها خط remote نخست می‌تواند گزینهٔ جایگزینی را که کارخواه واقعاً در این شبکه برمی‌گزیند از دست بدهد.

چرا یک diff ساده ابزار نادرست است

یک diff ساده برای متن ساخته شده، نه برای رازها. با کمال میل کلید خصوصی را در تاریخچهٔ صفحه چاپ می‌کند و به شما نمی‌گوید که دستورالعملی که به آن خیره شده‌اید به شکست ربطی ندارد. استخراج فیلدها هم امن‌تر است و هم خواناتر، چون مواد گواهی را می‌توان به‌جای بایت‌ها به‌صورت فراداده مقایسه کرد.

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

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

برای تیکت یک نسخهٔ ویرایش‌شده بسازید

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

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

مقایسه را به یک شکست گره بزنید

یک مقایسه وقتی هزینه‌اش را می‌ارزد که به پرسشی درباره یک واردکردن یا یک شکست اتصال پاسخ دهد. نخست گام شکست‌خورده را نام ببرید، سپس فقط فیلدهایی را مقایسه کنید که آن گام به آن‌ها وابسته است؛ جمع کردن همهٔ اعتبارنامه‌های کارخواه در یک پوشه نشت بعدی را محتمل‌تر و تشخیص بعدی را کندتر می‌کند. هر چه پرسش تنگ‌تر، فهرست فیلدهایی که می‌توانند پاسخش دهند کوتاه‌تر.

اگر فایل تازه‌ای از اپراتور آمده، پیش از جایگزینی مواد اعتماد مسیر توزیعش را تأیید کنید. پس از تغییر، نسخهٔ واردشده‌ای را که کارخواه واقعاً برگزیده و نتیجهٔ مذاکره‌شده را بررسی کنید، چون یک دستورالعمل می‌تواند توسط نسخهٔ دیگری از کارخواه نادیده گرفته یا متفاوت خوانده شود. فایل روی دیسک شاهد اتصالی که اجرا شده نیست. معنای دستورالعمل‌ها در راهنمای OpenVPN 2.6.

مقالات مرتبط