سه مسیر یک کلاینت OpenConnect روی Mac به شما می‌دهند و چیزهای متفاوتی روی دیسک باقی می‌گذارند. فرمول Homebrew یک فایل دودویی کامپایل‌شده به‌همراه اسکریپت شبکه‌ای نصب می‌کند که مسیرها و DNS را تنظیم می‌کند. آرشیو انتشار کد منبع را با یک سیستم ساخت تولیدشده به شما می‌دهد. کلون git کد منبع را بدون آن می‌دهد. انتخاب گزینه نادرست دلیل آن است که افراد چند دقیقه پس از شروع یک آموزش به configure گمشده برمی‌خورند.

دو ماشین متفاوت با یک نام

مسیر بسته یک فرمان واحد است و پیش‌فرض درست برای کسانی است که کارشان اتصال است نه توسعه.

brew install openconnect

آنچه نصب می‌کند از خود فرمان مهم‌تر است. فایل دودویی کلاینت را می‌گیرید و همچنین vpnc-script را که کلاینت برای برنامه‌ریزی رابط، مسیرها و حل‌کننده فراخوانی می‌کند. این دو به‌صورت یک جفت کار می‌کنند: فایل دودویی نشست TLS را پایان می‌دهد و رابط حاصل را به اسکریپت می‌سپارد، و اسکریپت همان بخشی است که می‌داند این سیستم‌عامل شبکه‌اش را چگونه می‌خواهد تغییر دهد.

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

مسیر کد منبع در واقع چه می‌کند

آرشیو انتشار با یک سیستم ساخت تولیدشده می‌آید، پس ./configure آشنا از ابتدا وجود دارد. کلون git این‌گونه نیست، چون فایل‌های تولیدشده محصولات ساخت هستند نه چیزهایی که پروژه ذخیره می‌کند. تمام دلیل اینکه ./autogen.sh در دستورالعمل‌های کلون‌ها ظاهر می‌شود و نه آرشیوهای انتشار، همین است.

./autogen.sh
./configure
make
make install

هر خط کار مشخصی می‌کند و دانستن اینکه کدام شکست خورد از حدس‌های زیادی جلوگیری می‌کند. مرحله autogen ابزارهای autotools را برای تولید configure اجرا می‌کند. مرحله configure کامپایلر، کتابخانه‌ها و سرصفحه‌های مورد نیاز کلاینت را بررسی می‌کند و سپس فایل‌های make را می‌نویسد که آنچه یافته را بازتاب می‌دهند. مرحله make کامپایل می‌کند. مرحله install نتایج را جایی در مسیر شما کپی می‌کند.

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

نشست و پیکربندی شبکه جدا از هم هستند

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

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

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

بدانید کدام فایل دودویی را اجرا می‌کنید

ساخت نصب‌شده با دست و فایل دودویی بسته‌بندی‌شده می‌توانند با خوشی هم‌زیستی کنند و اینکه کدام اجرا می‌شود به مسیر شما بستگی دارد نه به نیت‌های شما. پیش از گزارش شماره نسخه به کسی، این را پیدا کنید.

which -a openconnect
openconnect --version
brew list --versions openconnect

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

نصب کلاینت تأیید دروازه نیست

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

دستورالعمل‌های ساخت پروژه دنباله autotools و نیازمندی اسکریپت شبکه را با جزئیات بیشتری پوشش می‌دهند و همان‌ها مرجعی هستند که باید دنبال شود، نه نوشته‌ای در وبلاگ که از انتشار macOS شما قدیمی‌تر است. اگر هدف فقط اتصال است، بسته را بگیرید، اسکریپت را نگه دارید و کامپایلر را بیرون بگذارید.

مقالات مرتبط