duplicate-cn به دو دستگاه یک هویت میدهد، نه دو تا
duplicate-cn یک نشست همزمان دوم را زیر یک نام مشترک مجاز میکند. هرگز هویت دستگاه دوم، نشانی دوم یا ابطال جداگانه ایجاد نمیکند.
نمیمه را روی تبلت کپی کنید، وصل شوید، و لپتاپ قطع میشود. duplicate-cn را اضافه کنید، هر دو متصل میمانند و مشکل حلشده به نظر میرسد، تا وقتی دو دستگاه بر سر یک نشانی تونل با هم بجنگند یا یک تبلت گمشده کل حساب را آفلاین کند. این گزینه یک چیز و فقط یک چیز را تغییر میدهد: اینکه آیا سرور نشست دومی را زیر نامی که قبلاً دیده است مجاز میکند. هر چیزی که مردم انتظار دارند درست کند، از استقلال دستگاهها تا نشانیدهی برای هر دستگاه و ابطال گزینشی، همچنان با هویت انجام میشود، و هویت اینجا گواهی است.
افسانه: نشست دوم یعنی هویت دوم
شهود میگوید دو اتصال باید دو کارخواه باشند، و دو کارخواه باید دو دستگاه با حقوق خودشان باشند. سرور اینطور مدل نمیکند. یک نام مشترک میبیند و با فعال بودن duplicate-cn بیش از یک نشست زنده با آن نام را میپذیرد، و هر کدام وضعیت نشست خود را در daemon میگیرند.
هیچچیز در این پذیرش به بررسی گواهی دست نمیزند. همان گواهی همچنان اعتبارنامه است، همان کلید همچنان کلید خصوصی است، و هر سیاستی که بر موضوع گواهی استوار باشد همچنان دو بار به همان مقدار میرسد. نشست دوم یک سوکت دوم است، نه یک هویت دوم.
این تفاوت تا وقتی همهچیز کار میکند نامرئی است. درست در لحظهای که باید دو دستگاه را از هم تشخیص دهید بسیار پیدا میشود، و آن معمولاً روزی است که یکی از آنها گم میشود.
وقتی دو نشست یک نام را شریک میشوند واقعاً چه تغییر میکند
بدون این گزینه، اتصال تازه زیر یک نام مشترک که از قبل متصل است، نشست پیشین را کنار میزند. به همین دلیل وقتی تبلت وصل میشود لپتاپ قطع میشود، و این یک محافظ عمدی در برابر ابهام است نه یک باگ. با این گزینه، هر دو نشست زنده میمانند و سرور آنها را جداگانه بر اساس نشست ردیابی میکند، نه بر اساس دستگاه.
هر نشست همچنان اتصال بیرونی خودش و کلیدهای مذاکرهشده خودش را دارد، پس گذردهی همزمان واقعاً همزمان است. آنچه شریک هستند هر چیزی است که از اعتبارنامه مشتق میشود: جستوجوهای سیاست، پیکربندی مخصوص کارخواه، هویت در گزارش و ابطال. وضعیت نشست به اتصال تعلق دارد و با آن میمیرد، در حالی که واقعیتهای سطح اعتبارنامه برای هر دو باقی میمانند. به همین دلیل خروجی وضعیت میتواند یک نام را دو بار فهرست کند در حالی که شمارندهها جدا میمانند.
پیش از طراحی بر اساس آن، تأیید کنید که بیلد شما واقعاً چه میکند، چون اثر این گزینه را خود گزینه تعیین میکند نه شنیدهها:
grep -n 'duplicate-cn\|client-config-dir\|username-as-common-name' /etc/openvpn/server.conf
نشانی ثابتی که فکر میکردید اختصاص دادهاید
پیکربندی هر کارخواه با نام جستوجو میشود و تله همینجاست. یک فایل client-config-dir که به نام مشترک نامگذاری شده برای هر دستگاهی که آن نام را به کار میبرد اعمال میشود، پس ifconfig-push داخل آن به هر دو دستگاه یک نشانی تونل میدهد. نشست دوم یا برقرار نمیشود یا طوری برخورد میکند که شبیه خطای مسیریابی است.
یک استخر پویا بهطور تصادفی بهتر عمل میکند، چون به هر نشست بهطور مستقل نشانی از استخر داده میشود. این هنوز نشانی پایدار برای هر دستگاه به شما نمیدهد، و قطعاً سیاستی برای هر دستگاه که به آن نشانی گره خورده باشد نمیدهد.
اگر استقرار از username-as-common-name استفاده کند، کلید جستوجو نام کاربری احرازشده میشود به جای موضوع گواهی، و همان برخورد برای هر کسی که دو بار وارد شود رخ میدهد. نامی که پیکربندی را میگرداند باید برای هر دستگاه یکتا باشد تا پیکربندی هر دستگاه معنایی داشته باشد.
آنچه یک هویت مشترک هنگام حذف نمیتواند انجام دهد
ابطال روی گواهی عمل میکند، نه روی نام نمایشی و نه روی نشست. آن گواهی را باطل کنید و هر دستگاهی که نسخهای دارد یکجا دسترسی را از دست میدهد، از جمله دستگاهی در دفتر که کسی نمیخواهد مزاحمش شود. نگهش دارید و دستگاه گمشده به کار ادامه میدهد، چون هیچچیز در پروتکل آن را از نسخه تأییدشده جدا نمیکند.
گزارشها همان ابهام را به ارث میبرند. خروجی وضعیت یک نام مشترک و یک نشانی واقعی نشان میدهد و هر دو میتوانند متعلق به هر یک از دو دستگاه باشند. بازبینی حادثهای که باید بداند کدام ماشین چه کاری کرده است نمیتواند از سوابق خود VPN به این پرسش پاسخ دهد، هر قدر هم سطح گزارش جزئیات بدهد.
هیچ راه دور زدن رمزنگاری برای این وجود ندارد. دو دستگاهی که یک گواهی را ارائه میدهند برای سرور همان مشارکتکننده دو بار هستند، و هر طرحی که خلاف آن را ادعا کند یک قرارداد نامگذاری است نه یک کنترل.
چه وقت اشتراک درست است و چگونه آن را محدود کنیم
اشتراک کاربردهای مشروعی دارد: یک حساب آزمایشگاهی که چند ماشین آزمون از آن استفاده میکنند، یا خانهای که دستگاههایش با هم مدیریت میشوند و دقت ابطال اهمیتی ندارد. در این موارد گزینه را آگاهانه فعال کنید، اعتبارنامه مشترک را از سیاست هر دستگاه بیرون نگه دارید و به استخر جا بدهید تا نشستها روی یک نشانی برخورد نکنند.
برای هر چیزی که به نشانیهای جدا، گزارشهای جدا یا حذف جدا نیاز دارد، گواهیهای جداگانه از مسیر عادی ثبت صادر کنید. این به هر سامانه پاییندستی یک شیء متمایز میدهد که بر آن تکیه کند، و گزینه بیاهمیت میشود چون نامها از قبل یکتا هستند.
هر مسیری را که انتخاب کنید، مدل مدیریت را بیازمایید نه ورود را. هر دو دستگاه را وصل کنید، تأیید کنید که نشانیهای متفاوت دارند، سپس یک گمشدن را شبیهسازی کنید و بررسی کنید که میتوانید دقیقاً یکی از آنها را حذف کنید. راهنمای openvpn(8) دامنه این گزینه را تعیین میکند؛ روش حذف شما تعیین میکند که آیا اشتراک واقعاً پذیرفتنی است.