اطلاعیه

بستن
No announcement yet.

نحوه اتصال سرور لینوکس به VPN Server L2TP/IPSec از طریق خط فرمان

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه اتصال سرور لینوکس به VPN Server L2TP/IPSec از طریق خط فرمان

    برای اتصال سرور لینوکسی خود (Debian, Ubuntu, Fedora, RHEL, CentOS) به سرور VPN با استفاده از پروتکل L2TP/IPSec در ترمینال لینوکس (Command Line) همانند محیط گرافیکی میبایست یک کلاینت یا اکانت VPN ایجاد کنیم. دستورالعمل های زیر در سرور Client برای اتصال به سرور VPN، میبایست با دسترسی root اجرا شوند.
    تنظیمات اتصال به l2tp/ipsec vpn از طریق خط فرمان لینوکس





    همچنین توصیه میشود مطالعه کنید :

    آموزش نصب و راه اندازی VPN Server L2TP/IPSec در لینوکس (RHEL/Fedora - Debian/Ubunt - CentOS)

    آموزش نصب و راه اندازی OpenVPN Server در لینوکس

    خرید سرور مجازی VPS از ناسا هاست (ایران، آلمان، فرانسه، آمریکا، کانادا)


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

    در سیستم های Ubuntu و Debian :
    کد PHP:
    # apt-get update
    # apt install wget net-tools
    # apt-get -y install strongswan xl2tpd 


    در سیستم های CentOS و RHEL :
    کد PHP:
    # yum -y install net-tools wget epel-release
    # yum --enablerepo=epel -y install strongswan xl2tpd 


    در سیستم عامل Fedora :
    کد PHP:
    # yum install wget net-tools
    # yum -y install strongswan xl2tpd 

    پکیج strongswan بمنظور راه اندازی ipsec باید نصب کنید. تمرکز این اپلیکیشن در حقیقت ایجاد یک مکانیزم قوی برای autentication با استفاده از گواهینامه های x.509 public key و private key می باشد.

    و پکیج xl2tp هم پکیج مورد نیاز برای نصب و راه اندازی تونل l2tp میباشد که نامش از پروتکل و سرویس l2tpd برگرفته شد است. هدف این پروتکل ایجاد تانل ppp از طریق شبکه های ip میباشد.


    توجه : متغیرهای زیر را در ادامه نصب هر جایی که مشاهده کردید، با مشخصات اکانت خود (شامل : آدرس سرور VPN، مقدار PSK و Username و Password) جایگزین کنید.
    کد PHP:
    VPN_SERVER_IP='your_vpn_server_ip'
    VPN_IPSEC_PSK='your_ipsec_pre_shared_key'
    VPN_USER='your_vpn_username'
    VPN_PASSWORD='your_vpn_password' 
    نکته : کدهایی که در آمده ذکر شده را حتما قبلا از اجرا در ترمینال، درون یک ادیتور متن کپی کنید، سپس بعد از ویرایش کدها را درون ترمینال تان کپی پیست و اجرا کنید.

    تنظیمات پکیج strongswan :

    برای وارد کردن تنظیمات زیر به فایل ipsec.conf کافیست دستور cat زیر را اجرا کنید تا به صورت خودکار متغیرهای زیر به درون فایل کپی شوند. فراموش نکنید قبل از وارد کردن دستور زیر در ترمینال، متغیر $VPN_SERVER_IP را پیدا و با آدرس IP سرور VPN خود جایگزین کنید. همچنین در صورت فراموش کردن این کار میتوانید بعد از ساخت فایل ipsec.con آنرا با استفاده از یک ادیتور متن باز کرده و متغیر $VPN_SERVER_IP را با ip address سرور VPN خود جایگزین کنید.

    کد PHP:
    cat > /etc/ipsec.conf <<EOF
    # ipsec.conf - strongSwan IPsec configuration file

    # basic configuration

    config setup
      
    # strictcrlpolicy=yes
      # uniqueids = no

    # Add connections here.

    # Sample VPN connections

    conn %default
      
    ikelifetime=60m
      keylife
    =20m
      rekeymargin
    =3m
      keyingtries
    =1
      keyexchange
    =ikev1
      authby
    =secret
      ike
    =aes128-sha1-modp2048!
      
    esp=aes128-sha1-modp2048!

    conn myvpn
      keyexchange
    =ikev1
      left
    =%defaultroute
      auto
    =add
      authby
    =secret
      type
    =transport
      leftprotoport
    =17/1701
      rightprotoport
    =17/1701
      right
    =$VPN_SERVER_IP
    EOF 
    تنظیمات ipsec.con در لینوکس








    دستور زیر را برای ایجاد PSK اکانت VPN تان در سرور کلاینت اجرا کنید. متغیر $VPN_IPSEC_PSK را با PSK اکانت وی پی ان خود جایگزین کنید.
    کد PHP:
    cat > /etc/ipsec.secrets <<EOF
    PSK "$VPN_IPSEC_PSK"
    EOF 
    نصب و راه اندازی ipsec l2tp در لینوکس








    سپس با استفاده از دستور chmod زیر، سطح دسترسی فایل ipsec.secrets را تغییر میدهیم.
    کد PHP:
    # chmod 600 /etc/ipsec.secrets 

    در صورتیکه از یکی از سیستم عامل های CentOS/RHEL یا Fedora استفاده میکنید، دستورات زیر را هم اجرا کنید.
    کد PHP:
    # mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
    # mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
    # ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
    # ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets 
    نصب و راه اندازی strongswan و ipsec در لینوکس









    تنظیمات پکیج xl2tpd :

    دستور زیر را برای وارد کردن تنظیمات زیر در فایل xl2tpd.conf اجرا کنید. متغیر $VPN_SERVER_IP را با آدرس ip سرور VPN خود جایگزین کنید.
    کد PHP:
    cat > /etc/xl2tpd/xl2tpd.conf <<EOF
    [lac myvpn]
    lns $VPN_SERVER_IP
    ppp debug 
    yes
    pppoptfile 
    = /etc/ppp/options.l2tpd.client
    length bit 
    yes
    EOF 
    تنظیمات xl2tpd در لینوکس








    سپس دستور زیر را برای وارد کردن تنظیمات زیر در فایل options.l2tpd.client وارد کنید. متغیر $VPN_PASSWORD و $VPN_USER را با یوزر و پسورد اکانت VPN خود جایگزین کنید.
    کد PHP:
    cat > /etc/ppp/options.l2tpd.client <<EOF
    ipcp
    -accept-local
    ipcp
    -accept-remote
    refuse
    -eap
    require-chap
    noccp
    noauth
    mtu 1280
    mru 1280
    noipdefault
    defaultroute
    usepeerdns
    connect
    -delay 5000
    name $VPN_USER
    password $VPN_PASSWORD
    EOF 
    نحوه اتصال سرور لینوکسی به اکانت vpn l2tp/ipsec








    سپس با استفاده از دستور chmod سطح دسترسی فایل options.l2tpd.client را تغییر دهید.
    کد PHP:
    # chmod 600 /etc/ppp/options.l2tpd.client 

    اکنون تنظیمات سرور کلاینت ما کامل شد. برای اتصال سرور خود به VPN سرور مراحل زیر را دنبال کنید.


    نکته : برای اتصال به سرور VPN شما میبایست هر دفعه تمام مراحل زیر تکرار کنید.


    ایجاد فایل کنترل xl2tpd :
    کد PHP:
    # mkdir -p /var/run/xl2tpd
    # touch /var/run/xl2tpd/l2tp-control 


    Restart سرویس های Strongswan و XL2TPD :
    کد PHP:
    # systemctl restart strongswan
    # systemctl restart xl2tpd

    OR

    # service strongswan restart
    # service xl2tpd restart 
    نصب و راه اندازی strongswan و xl2tpd در centos - ubunt - debian -fedora - rhel








    سپس با استفاده از دستور زیر وضعیت سرویس های strongswan و xl2tpd را بررسی میکنیم، که باید همانند عکس بالا در حالت active (running) باشند.
    کد PHP:
    # systemctl status strongswan xl2tpd | grep Active 


    نحوه Start کردن کانکشن IPSec :

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

    در سیستم های Ubuntu و Debian :
    کد PHP:
    # ipsec up myvpn 


    در سیستم های CentOS/RHEL و Fedora :
    کد PHP:
    # strongswan up myvpn 
    ایجاد کانکشن ipsec l2tp در ترمینال لینوکس








    اگر همه چیز مرتب باشد و کانفیگ ها به درستی انجام شده باشد، در انتهای دستور بالا شما میبایست پیام connection 'myvpn' established successfully را مشاهده کنید.


    نحوه Start کردن کانکشن L2TP :

    دستور زیر را اجرا کنید.
    کد PHP:
    # echo "c myvpn" > /var/run/xl2tpd/l2tp-control 
    سپس دستور ifconfig را اجرا و خروجی را بررسی کنید. یک اینترفیس جدید با نام "ppp0" باید مشاهده کنید.
    دستور ifconfig در لینوکس









    با استفاده از دستور زیر route های در حال حاضر سرور خود را بررسی کنید :
    کد PHP:
    # ip route 
    دستور ip route در لینوکس








    همانند تصویر بالا، خط "default via X.X.X.X ...." را در خروجی پیدا کنید و ip address مشخص شده در خروجی را، بعد از gw در دو دستور زیر وارد کنید.

    با استفاده از دستور زیر یک route جدید به سرور اضافه میکنیم. آدرس ip سرور VPN خود را با مقدار "YOUR_VPN_SERVER_IP" جایگزین کنید و در ادامه بعد از gw هم آدرس ip گیت وی مان را که در خروجی بالا مشخص کردیم را وارد کنید.
    کد PHP:
    # route add YOUR_VPN_SERVER_IP gw X.X.X.X 
    نحوه ایجاد route در ترمینال لینوکس








    در صورتیکه شما روی یک سرور ریموت این تنظیمات را انجام میدهید و با استفاده از ترمینال به سرور کلاینت تان وصل هستید،‌ شما میبایست یک route جدید برای ip address پابلیک سیستم شخصی خودتان ایجاد کنید که ارتباط شما با سرور کلاینت تان قطع نشود. برای این کار ابتدا از طریق این لینک ip address پابلیک خود را در گوگل جستجو کنید، یا میتوانید از ابزارهای دیگری که خودتان میشناسید استفاده کنید و آن آدرس Public IP را با مقدار YOUR_LOCAL_PC_PUBLIC_IP جایگزین کنید و در ادامه هم بعد از gw آدرس گیت وی خود را که در بالاتر به دست آورده ایم وارد میکنیم.
    کد PHP:
    # route add YOUR_LOCAL_PC_PUBLIC_IP gw X.X.X.X 
    اضافه کردن route در شل لینوکس








    یک route جدید برای شروع ارسال کل ترافیک سرور کلاینت به سمت سرور VPN اضافه کنید.
    کد PHP:
    # route add default dev ppp0 
    کانکشن VPN شما با موفقیت به VPN Server متصل شد. برای تایید اینکه ترافیک سرور کلاینت شما از روی سرور VPN رد و بدل میشود، دستور زیر را اجرا کنید.
    کد PHP:
    # wget -qO- http://ipv4.icanhazip.com; echo 
    اتصال سرور لینوکسی به سرور l2tp ipsec vpn از طریق ترمینال








    همانند تصویر، دستور بالا میبایست ip سرور VPN شما را برگرداند.

    برای متوقف کردن ارسال ترافیک سرور کلاینت به سرور VPN از دستور زیر استفاده کنید.
    کد PHP:
    # route del default dev ppp0 
    برای قطع ارتباط سرور کلاینت با سرور VPN بنا بر توزیع لینوکسی خود از دستورات زیر استفاده کنید.

    در سیستم های Ubuntu و Debian :
    کد PHP:
    # echo "d myvpn" > /var/run/xl2tpd/l2tp-control
    # ipsec down myvpn 
    در سیستم های CentOS/RHEL و Fedora :
    کد PHP:
    # echo "d myvpn" > /var/run/xl2tpd/l2tp-control
    # strongswan down myvpn 
    قطع ارتباط سرور لینوکسی با کانکشن l2tp ipsec vpn







    همانطور که در عکس بالا مشاهده میکنید، کانکشن ما با موفقیت بسته شد.


    همچنین توصیه میشود مطالعه کنید :

    تنظیمات ساخت اکانت L2TP/IPSec در لینوکس (Ubuntu, Debian, CentOS)

    تنظیمات ایجاد L2TP/IPSec VPN در آندروید

    نحوه ایجاد پروفایل L2TP IPSec VPN در IOS (iPhone/iPad)

    آموزش ساخت اکانت L2TP IPSec VPN در ویندوز 10 - 8

    آموزش ساخت اکانت L2TP IPSec VPN در ویندوز 7 و XP



    در صورتیکه در ارتباط بین سرور Client و سرور VPN مشکلی پیش آمده، بخش بررسی مشکلات و عیب یابی را مشاهده کنید. امیدوارم این آموزش برای شما مفید واقع شده باشد. فراموش نکنید اگر تجربه ی جدیدی به دست آوردید آن را با ما به اشتراک بگذارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 04-11-2020, 10:54 PM.

    #2
    سلام من طبق آموزش شما پیش رفتم ولی به مشکل خوردم. زمانیکه از دستور cat استفاده میکنم با خطای "warning: here-document at line 1 delimited by end-of-file (wanted 'EOF')" مواجه میشم، که در تصویر پیوستی نمایش داده شده است. همچنین من از اوبونتو 18.04 استفاده میکنم.
    فایل های پیوست شده
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 06-05-2020, 05:11 AM.

    کامنت


      #3
      سلام. به نظر میرسه یک جای کار رو اشتباه انجام دادید. آیا پکیج های strongswan و xl2tpd به همراه پیش نیازهای آنرا نصب کرده اید؟ روی اوبونتو چه ورژنی دارید نصب و راه اندازی میکنید؟

      کامنت


        #4
        نوشته شده توسط Habili مشاهده پست
        سلام. به نظر میرسه یک جای کار رو اشتباه انجام دادید. آیا پکیج های strongswan و xl2tpd به همراه پیش نیازهای آنرا نصب کرده اید؟ روی اوبونتو چه ورژنی دارید نصب و راه اندازی میکنید؟
        بله پکیج ها بدون مشکل نصب شد
        اوبنتو 19.10

        کامنت


          #5
          به نظر میرسه کدی که میزنید مشکل ساختاری داره. در خط آخر بعد از EOF نباید هیچ فاصله (space) وجود داشته باشه. این کد رو ابتدا درون یک ادیتور متن کپی کنید، بعد چک کنید هیچ فضای خالی بعد از EOF وجود نداشته باشه، سپس اون کد رو درون ترمینال کپی کنید و نتیجه رو اعلام کنید.
          کد HTML:
          cat > /etc/ipsec.secrets <<EOF
          : PSK "$VPN_IPSEC_PSK"
          EOF

          کامنت

          در حال انجام ...
          X