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

ثبت کنید طرف مقابل چه منتشر می‌کند

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

FamilyPortsLinux side
PPTPTCP 1723 plus GRE, IP protocol 47pppd with a peer file
L2TP/IPsecUDP 500, 4500, 1701NetworkManager plugin over strongSwan
IKEv1 aggressive with XAuthUDP 500native strongSwan connection
AnyConnect-style portalTCP 443openconnect with a TUN device

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

PPTP: پیش از ویرایش pppd، GRE را اثبات کنید

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

pppd call branch-office
tcpdump -ni any proto gre -c 5

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

L2TP/IPsec: یک پیشنهاد منطبق بر ده تلاش پیروز می‌شود

به‌جای پنجرهٔ دسکتاپ، گزارش دیمون را بخوانید، چون پنجره چند شکست متمایز را در یک پیام جمع می‌کند. خطای NO_PROPOSAL_CHOSEN به فاز یک تعلق دارد: کلاینت رمزگذاری، هش یا گروه Diffie-Hellmanی پیشنهاد کرده که سرور نمی‌پذیرد. فهرست کنید دستگاه چه پشتیبانی می‌کند و یک پیشنهاد منطبق با آن بنویسید، چون ترکیب‌های تصادفی بیشتر همان خطا را کندتر تولید می‌کنند. روی دسکتاپ، کلاینت عملی افزونهٔ NetworkManager L2TP با strongSwan یا Libreswan در زیر آن است.

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

IKEv1 تهاجمی با XAuth، و حالت درگاه

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

conn branch
    keyexchange=ikev1
    aggressive=yes
    leftauth=psk
    leftauth2=xauth
    leftsourceip=%config
    right=203.0.113.10

نسخه‌های قدیمی‌تر strongSwan از xauth=client استفاده می‌کردند جایی که نسخهٔ 5 از leftauth2=xauth استفاده می‌کند، پس یک قطعهٔ کپی‌شده ممکن است فقط به‌خاطر نحو شکست بخورد. برای درگاه TLS، openconnect که پروتکل AnyConnect را صحبت می‌کند از عهدهٔ Cisco و بیشتر برندهای تغییرنام‌یافته برمی‌آید، و به دستگاه TUN و اختیارات پیکربندی آن نیاز دارد. نشانی درگاه را دقیقاً همان‌گونه که مرورگر نشان می‌دهد بدهید، همراه با هر مسیری که دستگاه انتظار دارد، سپس پیش از آزمایش هر چیزی در پشت آن، نشانی تخصیص‌یافته را بررسی کنید. از پیش ساختن رابط یک دسته غافلگیری را در هنگام راه‌اندازی حذف می‌کند.

sudo ip tuntap add dev tun0 mode tun
sudo openconnect --protocol=anyconnect vpn.example.com

وصل شوید، سپس به ترتیبی ثابت تأیید کنید

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

ip -4 addr show tun0
ip route get 10.20.30.10
getent hosts app.internal

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

مقالات مرتبط