راه‌اندازی سرویس PPTP بر روی سرور لینوکس Ubuntu

نکته مهم: این مقاله به مرور زمان، ویرایش و یا تکمیل می‌شود!در صورتی که با مشکل تایپی، دستوری و یا مفهومی در این مقاله برخورد کردید، از شما دوست عزیز و گرامی، صمیمانه تقاضا می‌کنم که اینجانب را مطلع کرده، تا نسبت به تصحیح و تکمیل آن، در اسرع وقت اقدام نمایم.با کمال تشکرداریوش تصدیقی۰۹۱۲۱۰۸۷۴۶۱ - DariushT@GMail.com - https://WebsiteAnalytics.ir - کانال تلگرام: IranianExperts@نسخه ۱.۵ - ۱۳۹۹/۰۸/۰۹نکته: این سرویس، سرویس ناامنی می‌باشد! از سال ۲۰۰۵ با استفاده از تکنیک‌های نسبتا ساده‌ای قابلیت Hack شدن وجود دارد! لذا با مسئولیت خودتان این سرویس را بر روی Server نصب نمایید!فرض: در این مقاله فرض بر آن است که IP سرور 1.2.3.4 می‌باشد.تعریف: سرویس PPTP مخفف Point-to-Point Tunneling Protocol می‌باشد.پس از ورود به ترمینال سرور، از طریق برنامه Putty، به ترتیب دستورات ذیل را اجرا می‌کنیم:sudo -i apt update -y apt upgrade -y apt install -y nanoمراحل نصب و راه‌اندازی سرویس PPTP را به ترتیب ذیل و با دقت انجام می‌دهیم:apt-get install -y pptpdبا استفاده از ویرایشگر nano، فایل pptpd.conf را ویرایش می‌کنیم:nano /etc/pptpd.confمحتوای این فایل شامل دو قسمت Local IP و نیز Remote IP می‌باشد. در قسمت Local IP، آی‌پی مربوط به سرور (1.2.3.4) را نوشته و در قسمت Remote IP نیز Range آی‌پی که می‌خواهیم سرویس PPTP به کاربران (Client ها) اختصاص دهد را می‌نویسیم:localip 1.2.3.4 remoteip 10.10.0.2-200فایل مذکور را ذخیره کرده و از محیط ویرایشگر Nano به روش ذیل خارج می‌شویم:CTRL + X -> y -> ENTERبرای پیکربندی سرویس PPTP، مجددا از طریق ویرایشگر Nano، وارد فایل pptpd-options شده:nano /etc/ppp/pptpd-optionsو محتوای فایل را به محتوای ذیل تغییر (تکمیل) می‌کنیم:name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp nodefaultroute lock nobsdcomp novj novjcomp nologfd mtu 1490 mru 1490معمولا محتوای فایل، مشابه محتوای فوق می‌باشد، ولی باید حواسمان باشد که دو قسمت ذیل را اصلاح کرده و از Comment خارج نماییم:ms-dns 8.8.8.8 ms-dns 8.8.4.4و نیز دو قسمت ذیل را به انتهای این فایل اضافه نماییم:mtu 1490 mru 1490فایل مذکور را ذخیره کرده و از محیط ویرایشگر Nano به روش ذیل خارج می‌شویم:CTRL + X -> y -> ENTERبرای تعریف کردن شناسه‌های کاربری و گذرواژه‌های آنها، باید فایل chap-secrets را با استفاده از ویرایشگر Nano باز کرده:nano /etc/ppp/chap-secretsو محتوای آن را با توجه به نیاز خود تغییر دهیم:user1 pptpd 12345 * user2 pptpd 12345 *فایل مذکور را ذخیره کرده و از محیط ویرایشگر Nano به روش ذیل خارج می‌شویم:CTRL + X -> y -> ENTERنکته: در هر سطر، به ترتیب، موارد ذیل را نوشته و بین آن‌ها TAB می‌زنیم:شناسه‌کاربرینام سرویس (pptpd)گذرواژه*نکته: در نمونه فوق، ما دو کاربر به نام‌های user1 و user2 و با گذرواژه یکسان 12345 تعریف کرده‌ایم. * نیز بدان معنا است که کاربران (Client ها) می‌توانند با هر IP به این سرور متصل شوند. در صورتی که بخواهیم یک کاربر (Client) فقط با IP شماره 4.5.6.7 به این سرور متصل گردد، به جای * شماره 4.5.6.7 را وارد می‌کنیم.نکته: در صورتی که کاربر user1 به این سرور متصل گردد، از IP Pool تعریف شده، سرویس pptpd، یک IP‌ بین 10.10.0.2 الی 10.10.0.200 به وی اختصاص می‌دهد.برای Packet (IPv4) Forwarding، با استفاده از ویرایشگر Nano، فایل sysctl.conf را ویرایش کرده:nano /etc/sysctl.conf و دستور ذیل را از Comment خارج کرده و یا به محتوای فایل اضافه می‌کنیم:net.ipv4.ip_forward=1فایل مذکور را ذخیره کرده و از محیط ویرایشگر Nano به روش ذیل خارج می‌شویم:CTRL + X -> y -> ENTERبرای مشاهده تغییرات، دستور ذیل را اجرا می‌کنیم:sysctl -pاجرای دستور فوق، باید چنین خروجی را به ما نمایش دهد:net.ipv4.ip_forward = 1حال باید یک IPTables Rule برای ایجاد NAT بین دو Interface کارت شبکه ETH0 و PPP ایجاد نماییم.برای این منظور باید دستورات ذیل را به ترتیب اجرا نماییم:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPTنکته: در صورتی که Server به هر دلیلی Reboot گردد، دستورات فوق، به طور خودکار عمل نخواهند کرد! برای این منظور، دستورات فوق را در داخل فایلی به نام rc.local و به شکل ذیل می‌نویسیم:#!/bin/sh -e iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACC$ iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT exit 0برای این منظور، با استفاده از ویرایشگر Nano، فایل rc.local را باز کرده و ویرایش می‌کنیم.nano /etc/rc.localنکته: البته توصیه می‌گردد که از ابتدای این فایل e- را حذف نماییم!فایل مذکور را ذخیره کرده و از محیط ویرایشگر Nano به روش ذیل خارج می‌شویم:CTRL + X -> y -> ENTERبا استفاده از دستور ذیل، سرویس PPTP فعال می‌شود. این بدان معنا است که اگر Server را Reboot نموده و یا به هر شکل Reboot گردد، سرویس PPTP به صورت خودکار، در هنگام Boot‌ شدن Server راه‌اندازی می‌گردد:systemctl enable pptpdبرای راه‌اندازی سرویس PPTP از دستور ذیل استفاده می‌کنیم:service pptpd startدر صورتی که سرویس راه‌اندازی شده باشد و تغییراتی را در فایل‌های پیکربندی (Config) آن اعمال نماییم، باید سرویس مذکور را Stop و سپس Start کرده و یا با استفاده از دستور ذیل Restart نماییم:service pptpd restartبرای این‌که از وضعیت سرویس pptpd مطلع شویم، می‌توانیم از دستور ذیل استفاده نماییم:service pptpd statusدر صورتی که همه چیز با موفقیت انجام شده باشد، باید در متن نمایش داده شده، به رنگ سبز، عبارت active running ظاهر گردد.نکته: سرویس PPTP به طور پیش‌فرض از دو پورت ۱۷۲۳ (TCP) و ۴۷ استفاده می‌کنند، و متاسفانه بعضی از ISP ها مانند مبین‌نت، یکی یا هر دو پورت مذکور را فیلتر کرده‌اند! در صورتی که در هنگام اتصال به سرور دچار مشکل شدیم، می‌توانیم با استفاده از دستور telnet چک کنیم که آیا اتصال به این دو پورت از دستگاه ما امکان‌پذیر است یا خیر؟telnet [SERVER_IP] 47 telnet [SERVER_IP] 1723برای مشاهده کسانی که از بر روی Server از این پروتکل استفاده کرده‌اند از دستور ذیل استفاده می‌کنیم:last | grep pppپایان