,

اسکریپت راه‌اندازی OCServ یا به اصلاح OpenConnect در CentOS

OCServ-Cisco-AnyConnect

OCServ یا به اصلاح OpenConnect یک ابزار برای تونل (Tunnle) زدن در اینترنت می‌باشد و از محاسن این تونل، رمزنگاری کردن اطلاعاتی است که رد و بدل می‌شود. این آموزش صرفا جهت افزایش امنیت در فضای مجازی است.

استفاده از این ابزار زیاد سخت نیست اما برای راحتی شما یک اسکریپت تهیه کردم که تقریبا تمام کارهاش رو خودش انجام میده.

برای اتصال به سرور OCServ به چه ابزاری نیاز است ؟

برای اتصال می‌توان از نرم افزار OpenConnect یا Cisco AnyConnect استفاده کرد. نرم‌افزار Cisco AnyConnect برای تمام پلتفرم‌ها موجود است.

چرا CentOS ؟

من این ابزار رو روی Ubuntu هم تست کردم اما روی CentOS پایداری بیشتری مشاهده کردم. همچنین امکان اتصال به Radius در CentOS وجود دارد.

پیش‌نیازها :

  • یک VPS با آی پی اختصاصی
  • سیستم عامل CentOS 7

آموزش :

۱- CentOS خود را آپدیت کنید.

۲- پکیج‌های epel-release و net-tools و Radcli را نصب کنید.

yum install net-tools epel-release radcli

۳- اسکریپت را از اینجا یا با دستور زیر در داخل سرور خود دانلود کنید.

wget -c https://endway.ir/wp-content/uploads/2018/01/ocserv.zip

۴- آن را از حالت فشرده خارج کنید.

۵- Permission اجرایی به اسکریپت بدهید.

chmod +x ocserv.sh

۶- اسکریپت را اجرا کنید.

./ocserv.sh

۷- هنگام اجرای اسکریپت یک سری سوال برای راحتی کار و تنظیمات پیشفرض از شما پرسیده می‌شود. به آن‌ها پاسخ دهید.

۸- منتظر بمانید تا اجرای اسکریپت به پایان برسد.

۹- با دستور زیر می‌توانید برای کاربرانتان نام کاربری و رمزعبور بسازید

sudo ocpasswd -c /etc/ocserv/ocpasswd Name

۱۰- به جای Name نام کاربری را وارد کنید. پس از Enter کردن دستور بالا از شما رمزعبور برای همان نام‌کابری که در بالا تعریف کردیم پرسیده می‌شود.

۱۱- نصب به پایان رسید و شما می‌توانید از این ابزار استفاده نمایید.

 

پ.ن.۱ : تمام این اسکریپت رو من ننوشتم و این اسکریپت رو به نام خودم تموم نمی‌کنم.

پ.ن.۲ : این ابزار قابلیت اتصال به Radius را نیز دارا است. در صورت نیاز در بخش کامنت‌ها اعلام کنید تا آموزش آن نیز خدمت شما عزیزان ارائه گردد.

 

اتصال به Radius :

 

۱- فایل کانفیگ OCServ را باز می‌کنیم.

cd /etc/ocserv
nano ocserv.conf

۲- خط زیر را پیدا کنید.

auth = “plain[passwd=./ocserv.passwd]

۳- آن را به خط زیر تغییر دهید

#auth = “plain[passwd=./ocserv.passwd]

۴- خط زیر را پیدا کنید.

auth = “radius[config=/etc/radiusclient/radiusclient.conf,groupconfig=true]”

۵- خط زیر را در پایین آن بنویسید.

auth = “radius [config=/etc/radcli/radiusclient.conf,groupconfig=true]”

۶- در صورتیکه که اکانتیگ شما نیز روی Radius قرار دارد‌(مانند IBSNG) خط زیر را نیز بنویسید.

acct = “radius [config=/etc/radcli/radiusclient.conf,groupconfig=true]”

۷- حال برای تنظیمات Radius فایل کانفیگ آن را باز می‌کنیم.

cd /etc/radcli/
nano radiusclient.conf

۸- خطوط زیر را پیدا کنید و مقادیر آن را تکیمل کنید.

nas-identifier fw01
authserver 192.168.5.5
acctserver 192.168.5.5
servers /etc/radcli/servers
dictionary /etc/radcli/dictionary

۹- در قسمت بالا رو به روی authserver و acctserver  باید آی پی سرور Radius خود را به جای ۱۹۲.۱۶۸.۵.۵ وارد کنید.

۱۰- فایل را سیو کرده و فایل کانفیگ Server را باز می‌کنیم.

nano server

۱۱- خط زیر را در انتهای آن وارد می‌کنیم.

۱۹۲.۱۶۸.۵.۵ radiustestsecretpassword

۱۲- به جای ۱۹۲.۱۶۸.۵.۵ آی پی سرور Radius و به جای radiustestsecretpassword، رمز عبور Radius را وارد می کنیم.

۱۳- یک بار سرویس OCServ را ریستارت می‌کنیم.

service ocserv restart

۱۴- تمام. 🙂

76 پاسخ
  1. JosephWep
    JosephWep says:

    I apologize for off-topic, I’m considering about making an interesting web site for students. May possibly begin with posting interesting information like”750ml of blood pumps through your brain every minute which is 15-20% of blood flow from the heart.”Please let me know if you know where I can find some related info such as right here

    http://tom2010.us/?p=2278

    پاسخ
  2. آریا
    آریا says:

    ممنون از آموزش شما.

    اگر کسی از دوستان در راه اندازی اسکریگت مشکلی داشتند در ورژن آخر centos می تونید از این دستور جهت اصلاح مشکل استفاده کنید:

    sed -i -e ‘s/\r$//’ ocserv.sh

    منبع = https://stackoverflow.com/questions/14219092/bash-my-script-bin-bashm-bad-interpreter-no-such-file-or-directory

    همینطور برای خارج کردن اسکریبت از حالت فشرده می توانید از دستور unzip استفاده کنید که اگر در سرور شما نصب نیست با این دستور نصب می شود:

    yum -y install unzip zip

    مجدداً ممنون از آموزش خوب شما.

    پاسخ
  3. حسین
    حسین says:

    سلام
    میشه به جای ادرس ای پی از هاست نیم برای سرتیفیکیت ها استفاده کرده و از SSL ولید استفاده کرد تا کاربر موقع ورد ارور سرتفیکیت نگیره ؟

    پاسخ
  4. ابراهیم
    ابراهیم says:

    سلام
    من نصب میکنم خطای زیر رو میده استارت نمیشه
    [root@srv ~]# service ocserv status
    Redirecting to /bin/systemctl status ocserv.service
    ● ocserv.service – OpenConnect SSL VPN server
    Loaded: loaded (/usr/lib/systemd/system/ocserv.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Fri 2018-05-18 15:39:20 EDT; 1min 24s ago
    Docs: man:ocserv(8)
    Process: 1416 ExecStart=/usr/sbin/ocserv –pid-file /var/run/ocserv.pid –config /etc/ocserv/ocserv.conf (code=exited, status=1/FAILURE)
    Process: 1411 ExecStartPre=/usr/sbin/ocserv-genkey (code=exited, status=0/SUCCESS)

    May 18 15:39:20 srv.domain.com systemd[1]: Starting OpenConnect SSL VPN server…
    May 18 15:39:20 srv.domain.com ocserv[1416]: note: skipping ‘pid-file’ config option
    May 18 15:39:20 srv.domain.com ocserv[1416]: note: setting ‘plain’ as primary authentication method
    May 18 15:39:20 srv.domain.com ocserv[1416]: error: the tcp-port option is mandatory!
    May 18 15:39:20 srv.domain.com systemd[1]: ocserv.service: control process exited, code=exited status=1
    May 18 15:39:20 srv.domain.com systemd[1]: Failed to start OpenConnect SSL VPN server.
    May 18 15:39:20 srv.domain.com systemd[1]: Unit ocserv.service entered failed state.
    May 18 15:39:20 srv.domain.com systemd[1]: ocserv.service failed.

    پاسخ
  5. محمد
    محمد says:

    با سلام
    من با اسکریپت شما نصب کردم ولی خطای زیر رو میده
    May 19 08:38:40 vpn.te.ir ocserv[22164]: sec-mod: sec-mod initialized (socket: /var/lib/ocserv/ocserv.sock.22163)
    May 19 08:38:43 vpn.te.ir ocserv[22167]: error connecting to sec-mod socket ‘ocserv.sock.22160’: No such file or directory
    May 19 08:38:43 vpn.te.ir ocserv[22167]: GnuTLS error (at worker-vpn.c:795): GnuTLS internal error.
    May 19 08:38:43 vpn.te.ir ocserv[22163]: main:10.10.10.10:30049 user disconnected (reason: unspecified, rx: 0, tx: 0)

    پاسخ
  6. محمد
    محمد says:

    با سلام
    بعد از نصب با خطای زیر روبرو می شوم

    May 19 08:38:40 vpn.test.ir ocserv[22164]: sec-mod: sec-mod initialized (socket: /var/lib/ocserv/ocserv.sock.22163)
    May 19 08:38:43 vpn.test.ir ocserv[22167]: error connecting to sec-mod socket ‘ocserv.sock.22160’: No such file or directory
    May 19 08:38:43 vpn.test.ir ocserv[22167]: GnuTLS error (at worker-vpn.c:795): GnuTLS internal error.
    May 19 08:38:43 vpn.test.ir ocserv[22163]: main:10.10.10.10:30049 user disconnected (reason: unspecified, rx: 0, tx: 0)

    پاسخ
  7. محمد
    محمد says:

    با سلام

    بعد از نصب با خطای زیر مواجه می شوم

    May 19 08:38:40 vpn.test.ir ocserv[22164]: sec-mod: sec-mod initialized (socket: /var/lib/ocserv/ocserv.sock.22163)
    May 19 08:38:43 vpn.test.ir ocserv[22167]: error connecting to sec-mod socket ‘ocserv.sock.22160’: No such file or directory
    May 19 08:38:43 vpn.test.ir ocserv[22167]: GnuTLS error (at worker-vpn.c:795): GnuTLS internal error.
    May 19 08:38:43 vpn.test.ir ocserv[22163]: main:10.10.10.10:30049 user disconnected (reason: unspecified, rx: 0, tx: 0)

    پاسخ
  8. سعید
    سعید says:

    سلام
    ممنون از اموزش شما
    اسکریپت به صورت کامل نصب شد . هنگام بررسی وضعیت سرور فعال و در حال اجرا نشان داده می شود.
    ولی ارور زیر به صورت قرمز نشان می دهد
    May 20 14:05:21 ocserv[26985]: main: user disconnected (reason: unspecified, rx: 0, tx: 0)
    May 20 14:18:08 ocserv[28922]: error connecting to sec-mod socket ‘ocserv.sock.26982’: No such file or directory
    و از سمت کلاینت(ویندوز)امکان اتصال وجود ندارد و خطای زیر ظاهر می گردد:
    could not connect to server please verify internet connectivity and server address
    البته به سرورهای مشابه کانفیگ شده به راحتی از ویندوز امکان اتصال وجود دارد ولی در این سرور خیر.
    ممنون می شویم در این زمینه راهنمایی فرمایید

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      لطفا فایل را با notepad داخل فایل را باز کرده و محتویاتش رو توی سرور با nano یا vi یا هر ادیتور دیگری paste کنید.
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
  9. ali
    ali says:

    با سلام مال من نصب شد بالاخره اخرش اجرا نمیشه این ارور میده
    Chenking Firewall status…
    WARNING!!! Firewall is Something Wrong!

    Chenking ocserv service status…
    WARNING!!! ocserv service is NOT Running!

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      لطفا فایل را با notepad داخل فایل را باز کرده و محتویاتش رو توی سرور با nano یا vi یا هر ادیتور دیگری paste کنید.
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
  10. ali
    ali says:

    اقا بالاخره ما نصبش کردیم سرویسم اجرا شد
    ولی با موبایل کانکت نمیشه یوزر پسورد نمیپرسه همش میگه could not connect to server

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      علی عزیز
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
  11. alireza
    alireza says:

    سلام اجرا نمیشه مال من سرویسش status که میگیرم این میده

    Redirecting to /bin/systemctl status ocserv.service
    ● ocserv.service – OpenConnect SSL VPN server
    Loaded: loaded (/usr/lib/systemd/system/ocserv.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Tue 2018-05-22 04:45:51 EDT; 7min ago
    Docs: man:ocserv(8)
    Process: 3327 ExecStart=/usr/sbin/ocserv –pid-file /var/run/ocserv.pid –config /etc/ocserv/ocserv.conf (code=exited, status=1/FAILURE)
    Process: 3326 ExecStartPre=/usr/sbin/ocserv-genkey (code=exited, status=0/SUCCESS)

    May 22 04:45:51 static.156.213.46.78.clients.your-server.de systemd[1]: Starting OpenConnect SSL VPN s….
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de ocserv[3327]: note: skipping ‘pid-file’ co…n
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de ocserv[3327]: error: : you cannot mix mult…e
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de systemd[1]: ocserv.service: control proces…1
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de systemd[1]: Failed to start OpenConnect SS….
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de systemd[1]: Unit ocserv.service entered fa….
    May 22 04:45:51 static.156.213.46.78.clients.your-server.de systemd[1]: ocserv.service failed.
    Hint: Some lines were ellipsized, use -l to show in full.

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      علیرضا عزیز
      سعید عزیز
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      محسن عزیز
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
  12. سعید
    سعید says:

    سلام
    روی پورت ۴۴۳ سرویس دیگری فعال نمی باشد.
    با اجرای دستور systemctl status ocserv -l خروجی به صورت تصویر زیر است

    http://www.uupload.ir/files/u5ez_e1.png

    که در چند پست قبل یکی از دوستان به این ارور برخورد نموده بودند.
    ممنون می شویم لینکی مربوط به نصب برای سنت او اس ۷ بدون اسکریپت معرفی نمایید

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      سعید عزیز
      متاسفانه ورژن جدید برای Centos ارائه نشده و ورژن فعلی با Centos جدید ناسازگار است. از Fedora Server 28 استفاده کنید. در اسکریپت لازم است خطوط زیر را حذف کنید.
      # Check whether CentOS 7 or RHEL 7 is detected
      if [[ $(grep “release 7.” /etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; then
      printf “\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n”
      printf “\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n”
      exit 1
      fi

      پاسخ
  13. سعید
    سعید says:

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

    شما کدام ورژن ocserv و بر کدام سنت او اس امتحان نموده و اسکریپت به خوبی اجرا گردید؟

    پاسخ
  14. محمد بهشتی
    محمد بهشتی says:

    سلام با تشکر از آموزش خوبتون
    من موقع نصب وارنینگ Firewall میگیرم!
    اگه میشه یه راهنمایی بکنید که چه کاری بکنم
    ورژنم Centos 7.5 هست
    ممنون

    پاسخ
  15. اسد حقیقت
    اسد حقیقت says:

    سلام
    بنده با centos 7 تست کردم مشکلی نداشت راحت connect شد.
    بیشتر از این توضیح نمیدم فقط خواستم بگم تو ورژن ۷ بدون هیچ مشکلی نصب کردم ولی با روش شما نرفتم

    پاسخ
  16. رضا
    رضا says:

    این اسکریپت رو من اجرا کردم .فقط روی پورت ۴۴۳ اجرا میشه و روی سایر پورت ها اسکریپت اجرا نمیشه .فایروال نصب ندارم روی سرور .
    با پورت ۴۴۳ که اسکریپت اجرا میشه openconnect وصل میشه ولی هیچ سایتی بعدش باز نمیشه .
    همچنین با دستور نام کاربری و رمز ایجاد میکنم ایجاد میشه ولی کانکت نمیشا و.فقط با یوزر اصلی کانکت میشه که صفحه باز.نمیکنه

    پاسخ
  17. mojtaba
    mojtaba says:

    سلام
    بسیار عالی و خوب توضیح دادید.
    آیا امکان دارد طریقه نصب ibsng روی centos7 هم آموزش بدید. روی centos 6 که آموزش هاش بسیار زیاد در اینترنت وجود داره.
    اگر بتونید نصب و کانفیگ توضیح دهید خیلی خوب میشه.

    پاسخ
  18. علی
    علی says:

    سلام آقا من یه مشکلی دارم با اکانتینگش
    یوزر وقتی دیسکانکت میشه رو ibsng آنلاین میمونه
    تو این آدرس دیدم نوشته باید nas-port رو غیر فعال کنیم ولی من نفهمیدم چجوری
    https://github.com/openconnect/ocserv/blob/master/doc/README-radius.md
    بعد گفته با freeradius هم میتونید راه بندازید ولی آموزش اونو جایی پیدا نکردم
    لطفا راهنمایی کنید

    راستی ممنون از اسکریپت ، works like a charm!

    پاسخ
    • علیرضا بابایی
      علیرضا بابایی says:

      سلام
      با freeradius داستانه و خیلی اذیت میکنه توصیه میکنم سمتش نری.مشکل آنلاین موندن توی ibsng یکی از باگهای نسخه free و قدیمی ibsng هست. چیزی که میدونم و کار کردم رو میگم. واسه اکانتیگ میتونید از اکانتیگ AD هم استفاده کنید.

      پاسخ
  19. m
    m says:

    سلام و تشکر
    من با خود ocserv کاربرا رو تعریف کردم. روت اینترنت کاربرا هم از سرور vpn نمیره اینترنت خودشون رو استفاده می کنن.
    اما وقتی وصل میشم تا چند دقیقه وصله anyconnect . بعد با این خطا قطع میشه و تا سرویس رو ریستارت نکنم وصل نمیشه:
    the service provider in your current location is restricting access to the internet. you need to log on with the service provider before you can establish a VPN session…

    پاسخ

دیدگاه خود را ثبت کنید

Want to join the discussion?
Feel free to contribute!

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *