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

یک سوکت، یک صاحب

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

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

What you needMechanism that fitsWhat it cannot do
Periodic list of connected clientsStatus file written on an intervalDeliver events as they happen
Interactive prompts and session controlThe single management connectionServe two controllers at once
Multiple consumers of eitherOne owner process that fans outExist without you writing it

تصمیم بگیرید کدام مؤلفه کنترل را در اختیار دارد

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

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

برای جمع‌کننده‌ها از عکس‌های وضعیت استفاده کنید

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

status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix

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

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

توزیع یک طراحی است، نه یک حالت

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

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

با سوکت مانند یک امتیاز رفتار کنید، نه مانند سنجه‌ها

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

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

مقالات مرتبط