کتاب "لینوکس در عمل"

کتاب "لینوکس در عمل" سلام بر اهالی خبر! در این کتاب، دیوید کلینتون 12 پروژه واقعی از جمله خودکارسازی سیستم پشتیبان گیری و بازیابی، راه اندازی یک ابر فایل شخصی به سبک Dropbox و ایجاد سرور مدیاویکی خود را شرح می دهد. شما مجازی سازی، بازیابی فاجعه، امنیت، پشتیبان گیری، DevOps و عیب یابی سیستم را از طریق مطالعات موردی جالب بررسی خواهید کرد. هر فصل با مروری بر بهترین شیوه ها، واژه نامه ای از اصطلاحات جدید و تمرین ها به پایان می رسد.

گزیده «10.1. ایجاد یک تونل OpenVPN"

من قبلاً در این کتاب در مورد رمزگذاری صحبت کرده ام. SSH و SCP می توانند از داده های منتقل شده از طریق اتصالات راه دور محافظت کنند (فصل 3)، رمزگذاری فایل می تواند از داده ها در زمانی که در سرور ذخیره می شود محافظت کند (فصل 8)، و گواهی های TLS/SSL می توانند از داده های منتقل شده بین سایت ها و مرورگرهای مشتری محافظت کنند (فصل 9) . اما گاهی اوقات نیاز است که داده های شما در طیف وسیع تری از اتصالات محافظت شوند. برای مثال، ممکن است برخی از اعضای تیم شما در حالی که از طریق هات اسپات های عمومی به Wi-Fi متصل می شوند، در جاده کار کنند. مطمئناً نباید تصور کنید که همه چنین نقاط دسترسی ایمن هستند، اما افراد شما به راهی برای اتصال به منابع شرکت نیاز دارند - و اینجاست که VPN می تواند به شما کمک کند.

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

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

خود تونل امنیت را تضمین نمی کند. اما یکی از استانداردهای رمزگذاری را می توان در ساختار شبکه گنجاند که سطح امنیت را به میزان قابل توجهی افزایش می دهد. تونل‌هایی که با استفاده از بسته منبع باز OpenVPN ایجاد شده‌اند، از همان رمزگذاری TLS/SSL استفاده می‌کنند که قبلاً درباره آن خوانده‌اید. OpenVPN تنها گزینه تونل زنی موجود نیست، اما یکی از شناخته شده ترین ها است. این پروتکل کمی سریعتر و ایمن تر از پروتکل جایگزین لایه 2 تونل است که از رمزگذاری IPsec استفاده می کند.

آیا می‌خواهید که همه اعضای تیمتان هنگام حرکت در جاده یا کار در ساختمان‌های مختلف، به طور ایمن با یکدیگر ارتباط برقرار کنند؟ برای انجام این کار، باید یک سرور OpenVPN ایجاد کنید تا امکان اشتراک گذاری برنامه و دسترسی به محیط شبکه محلی سرور را فراهم کند. برای انجام این کار، تنها کاری که باید انجام دهید این است که دو ماشین مجازی یا دو کانتینر را اجرا کنید: یکی به عنوان سرور/میزبان و دیگری به عنوان مشتری. ساخت VPN فرآیند ساده ای نیست، بنابراین احتمالاً ارزش آن را دارد که چند دقیقه وقت بگذارید تا تصویر بزرگ را در ذهن داشته باشید.

کتاب "لینوکس در عمل"

10.1.1. پیکربندی سرور OpenVPN

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

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

پس از استفاده از نام میزبان، ممکن است هنگام اجرای دستورات بعدی با پیام های مزاحم Unable to Resolve Host OpenVPN-Server مواجه شوید. به روز رسانی فایل /etc/hosts با نام میزبان جدید مناسب باید مشکل را حل کند.

آماده سازی سرور خود برای OpenVPN

برای نصب OpenVPN بر روی سرور خود، به دو بسته نیاز دارید: openvpn و easy-rsa (برای مدیریت فرآیند تولید کلید رمزگذاری). کاربران CentOS ابتدا باید در صورت لزوم مخزن epel-release را نصب کنند، همانطور که در فصل 2 انجام دادید. برای اینکه بتوانید دسترسی به برنامه سرور را آزمایش کنید، می توانید وب سرور Apache را نیز نصب کنید (apache2 در اوبونتو و httpd در CentOS).

در حالی که در حال راه اندازی سرور خود هستید، توصیه می کنم فایروالی را فعال کنید که همه پورت ها را به جز 22 (SSH) و 1194 (درگاه پیش فرض OpenVPN) مسدود می کند. این مثال نشان می‌دهد که ufw چگونه روی اوبونتو کار می‌کند، اما مطمئن هستم که هنوز برنامه فایروالد CentOS از فصل 9 را به خاطر دارید:

# ufw enable
# ufw allow 22
# ufw allow 1194

برای فعال کردن مسیریابی داخلی بین واسط‌های شبکه روی سرور، باید یک خط (net.ipv4.ip_forward = 1) را در فایل /etc/sysctl.conf حذف کنید. این به مشتریان راه دور اجازه می‌دهد تا در صورت نیاز پس از اتصال، هدایت شوند. برای اینکه گزینه جدید کار کند، sysctl -p را اجرا کنید:

# nano /etc/sysctl.conf
# sysctl -p

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

  1. مجموعه ای از کلیدهای رمزگذاری زیرساخت کلید عمومی (PKI) را با استفاده از اسکریپت های ارائه شده با بسته easy-rsa روی سرور ایجاد کنید. در اصل، سرور OpenVPN همچنین به عنوان مرجع گواهی خود (CA) عمل می کند.
  2. کلیدهای مناسب را برای مشتری آماده کنید
  3. فایل server.conf را برای سرور پیکربندی کنید
  4. سرویس گیرنده OpenVPN خود را تنظیم کنید
  5. VPN خود را بررسی کنید

تولید کلیدهای رمزگذاری

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

کتاب "لینوکس در عمل"
وقتی OpenVPN را نصب کردید، دایرکتوری /etc/openvpn/ به طور خودکار ایجاد شد، اما هنوز چیزی در آن وجود ندارد. بسته‌های openvpn و easy-rsa همراه با فایل‌های الگوی نمونه هستند که می‌توانید به عنوان پایه‌ای برای پیکربندی خود استفاده کنید. برای شروع فرآیند صدور گواهینامه، دایرکتوری قالب easy-rsa را از /usr/share/ به /etc/openvpn کپی کنید و به دایرکتوری easy-rsa/ تغییر دهید:

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

دایرکتوری easy-rsa اکنون حاوی تعداد زیادی اسکریپت خواهد بود. روی میز 10.1 ابزارهایی را که برای ایجاد کلیدها استفاده خواهید کرد فهرست می کند.

کتاب "لینوکس در عمل"

عملیات فوق به حقوق ریشه نیاز دارد، بنابراین باید از طریق sudo su root شوید.

اولین فایلی که با آن کار خواهید کرد vars نام دارد و حاوی متغیرهای محیطی است که easy-rsa هنگام تولید کلیدها از آنها استفاده می کند. شما باید فایل را ویرایش کنید تا از مقادیر خود به جای مقادیر پیش فرضی که از قبل وجود دارد استفاده کنید. این همان چیزی است که پرونده من به نظر می رسد (فهرست 10.1).

لیست 10.1. قطعات اصلی فایل /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

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

حتماً فایل را با استفاده از یک پوسته جدید مجدداً اجرا کنید تا فرآیند ناتمام تکمیل شود. وقتی این کار انجام شد، اسکریپت از شما می‌خواهد اسکریپت دیگری را اجرا کنید، پاک کردن همه، برای حذف هر محتوایی در فهرست /etc/openvpn/easy-rsa/keys/:

کتاب "لینوکس در عمل"
به طور طبیعی، مرحله بعدی اجرای اسکریپت clean-all و به دنبال آن build-ca است که از اسکریپت pkitool برای ایجاد گواهی ریشه استفاده می کند. از شما خواسته می شود تنظیمات هویت ارائه شده توسط vars را تأیید کنید:

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

بعد اسکریپت build-key-server می آید. از آنجایی که از همان اسکریپت pkitool به همراه یک گواهی ریشه جدید استفاده می کند، سوالات مشابهی را برای تایید ایجاد جفت کلید خواهید دید. کلیدها بر اساس آرگومان هایی که پاس می دهید نامگذاری می شوند، که، مگر اینکه چندین VPN را روی این دستگاه اجرا کنید، معمولاً سرور خواهند بود، مانند مثال:

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

OpenVPN از پارامترهای تولید شده توسط الگوریتم Diffie-Hellman (با استفاده از build-dh) برای مذاکره در مورد احراز هویت برای اتصالات جدید استفاده می کند. فایل ایجاد شده در اینجا نیازی به مخفی بودن ندارد، بلکه باید با استفاده از اسکریپت build-dh برای کلیدهای RSA که در حال حاضر فعال هستند تولید شود. اگر در آینده کلیدهای RSA جدیدی ایجاد کنید، باید فایل Diffie-Hellman را نیز به روز کنید:

# ./build-dh

کلیدهای سمت سرور شما اکنون در فهرست /etc/openvpn/easy-rsa/keys/ قرار می گیرند، اما OpenVPN این را نمی داند. به طور پیش فرض، OpenVPN به دنبال کلیدها در /etc/openvpn/ می گردد، بنابراین آنها را کپی کنید:

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

آماده سازی کلیدهای رمزگذاری مشتری

همانطور که قبلاً دیدید، رمزگذاری TLS از جفت کلیدهای منطبق استفاده می کند: یکی روی سرور نصب شده و دیگری روی کلاینت راه دور نصب شده است. این بدان معنی است که شما به کلیدهای مشتری نیاز خواهید داشت. دوست قدیمی ما pkitool دقیقا همان چیزی است که شما برای این کار نیاز دارید. در این مثال، زمانی که برنامه را در پوشه /etc/openvpn/easy-rsa/ اجرا می کنیم، به آن آرگومان کلاینت ارسال می کنیم تا فایل هایی به نام client.crt و client.key تولید کند:

# ./pkitool client

دو فایل کلاینت، همراه با فایل اصلی ca.crt که هنوز در دایرکتوری keys/ است، اکنون باید به طور ایمن به کلاینت شما منتقل شوند. به دلیل مالکیت و حقوق دسترسی آنها، ممکن است این کار چندان آسان نباشد. ساده ترین روش این است که به صورت دستی محتویات فایل منبع (و چیزی جز آن محتوا) را در ترمینالی که روی دسکتاپ رایانه شخصی شما اجرا می شود کپی کنید (متن را انتخاب کنید، روی آن کلیک راست کنید و از منو گزینه Copy را انتخاب کنید). سپس این را در یک فایل جدید با همان نامی که در ترمینال دوم متصل به کلاینت خود ایجاد می کنید، قرار دهید.

اما هر کسی می تواند برش و چسبانده شود. در عوض، مانند یک مدیر فکر کنید زیرا همیشه به رابط کاربری گرافیکی دسترسی نخواهید داشت که در آن عملیات برش/پیست کردن امکان پذیر است. فایل ها را در فهرست اصلی کاربر خود کپی کنید (به طوری که عملیات scp از راه دور بتواند به آنها دسترسی داشته باشد)، و سپس از chown برای تغییر مالکیت فایل ها از root به یک کاربر معمولی غیر ریشه استفاده کنید تا عمل scp از راه دور انجام شود. مطمئن شوید که تمام فایل های شما در حال حاضر نصب و در دسترس هستند. کمی بعد آنها را به مشتری منتقل خواهید کرد:

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

با مجموعه کاملی از کلیدهای رمزگذاری آماده کار، باید به سرور بگویید که چگونه می‌خواهید VPN را ایجاد کنید. این کار با استفاده از فایل server.conf انجام می شود.

کاهش تعداد ضربه های کلید

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

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

راه اندازی فایل server.conf

چگونه می توانید بدانید که فایل server.conf چگونه باید باشد؟ قالب دایرکتوری easy-rsa را که از /usr/share/ کپی کرده اید به خاطر دارید؟ هنگامی که OpenVPN را نصب کردید، یک فایل قالب پیکربندی فشرده برای شما باقی ماند که می توانید آن را در /etc/openvpn/ کپی کنید. من بر اساس این واقعیت است که الگو آرشیو شده است و شما را با یک ابزار مفید آشنا می کنم: zcat.

شما قبلاً در مورد چاپ محتوای متنی یک فایل روی صفحه با استفاده از دستور cat می دانید، اما اگر فایل با استفاده از gzip فشرده شود چه؟ همیشه می‌توانید فایل را از حالت فشرده خارج کنید و سپس cat با خوشحالی آن را خروجی می‌دهد، اما این یک یا دو مرحله بیشتر از نیاز است. در عوض، همانطور که ممکن است حدس زده باشید، می توانید دستور zcat را صادر کنید تا متن بسته نشده را در یک مرحله در حافظه بارگذاری کنید. در مثال زیر، به جای چاپ متن روی صفحه، آن را به فایل جدیدی به نام server.conf هدایت می کنید:

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

بیایید اسناد گسترده و مفیدی را که به همراه فایل ارائه می‌شود کنار بگذاریم و ببینیم پس از اتمام ویرایش، چه شکلی خواهد بود. توجه داشته باشید که نقطه ویرگول (;) به OpenVPN می گوید که خط بعدی را نخواند یا اجرا نکند (فهرست 10.2).

کتاب "لینوکس در عمل"
اجازه دهید برخی از این تنظیمات را مرور کنیم.

  • به‌طور پیش‌فرض، OpenVPN روی پورت 1194 اجرا می‌شود. می‌توانید این را تغییر دهید، برای مثال، برای پنهان کردن بیشتر فعالیت‌های خود یا جلوگیری از درگیری با سایر تونل‌های فعال. از آنجایی که 1194 به حداقل هماهنگی با مشتریان نیاز دارد، بهتر است این کار را از این طریق انجام دهید.
  • OpenVPN از پروتکل کنترل انتقال (TCP) یا پروتکل دیتاگرام کاربر (UDP) برای انتقال داده ها استفاده می کند. TCP ممکن است کمی کندتر باشد، اما قابل اطمینان تر است و توسط برنامه هایی که در هر دو انتهای تونل اجرا می شوند قابل درک است.
  • زمانی که می‌خواهید یک تونل IP ساده‌تر و کارآمدتر ایجاد کنید که محتوای داده‌ها را حمل می‌کند و نه چیز دیگری، می‌توانید برنامه توسعه را مشخص کنید. از طرف دیگر، اگر نیاز به اتصال چندین رابط شبکه (و شبکه هایی که آنها نشان می دهند) دارید، یک پل اترنت ایجاد کنید، باید dev tap را انتخاب کنید. اگر معنی همه اینها را متوجه نشدید، از آرگومان tun استفاده کنید.
  • چهار خط بعدی به OpenVPN نام سه فایل احراز هویت روی سرور و فایل گزینه های dh2048 را می دهد که قبلا ایجاد کرده اید.
  • خط سرور محدوده و ماسک زیرشبکه را تعیین می کند که برای تخصیص آدرس های IP به کلاینت ها در هنگام ورود استفاده می شود.
  • پارامتر فشار اختیاری "route 10.0.3.0 255.255.255.0" به مشتریان راه دور اجازه می دهد تا به زیرشبکه های خصوصی در پشت سرور دسترسی داشته باشند. انجام این کار همچنین مستلزم راه اندازی شبکه بر روی خود سرور است تا زیرشبکه خصوصی از زیرشبکه OpenVPN (10.8.0.0) مطلع شود.
  • خط port-share localhost 80 به شما این امکان را می دهد که ترافیک مشتری ورودی در پورت 1194 را به یک وب سرور محلی که در پورت 80 گوش می دهد هدایت کنید. (اگر می خواهید از وب سرور برای آزمایش VPN خود استفاده کنید این کار مفید خواهد بود.) این فقط کار می کند. پس از انتخاب پروتکل tcp.
  • خطوط nobody کاربر و گروه nogroup باید با حذف نقطه ویرگول (;) فعال شوند. مجبور کردن کلاینت‌های راه دور به‌عنوان هیچ‌کس و بدون گروه، تضمین می‌کند که جلسات روی سرور فاقد امتیاز هستند.
  • log مشخص می‌کند که هر بار که OpenVPN شروع می‌شود، ورودی‌های گزارش فعلی، ورودی‌های قدیمی را بازنویسی می‌کنند، در حالی که log-append ورودی‌های جدید را به فایل گزارش موجود اضافه می‌کند. خود فایل openvpn.log در پوشه /etc/openvpn/ نوشته می شود.

علاوه بر این، یک مقدار مشتری به مشتری نیز اغلب به فایل پیکربندی اضافه می شود تا چندین مشتری علاوه بر سرور OpenVPN بتوانند یکدیگر را ببینند. اگر از پیکربندی خود راضی هستید، می توانید سرور OpenVPN را راه اندازی کنید:

# systemctl start openvpn

با توجه به تغییر ماهیت رابطه بین OpenVPN و systemd، ممکن است گاهی اوقات برای راه اندازی یک سرویس به نحو زیر نیاز باشد: systemctl start openvpn@server.

اجرای ip addr برای فهرست کردن رابط‌های شبکه سرور شما اکنون باید پیوندی به یک رابط جدید به نام tun0 ارائه دهد. OpenVPN آن را برای خدمت به مشتریان ورودی ایجاد می کند:

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

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

10.1.2. پیکربندی کلاینت OpenVPN

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

در این بخش، من بر روی تنظیم دستی نوعی از رایانه لینوکس تمرکز خواهم کرد تا به عنوان یک کلاینت OpenVPN عمل کند. اما این تنها راهی نیست که از طریق آن این فرصت در دسترس است. OpenVPN از برنامه های سرویس گیرنده پشتیبانی می کند که می توانند روی دسکتاپ و لپ تاپ های دارای Windows یا macOS و همچنین گوشی های هوشمند و تبلت های اندروید و iOS نصب و استفاده شوند. برای جزئیات به openvpn.net مراجعه کنید.

بسته OpenVPN همانطور که روی سرور نصب شده بود باید روی ماشین کلاینت نصب شود، اگرچه در اینجا نیازی به easy-rsa نیست زیرا کلیدهایی که استفاده می کنید از قبل وجود دارند. شما باید فایل قالب client.conf را در پوشه /etc/openvpn/ که به تازگی ایجاد کرده اید کپی کنید. این بار فایل فشرده نمی شود، بنابراین دستور cp معمولی کار را به خوبی انجام می دهد:

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

بیشتر تنظیمات در فایل client.conf شما کاملاً توضیحی است: آنها باید با مقادیر روی سرور مطابقت داشته باشند. همانطور که از فایل مثال زیر می بینید، پارامتر منحصر به فرد Remote 192.168.1.23 1194 است که آدرس IP سرور را به مشتری می گوید. دوباره مطمئن شوید که این آدرس سرور شما است. همچنین باید کامپیوتر کلاینت را وادار کنید تا صحت گواهی سرور را تأیید کند تا از حمله احتمالی انسان در وسط جلوگیری شود. یکی از راه های انجام این کار اضافه کردن سرور خط راه دور-cert-tls است (فهرست 10.3).

کتاب "لینوکس در عمل"
اکنون می توانید به دایرکتوری /etc/openvpn/ بروید و کلیدهای گواهی را از سرور استخراج کنید. آدرس IP سرور یا نام دامنه در مثال را با مقادیر خود جایگزین کنید:

کتاب "لینوکس در عمل"
تا زمانی که OpenVPN را روی مشتری اجرا نکنید، هیچ چیز هیجان انگیزی اتفاق نخواهد افتاد. از آنجایی که باید چند آرگومان را ارسال کنید، این کار را از خط فرمان انجام خواهید داد. آرگومان --tls-client به OpenVPN می گوید که شما به عنوان یک کلاینت عمل خواهید کرد و از طریق رمزگذاری TLS متصل خواهید شد و --config به فایل پیکربندی شما اشاره می کند:

# openvpn --tls-client --config /etc/openvpn/client.conf

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

  • خروجی عملیات OpenVPN روی کلاینت را با دقت بخوانید. اغلب حاوی توصیه های ارزشمندی است که دقیقاً چه کاری را نمی توان انجام داد و چرا.
  • پیام های خطا را در فایل های openvpn.log و openvpn-status.log در پوشه /etc/openvpn/ روی سرور بررسی کنید.
  • گزارش‌های سیستم روی سرور و سرویس گیرنده را برای پیام‌های مربوط به OpenVPN و زمان‌بندی شده بررسی کنید. (journalctl -ce جدیدترین ورودی ها را نمایش می دهد.)
  • اطمینان حاصل کنید که یک اتصال شبکه فعال بین سرور و مشتری دارید (اطلاعات بیشتر در این مورد در فصل 14).

درباره نویسنده

دیوید کلینتون - مدیر سیستم، معلم و نویسنده. او برای بسیاری از رشته‌های فنی مهم، از جمله سیستم‌های لینوکس، محاسبات ابری (به ویژه AWS)، و فناوری‌های کانتینری مانند داکر، مطالب آموزشی را مدیریت، نوشته و ایجاد کرده است. او کتاب خدمات وب آمازون را در یک ماه ناهار بیاموز (منینگ، 2017) نوشت. بسیاری از دوره‌های آموزشی ویدیویی او را می‌توانید در Pluralsight.com بیابید، و پیوندهای کتاب‌های دیگر او (در مورد مدیریت لینوکس و مجازی‌سازی سرور) در این آدرس موجود است. bootstrap-it.com.

» جزئیات بیشتر در مورد کتاب را می توانید در اینجا بیابید وب سایت ناشر
» فهرست مندرجات
» گزیده ای

برای Khabrozhiteley 25% تخفیف با استفاده از کوپن - لینـوکــس
پس از پرداخت نسخه کاغذی کتاب، کتاب الکترونیکی از طریق ایمیل ارسال می شود.

منبع: www.habr.com

اضافه کردن نظر