| OPENFORTIVPN(1) | General Commands Manual | OPENFORTIVPN(1) |
نام (NAME)
openfortivpn - کلاینت برای سرویسهای تونل VPN مبتنی بر PPP+TLS
خلاصه دستور (SYNOPSIS)
openfortivpn [<host>[:<port>]]
[-u <user>] [-p <pass>]
[--cookie=<cookie>] [--cookie-on-stdin]
[--saml-login[=<port>]]
[--pinentry=<name>] [--otp=<otp>]
[--otp-prompt=<prompt>]
[--otp-delay=<delay>] [--no-ftm-push]
[--realm=<realm>]
[--ifname=<interface>]
[--set-routes=<bool>] [--no-routes]
[--set-dns=<bool>] [--no-dns]
[--half-internet-routes=<bool>]
[--ca-file=<file>]
[--user-cert=<file>] [--user-cert=pkcs11:]
[--user-key=<file>] [--use-syslog]
[--trusted-cert=<digest>] [--insecure-ssl]
[--cipher-list=<ciphers>]
[--min-tls=<version>] [--seclevel-1]
[--pppd-use-peerdns=<bool>] [--pppd-no-peerdns]
[--pppd-log=<file>]
[--pppd-plugin=<file>]
[--pppd-ipparam=<string>]
[--pppd-ifname=<string>]
[--pppd-call=<name>]
[--pppd-accept-remote=<bool>]
[--ppp-system=<string>]
[--use-resolvconf=<bool>]
[--persistent=<interval>] [-c
<file>] [-v|-q]
openfortivpn --help
openfortivpn --version
توضیحات (DESCRIPTION)
openfortivpn با ایجاد یک تونل به سمت درگاه (gateway) در <host>:<port> به یک شبکهٔ خصوصی مجازی (VPN) متصل میشود.
گزینهها (OPTIONS)
- --help
- نمایش پیام راهنما و خروج.
- --version
- نمایش نسخه و خروج.
- -c <file>, --config=<file>
- مشخص کردن یک فایل پیکربندی سفارشی (پیشفرض: /etc/openfortivpn/config).
- -u <user>, --username=<user>
- نامکاربری حساب VPN.
- -p <pass>, --password=<pass>
- گذرواژه حساب VPN به صورت متن خام. برای یک جایگزین امنتر، از pinentry استفاده کنید یا اجازه دهید openfortivpn گذرواژه را از شما بپرسد.
- یک کوکی معتبر (SVPNCOOKIE) برای استفاده به جای نامکاربری و گذرواژه.
- خواندن کوکی (SVPNCOOKIE) از ورودی استاندارد.
- --saml-login[=<port>]
- ایجاد یک وبسرور موقت برای دریافت عملیات هدایت محلی (redirect) سامِل (SAML). برای ورود با استفاده از SAML، کافی است نشانی `<your-vpn-domain>/remote/saml/start?redirect=1' را باز کرده و مراحل ورود را دنبال کنید. در پایان فرآیند ورود، صفحه به `http://127.0.0.1:8020/?id=<session-id>' هدایت خواهد شد. نشانی واقعی (URL) که باید برای ورود استفاده شود، شامل realm اختیاری، هنگام شروع به کار وبسرور در ترمینال چاپ میشود.
- --pinentry=<name>
- برنامه pinentry مورد استفاده. امکان وارد کردن امن گذرواژه را فراهم میکند. برای مثال: pinentry-gnome3 در لینوکس، یا pinentry-mac در macOS.
- -o <otp>, --otp=<otp>
- رمز عبور یکبار مصرف (OTP).
- --otp-prompt=<prompt>
- جستجو برای اعلان (prompt) گذرواژه OTP که با رشته <prompt> شروع میشود.
- --otp-delay=<delay>
- تنظیم مدتزمان انتظار قبل از ارسال رمز عبور یکبار مصرف. زمان تاخیر باید بر حسب ثانیه مشخص شود، که 0 به معنای عدم انتظار است (پیشفرض).
- --no-ftm-push
- در صورت ارائه این گزینه توسط سرور، از اعلان فشاری (push) مربوط به FTM استفاده نکن. سرور ممکن است به نحوی پیکربندی شده باشد که احراز هویت دو مرحلهای را از طریق اعلان فشاری به برنامه موبایل مجاز کند. اگر این گزینه ارائه شود، به جای آن از احراز هویت مبتنی بر OTP استفاده خواهد شد.
- --realm=<realm>
- اتصال به قلمرو (realm) احراز هویت مشخصشده. پیشفرض مقدار خالی است، که معمولاً همان چیزی است که نیاز دارید.
- --ifname=<interface>
- مقید کردن اتصال به رابط شبکه مشخصشده.
- --set-routes=<bool>, --no-routes
- تعیین
میکند که
آیا openfortivpn پس از
برقراری
تونل، باید
مسیرهای IP
را از طریق VPN
پیکربندی
کند یا خیر.
در صورت
استفاده
مکرر،
آخرین مورد
اولویت
خواهد داشت.
گزینه --no-routes معادل --set-routes=0 است.
- --half-internet-routes=<bool>
- تعیین میکند که آیا openfortivpn باید به جای جایگزینی مسیر پیشفرض، دو مسیر 0.0.0.0/1 و 128.0.0.0/1 را با اولویت بالاتر اضافه کند یا خیر.
- --set-dns=<bool>, --no-dns
- تعیین میکند که آیا openfortivpn پس از برقراری تونل، باید کارگزارهای نام DNS را به /etc/resolv.conf اضافه کند یا خیر. همچنین ممکن است یک پسوند دامنه (dns-suffix) از طرف مقابل دریافت شده و همراه با کارگزارهای نام به /etc/resolv.conf اضافه شود. در صورتی که resolvconf نصب شده باشد و --use-resolvconf فعال باشد، بهروزرسانی فایل resolv.conf به آن محول میشود؛ در غیر این صورت، openfortivpn تغییرات خود را در ابتدای محتوای موجود فایل resolv.conf قرار میدهد. توجه داشته باشید که ممکن است سازوکارهای دیگری نیز برای بهروزرسانی /etc/resolv.conf وجود داشته باشد، مانند --pppd-use-peerdns همراه با یک ip-up-script، که ممکن است مستلزم اجرای openfortivpn همراه با --no-dns باشد. گزینه --no-dns معادل --set-dns=0 است.
- --use-resolvconf=<bool>
- تعیین میکند که آیا openfortivpn باید از resolvconf برای افزودن کارگزارهای نام DNS به /etc/resolv.conf استفاده کند یا خیر. اگر روی false تنظیم شود، حتی در صورت در دسترس بودن resolvconf، از سازوکار جایگزین داخلی استفاده خواهد شد.
- --ca-file=<file>
- استفاده از بسته گواهی مشخصشده با کدگذاری PEM به جای مخزن سراسری سیستم جهت اعتبارسنجی گواهی درگاه.
- --user-cert=<file>
- استفاده از گواهی مشخصشده با کدگذاری PEM در صورتی که سرور نیازمند احراز هویت با گواهی باشد.
- --user-cert=pkcs11:
- برای
استفاده از
کارت
هوشمند،
حداقل از
رشته pkcs11:
استفاده
کنید. این
گزینه یک PKCS11-URI
کامل یا
جزئی را
میپذیرد (p11tool
--list-token-urls)
--user-cert = pkcs11:
--user-cert = pkcs11:token=someuser
--user-cert = pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;serial=012345678;token=someuserاین ویژگی نیازمند موتور OpenSSL PKCS است!
- --user-key=<file>
- استفاده از کلید مشخصشده با کدگذاری PEM در صورتی که سرور نیازمند احراز هویت با گواهی باشد.
- --pem-passphrase=<pass>
- عبارت عبور (passphrase) برای کلید کدگذاریشده با PEM.
- --use-syslog
- ثبت لاگها در syslog به جای ترمینال.
- --trusted-cert=<digest>
- اعتماد به یک درگاه مشخص. اگر اعتبارسنجی سنتی گواهی TLS با شکست مواجه شود، گواهی درگاه با این مقدار مطابقت داده خواهد شد. <digest> مقدار چکیده sha256 گواهی X509 است. گواهی باید به فرم DER کدگذاری شده باشد. این گزینه میتواند چندین بار برای اعتماد به چند گواهی استفاده شود.
- --insecure-ssl
- پروتکلها/رمزنگاریهای (ciphers) ناامن TLS را غیرفعال نکن. اگر سرور شما به یک رمز مشخص نیاز دارد، به جای آن استفاده از --cipher-list را در نظر بگیرید.
- --cipher-list=<ciphers>
- رمزهای OpenSSL
مورد
استفاده. در
صورتی که
حالت
پیشفرض
کار نکرد،
میتوانید
گزینههای
جایگزین
مانند HIGH:!MD5:!RC4 یا
موارد
پیشنهادی
در خط Cipher: در
خروجی
دستور openssl(1)
را امتحان
کنید (به
عنوان مثال
AES256-GCM-SHA384):
$ openssl s_client -connect <host:port>
(پیشفرض: HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4)
تنها برای TLS نسخه 1.2 یا پایینتر اعمال میشود و نباید با رمزهای TLS نسخه 1.3 استفاده شود.
- --min-tls=<version>
- استفاده از
حداقل نسخه
TLS به جای
مقدار
پیشفرض
سیستم.
مقادیر
معتبر
عبارتند از
1.0، 1.1، 1.2، 1.3..TP --seclevel-1
اگر --cipher-list
مشخص نشده
باشد،
مقدار @SECLEVEL=1 را
به فهرست
رمزها (ciphers)
میافزاید.
این کار
محدودیتهای
اعمالشده
بر کلید dh را
کاهش
میدهد.
تنها برای TLS نسخه ۱.۲ یا پایینتر اعمال میشود.
- --pppd-use-peerdns=<bool>, --pppd-no-peerdns
- اینکه آیا
نشانیهای
کارساز DNS از
کارساز ppp
مقابل
درخواست
شود و به pppd
اجازه
بازنویسی
/etc/resolv.conf داده شود
یا خیر.
سازوکاری
برای ارسال
dns-suffix به pppd وجود
ندارد. در
صورت
درخواست
نشانیهای
کارساز DNS،
ممکن است
--set-dns=1 با
سازوکارهای
درون pppd دچار
تداخل
(شرایط
رقابتی)
شود.
گزینه --pppd-no-peerdns همانند --pppd-use-peerdns=0 است.
- --pppd-log=<file>
- قرار دادن pppd در حالت اشکالزدایی (debug) و ذخیره گزارشهای آن در <file>.
- --pppd-plugin=<file>
- استفاده از افزونه مشخصشده pppd به جای پیکربندی مستقیم تحلیلگر نام (resolver) و مسیرها.
- --pppd-ipparam=<string>
- ارائه یک پارامتر اضافی به اسکریپتهای ip-up، ip-pre-up و ip-down. برای جزئیات بیشتر به راهنمای pppd(8) مراجعه کنید.
- --pppd-ifname=<string>
- تنظیم نام رابط ppp. تنها در صورتی که توسط pppd پشتیبانی شود. نسخههای وصلهشده pppd این گزینه را پیادهسازی کردهاند، اما ممکن است روی سکوی شما موجود نباشد.
- --pppd-call=<name>
- حذف آرگومانهای معمول از خط فرمان pppd و افزودن “call <name>” به جای آن. این گزینه میتواند در دبیان و اوبونتو مفید باشد، جایی که کاربران فاقد دسترسی ریشه در گروه “dip” میتوانند “pppd call <name>” را اجرا کنند تا pppd گزینهها را از /etc/ppp/peers/<name> (شامل گزینههای نیازمند دسترسی ریشه) بخواند و اعمال کند.
- --pppd-accept-remote=<bool>
- اینکه آیا pppd با “ipcp-accept-remote” فراخوانی شود یا خیر. فعال کردن این گزینه کارکرد نسخههای pppd < 2.5.0 را مختل میکند، اما برای نسخههای جدیدتر pppd الزامی است.
- --ppp-system=<string>
- تنها زمانی در دسترس است که برای کلاینت فضای کاربری ppp کامپایل شده باشد (مثلاً در FreeBSD). اتصال به سامانه مشخصشده بر اساس تعاریف موجود در /etc/ppp/ppp.conf.
- --persistent=<interval>
- اجرای مداوم VPN در یک حلقه بیپایان و تلاش همیشگی برای برقراری مجدد اتصال. بازه زمانی اتصال مجدد را میتوان به ثانیه مشخص کرد که در آن 0 به معنای عدم انجام اتصال مجدد است (این مقدار پیشفرض است).
- -v
- افزایش سطح جزئیات گزارشها. میتوان چندین بار برای دریافت جزئیات بیشتر از آن استفاده کرد.
- -q
- کاهش سطح جزئیات گزارشها. میتوان چندین بار برای کاهش بیشتر جزئیات از آن استفاده کرد.
محیط و پشتیبانی از پراکسی (ENVIRONMENT and proxy support)
برنامه
openfortivpn
میتواند
پشت یک
پراکسی HTTP که
از دستور connect
پروتکل HTTP
پشتیبانی
میکند
اجرا شود.
این برنامه
بررسی
میکند که
آیا یکی از
متغیرهای
محیطی https_proxy HTTPS_PROXY
all_proxy ALL_PROXY تنظیم
شده است یا
خیر، که
انتظار
میرود
حاوی
رشتهای با
قالب زیر
باشند:
http://[host]:[port]
که در آن [host]
نشانی ip یا
نام دامنه
کاملاً
مشخص (FQDN)
کارساز
پراکسی است
و [port] شماره
درگاه TCP است
که پراکسی
برای
اتصالات
ورودی روی
آن شنود
میکند. اگر
یکی از این
متغیرها
تعریف شده
باشد، openfortivpn
ابتدا تلاش
میکند یک
اتصال TCP با
این پراکسی
برقرار کند
(HTTP ساده،
رمزگذارینشده)،
و سپس
درخواستی
را برای
اتصال به
میزبان VPN
طبق آنچه در
خط فرمان یا
فایل
پیکربندی
مشخص شده
ارسال
میکند.
انتظار
میرود که
پراکسی
تمام
بستههای
بعدی را به
صورت شفاف
به میزبان VPN
هدایت کند،
به طوری که
لایه TLS
اتصال
عملاً بین
کلاینت و
میزبان VPN
برقرار
شود، و
پراکسی
تنها به
عنوان یک
واسطه
هدایتکننده
در لایه
پایینی
اتصال TCP عمل
کند.
متغیرهای
محیطی زیر
توسط openfortivpn
تنظیم
میشوند و
pppd(8) یا
اسکریپتهای
آن
میتوانند
اطلاعات را
از این طریق
دریافت
کنند:
VPN_GATEWAY نشانی ip
میزبان
دروازه (gateway)
و برای هر
مسیر سه
متغیر
تنظیم
میشود، که
در آن یک عدد
صحیح به
انتهای نام
متغیرها
اضافه شده و
نشاندهنده
شماره مسیر
فعلی است:
VPN_ROUTE_DEST_... شبکه
مقصد مسیر
VPN_ROUTE_MASK_... ماسک
شبکه برای
این مسیر
VPN_ROUTE_GATEWAY_... دروازه
مربوط به
مدخل مسیر
فعلی
اگر برای pppd کامپایل نشده باشد، گزینههای pppd و ویژگیهایی که به آنها وابسته هستند در دسترس نخواهند بود. در FreeBSD به جای آن گزینه --ppp-system در دسترس است.
پیکربندی (CONFIGURATION)
گزینهها را میتوان از یک فایل پیکربندی دریافت کرد. با این حال، گزینههای وارد شده در خط فرمان بر گزینههای فایل پیکربندی اولویت خواهند داشت (آنها را بازنویسی میکنند). فایل پیکربندی پیشفرض /etc/openfortivpn/config است، اما میتوان آن را با استفاده از گزینه -c تغییر داد. یک قالب خام برای فایل پیکربندی در مسیر /usr/share/openfortivpn/config.template نصب شده است.
- یک فایل پیکربندی به این صورت است:
- # this is a comment
host = vpn-gateway
port = 443
username = foo
# Password in plain text.
# For a secure alternative, use pinentry or let openfortivpn prompt for the password.
# password = bar
# The pinentry program to use. Allows supplying the password in a secure manner.
# pinentry = pinentry-mac
# realm = some-realm
# useful for a gui that passes a configuration file to openfortivpn
# otp = 123456
# otp-delay = 0
# otp-prompt = Please
# This would disable FTM push notification support, and use OTP instead
# no-ftm-push = 1
user-cert = /etc/openfortivpn/user-cert.pem
# user-cert = pkcs1: # use smartcard as client certificate
user-key = /etc/openfortivpn/user-key.pem
pem-passphrase = baz
# the sha256 digest of the trusted host certs obtained by
# openssl dgst -sha256 server-cert.crt:
trusted-cert = certificatedigest4daa8c5fe6c...
trusted-cert = othercertificatedigest6631bf...
# This would specify a ca bundle instead of system-wide store
# ca-file = /etc/openfortivpn/ca-bundle.pem
set-dns = 0
use-resolvconf = 1
set-routes = 1
half-internet-routes = 0
pppd-use-peerdns = 1
# alternatively, use a specific pppd plugin instead
# pppd-plugin = /usr/lib/pppd/default/some-plugin.so
# for debugging pppd write logs here
# pppd-log = /var/log/pppd.log
# pass ppp interface name to pppd (if supported by a patched pppd)
# pppd-ifname = ppp1
# pass an ipparam string to pppd, e.g. the device name (a similar use case)
# pppd-ipparam = 'device=$DEVICE'
# instruct pppd to call a script instead of passing arguments (if pppd supports it)
# pppd-call = script
# use-syslog = 0
insecure-ssl = 0
cipher-list = HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4
persistent = 0
seclevel-1 = 0.SH "همچنین ببینید (SEE ALSO)"صفحهٔ خانگی openfortivpn (https://github.com/adrienverge/openfortivpn) معرفی کوتاهی در فایل README و اطلاعات تکمیلی را در برگهٔ Wiki ارائه میدهد.
| May 4, 2020 |