دو کلاینت OpenVPN روی یک میزبان Linux: مسیر از آنِ کیست؟
دو کلاینت میتوانند یک میزبان را شریک شوند اگر هر پیشوند صاحبی داشته باشد. هدف، استخرها، نامگذاری نمونهها و یک آزمون توقف برای هر تونل را به همین ترتیب مرور کنید.
هر دو پروفایل اتصال را گزارش میدهند و یکی از آنها بیصدا ترافیکی را حمل میکند که برای دیگری در نظر گرفته شده است. دو کلاینت روی یک میزبان ترتیبی پشتیبانیشده است؛ دو کلاینت بدون صاحب برای هر پیشوند چنین نیست. کار کمتر به بالا آوردن تونل دوم مربوط است و بیشتر به تصمیمگیری درباره اینکه کدام فرایند میتواند کدام مسیر را ادعا کند. ترتیب زیر را دنبال کنید و پیکربندی از پاسخها بیرون میآید.
با پرسیدن اینکه تونل دوم برای چه کاری است شروع کنید
سه موقعیت روی خط وضعیت یکسان به نظر میرسند و طرحهای متفاوتی میخواهند. تقسیم مقصد یک پیشوند را از پروفایل دفتر و دیگری را از پروفایل آزمایشگاه میفرستد، بدون اینکه هیچکدام مسیر پیشفرض را ادعا کند. تقسیم بر اساس برنامه معمولاً یک تونل کامل را نگه میدارد و ترافیک مشخص را با قواعد سیاست هدایت میکند. جابهجایی در صورت خرابی دقیقاً یک تونل را در هر لحظه بالا نگه میدارد، یعنی دومی نباید خودکار شروع شود.
پیش از باز کردن هر فایل پیکربندی، مورد را بنویسید، چون آن پاسخ همه چیز بعدی را تعیین میکند.
شایعترین چیدمان خراب دو تونل کامل است که هر دو یک مسیر پیشفرض را هل دادهاند، جایی که هر کس دیرتر وصل شده برنده میشود و اولی به تظاهر ادامه میدهد. این وضعیت از خط وضعیت عمدی به نظر میرسد و یک روز از جدول مسیریابی را هدر میدهد. نامگذاری مورد در ابتدا آن را ناممکن میکند، نه فقط بعید.
پیش از مسیرها به استخرها نگاه کنید
دو سرور بهراحتی نشانیها را از یک محدوده خصوصی توزیع میکنند و وقتی چنین کنند، کلاینت با دو رابط درون یک پیشوند تنها میماند. آنگاه هیچ مقصدی را نمیتوان بر اساس نشانی به یک رابط نسبت داد، چون هر دو به یک اندازه درست به نظر میرسند. یکی از استخرها را دوباره شمارهگذاری کنید، بهجای ابداع قاعدهای برای شکستن تساوی.
شبکه محلی را هم بررسی کنید، چون یک LAN خانگی یا اداری که با محدوده تونل همپوشانی دارد همان ابهام را از سمت دیگر ایجاد میکند. پیش از سرزنش کلاینت، نشانیهای میزبان را با هر دو پیکربندی سرور مقایسه کنید. تغییر استخر روی سرور آزمایشگاه یک اصلاح پنجدقیقهای است، در حالی که راهحل دور زدن با مسیریابی سیاستی برای یک پیشوند همپوشان، مالیات دائمی بر هر کسی است که بعداً پیکربندی را بخواند. پیش از انتخاب محل مداخله تصمیم بگیرید کدامیک را میخواهید.
دو خانواده نشانی یعنی دو دور از این بررسی. استخرهای IPv6 همانقدر بیصدا برخورد میکنند که IPv4.
به هر پروفایل یک صاحب بدهید
یک نمونه برای هر پروفایل، یک فایل پیکربندی برای هر نمونه و یک نام که جفت را مشخص میکند. در بستهبندی به سبک Debian، نام پس از علامت @ فایل را انتخاب میکند، از این رو دو پروفایل که نام نمونه یکسان دارند هرگز نمیتوانند هر دو کار کنند. نگاشت را از واحد نصبشده تأیید کنید، نه از یک آموزش.
systemctl cat [email protected]
ip -4 addr showسپس تصمیم بگیرید چه کسی مسیرها را نصب میکند، که پرسشی سیاستی است نه نحوی.
وقتی دو سرور مجموعههای ناسازگار را هل میدهند، یا اضافه کنید route-nopull و فقط پیشوندهایی را فهرست کنید که هر پروفایل لازم دارد، یا بگذارید یکی مسیر پیشفرض خود را نگه دارد و بقیه را با قاعده سیاست هدایت کنید. دو فرایندی که هر دو مسیر پیشفرض نصب میکنند با یک برنده واحد تمام میشوند و هیچکس نمیتواند بگوید چرا. وقتی دو تونل ترافیک منابع مختلف را حمل میکنند، پاسخ ممکن است از تونل اشتباه بیرون برود، و الگویی که دوام میآورد یک نشانه اتصال است که روی پاسخها بازگردانده و به جدول خودش هدایت میشود. نشانهها را محدود کنید تا بستههای رمزگذاریشده خود تونلها هرگز با آنها منطبق نشوند.
هر تونل را بررسی کنید، سپس یکی را متوقف کنید
وقتی هر دو بالا هستند، سه خوانش بگیرید: نشانی روی هر دستگاه تونل، مسیر به میزبانی که پشت هر یک زندگی میکند، و راهی که مقصدی بیرون از هر دو طی میکند. فهرست مسیر معمولی بهمحض ورود قواعد به بازی، توصیف جستجوی نهایی را متوقف میکند، پس از هسته بپرسید واقعاً چه چیزی را انتخاب میکرد. سپس یک نمونه را متوقف کنید و ببینید چه چیزی ناپدید میشود. اگر توقف اولی دومی را مختل کند، چیزی هنوز بین آنها مشترک است: یک مسیر، یک نام دستگاه، یا یک قاعده دیوار آتش که کسی جدا نکرده است.
ip rule show
ip route get 203.0.113.9پروفایل متوقفشده را برگردانید و همان بررسیها را تکرار کنید، چون تونلی که یک بار پس از راهاندازی مجدد کار میکند و دیگر هرگز، یک باگ چرخه عمر با لباس مسیریابی است.
در یادداشتهای استقرار ثبت کنید کدام پروفایل صاحب کدام پیشوند است، کنار محدوده استخرها. دو تونل چیدمانی عمدی است و خواننده بعدی باید مرز را پیش از دست زدن به هر پروفایل ببیند. بدون آن یادداشت، مرز را کسی دوباره کشف میکند که وقتی پیشوند مشترک سرانجام میشکند کشیک است.