| OPENCONNECT(8) | System Manager's Manual | OPENCONNECT(8) |
نام (NAME)
openconnect - کلاینت VPN چندپروتکله، برای VPNهای AnyConnect سیسکو و دیگر موارد
خلاصه دستور (SYNOPSIS)
openconnect |
[--config configfile] [-b,--background] [--pid-file pidfile] [-c,--certificate cert] [-e,--cert-expire-warning days] [-k,--sslkey key] [-C,--cookie cookie] [--cookie-on-stdin] [--compression MODE] [-d,--deflate] [-D,--no-deflate] [--force-dpd interval] [--force-trojan interval] [-F,--form-entry form:opt=value] [-g,--usergroup group] [-h,--help] [--http-auth methods] [--external-browser browser] [-i,--interface ifname] [-l,--syslog] [--timestamp] [--passtos] [-U,--setuid user] [--csd-user user] [-m,--mtu mtu] [--base-mtu mtu] [-p,--key-password pass] [-P,--proxy proxyurl] [--proxy-auth methods] [--no-proxy] [--libproxy] [--key-password-from-fsid] [-q,--quiet] [-Q,--queue-len len] [-s,--script vpnc-script] [-S,--script-tun] [-u,--user name] [-V,--version] [-v,--verbose] [-x,--xmlconfig config] [--authgroup group] [--authenticate] [--cookieonly] [--printcookie] [--cafile file] [--disable-ipv6] [--dtls-ciphers list] [--dtls12-ciphers list] [--dtls-local-port port] [--dump-http-traffic] [--no-system-trust] [--pfs] [--no-dtls] [--no-http-keepalive] [--no-passwd] [--no-xmlpost] [--non-inter] [--passwd-on-stdin] [--protocol proto] [--token-mode mode] [--token-secret {secret[,counter]|@file}] [--reconnect-timeout seconds] [--resolve host:ip] [--sni host] [--servercert sha1] [--useragent string] [--version-string string] [--local-hostname string] [--os string] [--server] [https://]host[:port][/group] |
توضیحات (DESCRIPTION)
برنامه openconnect به سرورهای VPN که از پروتکلهای استاندارد TLS/SSL، DTLS و ESP برای انتقال داده استفاده میکنند، متصل میشود.
این برنامه در ابتدا برای پشتیبانی از سرورهای VPN سیسکو "AnyConnect" نوشته شد، و از آن زمان با پشتیبانی آزمایشی از سرورهای VPN جونیپر Network Connect (--protocol=nc)، سرورهای VPN پالس/ایوانتی Connect Secure (--protocol=pulse)، سرورهای VPN پالو آلتو نتورکز GlobalProtect (--protocol=gp)، سرورهای VPN اف۵ Big-IP (--protocol=f5)، سرورهای VPN فورتینت Fortigate (--protocol=fortinet) و سرورهای SSL VPN ارِی نتورکز (Array Networks) (--protocol=array) گسترش یافته است.
اتصال در دو فاز انجام میشود. ابتدا یک اتصال ساده HTTPS برقرار میشود که کاربر در آن به روشی احراز هویت میکند - با استفاده از یک گواهی، رمز عبور یا SecurID و غیره. پس از احراز هویت، به کاربر یک کوکی احراز هویت داده میشود که میتواند برای برقراری اتصال واقعی VPN استفاده شود.
فاز دوم از آن کوکی برای اتصال به یک تونل از طریق HTTPS استفاده میکند و بستههای داده میتوانند از طریق اتصال حاصل منتقل شوند. در صورت امکان، یک تونل UDP نیز پیکربندی میشود: AnyConnect از DTLS استفاده میکند، در حالی که Juniper و GlobalProtect از ESP کپسولهشده در UDP بهره میبرند. تونل UDP میتواند با --no-dtls غیرفعال شود، اما در صورتی که توسط سرور و شبکه به درستی پشتیبانی شود، به دلایل کارایی ترجیح داده میشود. (عملکرد TCP بر روی تونلهای مبتنی بر TCP ضعیف و غیرقابلاطمینان است؛ به https://web.archive.org/web/20230228035749/https://sites.inka.de/~W1011/devel/tcp-tcp.html مراجعه کنید.)
گزینهها (OPTIONS)
- --config=CONFIGFILE
- خواندن
گزینههای
بیشتر از
CONFIGFILE پیش از
ادامه
پردازش
گزینهها
از خط
فرمان. این
فایل باید
شامل
گزینههای
قالب
طولانی
باشد،
همانند
مواردی که
در خط فرمان
پذیرفته
میشوند،
اما بدون دو
خط تیره --
ابتدایی.
خطوط خالی
یا خطوطی که
اولین
نویسه
غیرفاصله
آنها
نویسه #
باشد،
نادیده
گرفته
میشوند.
هر گزینهای به جز گزینه config میتواند در این فایل مشخص شود.
- -b,--background
- ادامه فعالیت در پسزمینه پس از راهاندازی
- --pid-file=PIDFILE
- ذخیره pid در PIDFILE هنگام رفتن به پسزمینه
- -c,--certificate=CERT [,--mca-certificate=CERT]
- استفاده از
گواهی
کلاینت SSL CERT
که
میتواند
یک نام فایل
یا در صورتی
که OpenConnect با
نسخه
مناسبی از GnuTLS
ساخته شده
باشد، یک URL
مربوط به PKCS#11
باشد.
گزینه --mca-certificate گواهی ثانویه را برای احراز هویت چندگواهی تنظیم میکند (طبق اصطلاحات سیسکو، گواهی کلاینت SSL گواهی "دستگاه" و گواهی دوم گواهی "کاربر" نامیده میشود).
- -e,--cert-expire-warning=DAYS
- ارائه هشدار زمانی که DAYS روز تا انقضای گواهی کلاینت SSL باقی مانده است
- -k,--sslkey=KEY [,--mca-key=KEY]
- استفاده از
کلید خصوصی
SSL KEY که
میتواند
یک نام فایل
یا در صورتی
که OpenConnect با
نسخه
مناسبی از GnuTLS
ساخته شده
باشد، یک URL
مربوط به PKCS#11
باشد.
گزینه --mca-key کلید خصوصی را برای گواهی ثانویه تنظیم میکند (به --mca-certificate مراجعه کنید).
- -C,--cookie=COOKIE
- استفاده از کوکی احراز هویت COOKIE.
- خواندن کوکی از ورودی استاندارد.
- -d,--deflate
- فعالسازی تمام حالتهای فشردهسازی، از جمله حالتهای دارای وضعیت (stateful). به طور پیشفرض، فقط الگوریتمهای فشردهسازی بدون وضعیت فعال هستند.
- -D,--no-deflate
- غیرفعالسازی تمام حالتهای فشردهسازی.
- --compression=MODE
- تنظیم حالت
فشردهسازی،
که در آن MODE
یکی از
مقادیر stateless،
none یا all است.
به طور پیشفرض، فقط الگوریتمهای فشردهسازی بدون وضعیت که وضعیتی را از یک بسته به بسته بعدی حفظ نمیکنند (و میتوانند در بسترهای انتقال UDP استفاده شوند) فعال هستند. با تنظیم حالت روی all الگوریتمهای دارای وضعیت (در حال حاضر تنها zlib deflate) میتوانند فعال شوند. یا میتوان تمام فشردهسازی را با تنظیم حالت روی none غیرفعال کرد.
- --force-dpd=INTERVAL
- استفاده از
INTERVAL به عنوان
بازه زمانی
تشخیص
همتای مرده
(Dead Peer Detection - DPD) (به
ثانیه). این
امر باعث
میشود که
کلاینت از DPD
در بازه
زمانی
مشخصشده
استفاده
کند حتی اگر
سرور آن را
درخواست
نکرده
باشد، یا در
بازه زمانی
متفاوتی
نسبت به
آنچه توسط
سرور
درخواست
شده است.
سازوکارهای DPD بر اساس پروتکل و بستر انتقال (TLS یا DTLS/ESP) متفاوت است، اما همگی از نظر عملکردی مشابه هستند: آنها به کلاینت VPN یا سرور VPN امکان میدهند سیگنالی را به همتا ارسال کنند و خواستار پاسخ فوری شوند که میتواند برای تایید فعال بودن پیوند میان دو همتا استفاده شود.
- -g,--usergroup=GROUP
- تنظیم مسیر
URL اتصال
اولیه HTTPS به
سرور.
در برخی پروتکلها، این مسیر ممکن است به عنوان گروه ورود به سیستم یا قلمرو (realm) عمل کند، از این رو این گزینه نامگذاری شده است. به عنوان مثال، فراخوانیهای زیر از OpenConnect معادل یکدیگر هستند:
openconnect --usergroup=loginPath vpn.server.com openconnect https://vpn.server.com/loginPath
- -F,--form-entry=FORM:OPTION[=VALUE]
- ارائه
ورودی فرم
احراز
هویت، که در
آن FORM و OPTION
شناسههای
مربوط به
فرم و فیلد
ورودی خاص
هستند و VALUE
رشتهای
است که باید
به طور
خودکار پر
شود. به
عنوان
مثال، فیلد
نام کاربری
استاندارد
(که توسط
گزینه --user
نیز مدیریت
میشود)
میتواند
با این
گزینه نیز
به این صورت
ارائه شود:
--form-entry main:username=joebloggs.
اگر VALUE مشخص نشود، این گزینه باعث میشود با یک فیلد فرم پنهان مانند یک فیلد استاندارد ورودی متن رفتار شود.
از این گزینه نباید برای وارد کردن رمزهای عبور استفاده شود. گزینه --passwd-on-stdin باید برای این منظور استفاده گردد. این گزینه نه تنها مقدار رمز عبور را از طریق خط فرمان فرایند OpenConnect فاش میکند، بلکه برخلاف --passwd-on-stdin حالت رمز عبور نادرست را تشخیص نمیدهد و تلاش مکرر برای ورود مجدد آن را متوقف نمیکند.
- -h,--help
- نمایش متن راهنما
- --http-auth=METHODS
- استفاده تنها از روشهای مشخصشده برای احراز هویت HTTP در سرور. به طور پیشفرض، فقط روشهای احراز هویت Negotiate، NTLM و Digest فعال هستند. احراز هویت Basic نیز پشتیبانی میشود اما به دلیل ناامن بودن باید به صراحت فعال شود. آرگومان یک لیست جداشده با ویرگول از روشهایی است که باید فعال شوند. توجه داشته باشید که ترتیب آنها اهمیتی ندارد: OpenConnect در صورت فعال بودن هر کدام، از روشهای احراز هویت Negotiate، NTLM، Digest و Basic به همین ترتیب استفاده خواهد کرد، صرفنظر از ترتیبی که در رشته METHODS مشخص شده است.
- --external-browser=BROWSER
- تنظیم BROWSER به عنوان فایل اجرایی مورد استفاده OpenConnect برای مدیریت فرایند احراز هویت با درگاههایی که از روش احراز هویت single-sign-on-external-browser پشتیبانی میکنند.
- -i,--interface=IFNAME
- استفاده از IFNAME برای رابط تونل
- -l,--syslog
- پس از بالا آمدن تونل، استفاده از syslog برای پیامهای بعدی پیشرفت
- --timestamp
- افزودن برچسب زمانی به ابتدای هر پیام پیشرفت
- --passtos
- کپی کردن TOS / TCLASS بسته داده در بستههای DTLS و ESP. این گزینه به طور پیشفرض تنظیم نشده است زیرا ممکن است اطلاعاتی درباره بار داده نشت دهد (به عنوان مثال، با متمایز کردن ترافیک صوتی/تصویری).
- -U,--setuid=USER
- کاهش اختیارات پس از اتصال، برای تبدیل شدن به کاربر USER
- --csd-user=USER
- کاهش اختیارات در حین اجرای فایل باینری یا اسکریپت تروجان (CSD، TNCC یا HIP).
- --csd-wrapper=SCRIPT
- اجرای SCRIPT به جای باینری یا اسکریپت تروجان.
- --force-trojan=INTERVAL
- استفاده از INTERVAL به عنوان بازه زمانی (به ثانیه) برای اجرای مکرر باینری یا اسکریپت تروجان، با نادیده گرفتن بازه زمانی پیشفرض و/یا تعیینشده توسط سرور.
- -m,--mtu=MTU
- درخواست MTU از سرور به عنوان MTU تونل.
- --base-mtu=MTU
- مشخص کردن MTU به عنوان MTU مسیر میان کلاینت و سرور در شبکه رمزگذارینشده. سرورهای جدیدتر به طور خودکار MTU مورد استفاده در تونل را از این مقدار محاسبه میکنند.
- -p,--key-password=PASS [,--mca-key-password=PASS]
- ارائه
عبارت عبور
برای فایل
گواهی، یا
پین SRK (کلید
ریشه سیستم)
برای TPM
گزینه --mca-key-password عبارت عبور را برای گواهی ثانویه ارائه میدهد (به --mca-certificate مراجعه کنید).
- -P,--proxy=PROXYURL
- استفاده از پراکسی HTTP یا SOCKS برای اتصال. نام کاربری و رمز عبور میتوانند در URL ارائهشده قید شوند و برای احراز هویت استفاده خواهند شد. اگر احراز هویت لازم باشد اما اطلاعات اعتبارسنجی ارائه نشده باشد، ممکن است احراز هویت خودکار NTLM با ابزار کمکی ntlm_auth متعلق به سامبا و همچنین GSSAPI امتحان شود.
- --proxy-auth=METHODS
- استفاده تنها از روشهای مشخصشده برای احراز هویت HTTP در یک پراکسی. به طور پیشفرض، فقط احراز هویتهای Negotiate، NTLM و Digest فعال هستند. احراز هویت Basic نیز پشتیبانی میشود اما به دلیل ناامن بودن باید به صراحت فعال شود. آرگومان یک لیست جداشده با ویرگول از روشهایی است که باید فعال شوند. توجه داشته باشید که ترتیب آنها اهمیتی ندارد: OpenConnect در صورت فعال بودن هر کدام، از احراز هویتهای Negotiate، NTLM، Digest و Basic به همین ترتیب استفاده خواهد کرد، صرفنظر از ترتیبی که در رشته METHODS مشخص شده است.
- --no-proxy
- غیرفعال کردن استفاده از پراکسی
- --libproxy
- استفاده از libproxy برای پیکربندی خودکار پراکسی (در صورت ساخت با پشتیبانی از libproxy)
- --key-password-from-fsid
- تولید
خودکار
عبارت عبور
فایل گواهی
از fsid
سیستمفایلی
که گواهی
روی آن
ذخیره شده
است. مقدار
fsid بسته به
سیستمعامل،
از فراخوان
سیستمی statvfs(2)
یا statfs(2) به
دست میآید.
در لینوکس
یا
سیستمهای
مشابه با GNU
coreutils، مقدار fsid
مورد
استفاده
توسط این
گزینه باید
برابر با
خروجی
دستور زیر
باشد:
stat --file-system --printf=%i\\n $CERTIFICATE
این مقدار با UUID ۱۲۸ بیتی سیستمفایل یکسان نیست. - -q,--quiet
- خروجی کمتر
- -Q,--queue-len=LEN
- تنظیم
محدودیت صف
بستهها به
LEN بسته.
مقدار
پیشفرض ۳۲
است. یک
مقدار بالا
ممکن است
پهنای باند
کلی بهتری
را فراهم
کند اما به
بهای
افزایش
تاخیر (latency)
تمام
میشود. اگر
از Voice over IP یا
دیگر
ترافیکهای
تعاملی روی
VPN استفاده
میکنید،
نمیخواهید
آن بستهها
پشت هزاران
بسته بزرگ
دیگر که
بخشی از یک
انتقال
انبوه داده
هستند در صف
بمانند.
این گزینه حداکثر اندازه صف بستههای ورودی و خروجی را در خود OpenConnect تنظیم میکند، که تعیین مینماید چه تعداد بسته در یک دسته ارسال و دریافت میشوند، و همچنین بر سایر بافرها مانند بافر ارسال سوکت (SO_SNDBUF) برای اتصالات شبکه و دستگاه تونل سیستمعامل تاثیر میگذارد.
در نهایت، اندازه مناسب برای یک صف "فقط به تعداد کافی بسته است که پیش از رسیدن بستههای بیشتر، هرگز کاملا خالی نشود". هر مقداری بیش از آن، صرفا باعث ایجاد اتساع بافر (bufferbloat) و تاخیر اضافی بدون هیچ مزیتی میشود. با مقدار پیشفرض ۳۲، ما قادریم یک اترنت گیگابیتی را حتی با سختافزاری معمولی اشباع کنیم، که برای بیشتر کاربران VPN بیش از حد کافی است.
اگر OpenConnect با پشتیبانی از vhost-net ساخته شده باشد، تنها در صورتی از آن استفاده میشود که طول صف روی ۱۶ یا بیشتر تنظیم شده باشد. دلیل این امر آن است که vhost-net مقدار کمی تاخیر اضافی ایجاد میکند، اما پهنای باند کلی را برای کسانی که با نرخ ترافیک بالا کار میکنند به طور قابل توجهی بهبود میبخشد. بنابراین استفاده از آن زمانی منطقی است که کاربر با افزایش اندازه صف، ترجیح خود را برای پهنای باند نسبت به تاخیر نشان داده باشد.
- -s,--script=SCRIPT
- فراخوانی
SCRIPT برای
پیکربندی
شبکه پس از
اتصال. بدون
این
اسکریپت،
بعید است
مسیریابی و
سرویس نام
دامنه به
درستی کار
کنند.
انتظار
میرود این
اسکریپت با
vpnc-script که
همراه با
کلاینت VPN "vpnc"
ارائه
میشود
سازگار
باشد. برای
اطلاعات
بیشتر به
https://www.infradead.org/openconnect/vpnc-script.html
مراجعه
کنید. این
نسخه از OpenConnect
به طور
پیشفرض
برای
استفاده از
/etc/vpnc/vpnc-script
پیکربندی
شده است.
در ویندوز، دایرکتوری نسبی برای اسکریپت پیشفرض به جای دایرکتوری جاری، از دایرکتوری محل اجرای فایل اجرایی openconnect در نظر گرفته میشود. این اسکریپت با میزبان اسکریپت مبتنی بر دستور cscript.exe فراخوانی خواهد شد.
- -S,--script-tun
- انتقال ترافیک به برنامه 'script' از طریق یک سوکت UNIX، به جای ارسال به یک دستگاه tun/tap در هسته. این کار اجازه میدهد ترافیک IP مربوط به VPN کاملا در فضای کاربری مدیریت شود، برای مثال توسط برنامهای که از lwIP برای ارائه دسترسی SOCKS به داخل VPN استفاده میکند.
- --server=[https://]HOST[:PORT][/PATH]
- تعریف سرور
VPN به عنوان
یک HOST ساده
یا به عنوان
یک URL شامل HOST و
در صورت
تمایل
شماره PORT و
PATH؛ در برخی
پروتکلها،
این مسیر
ممکن است به
عنوان گروه
ورود به
سیستم یا realm
عمل کند، و
میتوان آن
را به طور
معادل با
--usergroup نیز
مشخص کرد.
به عنوان جایگزین، سرور VPN را به عنوان یک آرگومان غیرگزینهای در خط فرمان تعریف کنید.
- -u,--user=NAME
- تنظیم نام کاربری ورود به سیستم به NAME
- -V,--version
- گزارش شماره نسخه
- -v,--verbose
- خروجی بیشتر (میتواند چندین بار برای خروجیهای اضافی مشخص شود)
- -x,--xmlconfig=CONFIG
- فایل پیکربندی XML
- --authgroup=GROUP
- انتخاب GROUP از
منوی کشویی
یا ورودی
لیست احراز
هویت.
بسیاری از VPNها نیازمند انتخابی از یک منوی کشویی یا لیست در طول فرایند احراز هویت هستند. این انتخاب ممکن است با نامهای authgroup (در VPNهای سیسکو)، realm (جونیپر، پالس، فورتینت)، domain (اف۵)، و gateway (گلوبالپروتکت) شناخته شود. این گزینه تلاش میکند فیلد مناسب و مختص هر پروتکل را به طور خودکار با مقدار دلخواه پر کند.
- --authenticate
- احراز هویت
در VPN، نمایش
اطلاعات
مورد نیاز
برای
برقراری
اتصال در
قالبی که
بتواند
برای تنظیم
متغیرهای
محیطی
پوسته
استفاده
شود، و سپس
خروج.
هنگامی که OpenConnect با این گزینه فراخوانی شود، اتصال واقعی VPN را ایجاد نمیکند و رابط تونل را نیز پیکربندی نخواهد کرد، بلکه در صورت موفقیت، خروجی مشابه زیر را در stdout چاپ میکند:
COOKIE='3311180634@13561856@1339425499@B315A0E29D16C6FD92EE...' HOST='10.0.0.1' CONNECT_URL='https://vpnserver.example.com' FINGERPRINT='469bb424ec8835944d30bc77c77e8fc1d8e23a42' RESOLVE='vpnserver.example.com:10.0.0.1'
بنابراین، میتوانید openconnect را به عنوان یک کاربر بدون امتیاز ویژه (با دسترسی به توکنهای PKCS#11 کاربر و غیره) برای احراز هویت فراخوانی کنید، و سپس openconnect را به طور جداگانه برای برقراری اتصال واقعی به عنوان ریشه (root) اجرا نمایید:eval `openconnect --authenticate https://vpnserver.example.com`; [ -n ["$COOKIE"] ] && echo ["$COOKIE"] | sudo openconnect --cookie-on-stdin $CONNECT_URL --servercert $FINGERPRINT --resolve $RESOLVE
نسخههای پیشین OpenConnect فقط متغیر HOST (حاوی آدرس عددی سرور) را تولید میکردند، و نه متغیرهای CONNECT_URL یا RESOLVE. متعاقبا دریافتیم که سرورهای پشت پراکسی ممکن است به درستی پاسخ ندهند مگر اینکه نام صحیح DNS در فاز اتصال وجود داشته باشد، و پشتیبانی از پروتکلهای VPN را اضافه کردیم که بخش path در URL سرور ممکن است در فاز اتصال مهم باشد، که این امر منجر به افزودن CONNECT_URL و RESOLVE و توصیه به استفاده از آنها به شرح بالا شد. اگر مطمئن نیستید که در حال اجرای نسخه جدیدتری از OpenConnect هستید که این متغیرها را خروجی میدهد، از دستور زیر استفاده کنید (سازگار با بیشتر مشتقات پوسته Bourne) که هم با نسخه جدیدتر و هم با نسخه قدیمیتر کار میکند:
sudo openconnect --cookie-on-stdin ${CONNECT_URL:-$HOST} --servercert $FINGERPRINT ${RESOLVE:+--resolve=$RESOLVE} - تنها دریافت و چاپ کوکی؛ متصل نشدن (این گزینه در اصل زیرمجموعهای از --authenticate است).
- چاپ کوکی در stdout پیش از اتصال (برای مفهوم این کوکی به --authenticate مراجعه کنید)
- --cafile=FILE
- فایل CA اضافی برای اعتبارسنجی سرور. به طور پیشفرض، این گزینه به سادگی باعث میشود OpenConnect گواهی(های) ریشه CA بیشتری را علاوه بر مواردی که مورد اعتماد سیستم هستند، مورد اعتماد قرار دهد. از گزینه --no-system-trust برای جلوگیری از اعتماد OpenConnect به مراجع صدور گواهی پیشفرض سیستم استفاده کنید.
- --no-system-trust
- به مراجع صدور گواهی پیشفرض سیستم اعتماد نشود. اگر این گزینه داده شود، فقط مراجع صدور گواهی ارائهشده با گزینه --cafile (در صورت وجود) به طور خودکار مورد اعتماد قرار خواهند گرفت.
- --disable-ipv6
- قابلیت IPv6 به سرور اعلان نشود
- --dtls-ciphers=LIST
- تنظیم رمزهای OpenSSL مورد پشتیبانی برای DTLS
- --dtls12-ciphers=LIST
- تنظیم رمزهای OpenSSL برای DTLS نسخه 1.2 سیسکو
- --dtls-local-port=PORT
- استفاده از PORT به عنوان پورت محلی برای دیتاگرامهای DTLS و UDP
- --dump-http-traffic
- فعالسازی خروجی تفصیلی تمام درخواستهای HTTP و بدنه تمامی پاسخهای دریافت شده از سرور.
- --pfs
- اعمال
رازداری
روبهجلو
بینقص (PFS).
این امر
تضمین
میکند که
در صورت به
خطر افتادن
کلید
بلندمدت
سرور،
کلیدهای
نشستی که
پیش از
افشای کلید
ایجاد
شدهاند،
مصون
خواهند
ماند. اگر
این گزینه
ارائه شود و
سرور از PFS در
کانال TLS
پشتیبانی
نکند،
اتصال
برقرار
نخواهد شد.
قابلیت PFS در نسخههای سیسکو ASA نسخه 9.1(2) و بالاتر در دسترس است؛ ممکن است لازم باشد مجموعه رمز مناسب توسط مدیر سیستم به صورت دستی با استفاده از تنظیم ssl encryption فعال شود.
- --no-dtls
- غیرفعالسازی DTLS و ESP
- --no-http-keepalive
- نسخه 8.2.2.5
نرمافزار
Cisco ASA دارای
باگی است که
هنگام
استفاده
مجدد از
اتصالات HTTP
برای چندین
درخواست،
گواهی SSL
کلاینت را
فراموش
میکند.
تاکنون،
این مشکل
فقط در
اتصال
اولیه
مشاهده شده
است، جایی
که سرور یک
پاسخ
تغییرمسیر
HTTP/1.0 با دستور
صریح Connection: Keep-Alive
میدهد. OpenConnect
از نسخه 2.22 یک
راهحل
بدون قید و
شرط برای
این موضوع
دارد، که
هرگز نباید
از آن دستور
پس از یک
پاسخ HTTP/1.0
پیروی کرد.
با این حال، تیم پشتیبانی سیسکو نتوانست پاسخ مناسبی به گزارش باگ ارائه دهد و ما نمیدانیم این باگ تحت چه شرایط دیگری ممکن است بروز پیدا کند. بنابراین این گزینه برای غیرفعال کردن تمامی استفادههای مجدد از نشستهای HTTP و برقراری یک اتصال جدید برای هر درخواست وجود دارد. اگر به نظر میرسد سرور شما گواهیتان را شناسایی نمیکند، این گزینه را امتحان کنید. اگر تغییری ایجاد کرد، لطفاً این اطلاعات را به لیست پستی openconnect-devel@lists.infradead.org گزارش دهید.
- --no-passwd
- هرگز برای احراز هویت با رمز عبور (یا SecurID) تلاش نشود.
- --no-external-auth
- جلوگیری از
اعلان
پشتیبانی
از هرگونه
حالت احراز
هویت که به
مرورگر
خارجی نیاز
دارد توسط
OpenConnect به سرور.
برخی سرورها در صورتی که کلاینت اعلام پشتیبانی کند، آن را وادار به استفاده از چنین روش احراز هویتی میکنند، اما اگر به نظر برسد کلاینت از آن پشتیبانی نمیکند، به یک حالت احراز هویت "اسکریپتپذیرتر" بازمیگردند.
- --no-xmlpost
- تلاش برای
ارسال
درخواست
احراز
هویت/پیکربندی
با متد POST به
صورت XML به
سرور انجام
نشود؛ در
عوض از متد
سنتی GET که
توسط
کلاینتها
و سرورهای
قدیمیتر
استفاده
میشد،
استفاده
شود.
این گزینه یک راهکار موقت برای سازگاری است تا مشکلات احتمالی کدی که به طور خودکار به روش قدیمی بازمیگردد دور زده شود. این کار باعث میشود OpenConnect رفتاری شبیه به نسخههای قدیمیتر (4.08 و پایینتر) داشته باشد. اگر متوجه شدید که به استفاده از این گزینه نیاز دارید، باگی در OpenConnect یافتهاید. لطفاً به https://www.infradead.org/openconnect/mail.html مراجعه کرده و این موضوع را به توسعهدهندگان گزارش دهید.
- --allow-insecure-crypto
- الگوریتمهای
رمزنگاری
کهنه و
شکسته 3DES و RC4
ناامن
هستند؛ ما
به صراحت
آنها را به
طور
پیشفرض
غیرفعال
کردهایم.
با این حال،
برخی از
سرورهای VPN
که هنوز
مورد
استفاده
هستند،
توانایی
استفاده از
الگوریتمهای
بهتری را
ندارند.
این گزینه استفاده از این الگوریتمهای ناامن و همچنین استفاده از SHA1 را برای اعتبارسنجی گواهی سرور فعال میکند.
- --non-inter
- منتظر ورودی کاربر نماند؛ در صورت نیاز به ورودی، خارج شود.
- --passwd-on-stdin
- خواندن رمز عبور از ورودی استاندارد
- --protocol=PROTO
- انتخاب
پروتکل VPN PROTO
برای
استفاده در
اتصال.
پروتکلهای
پشتیبانیشده
عبارتند از:
anyconnect برای
سیسکو AnyConnect
(پیشفرض)،
nc برای
پشتیبانی
آزمایشی از
جونیپر Network Connect
(همچنین
توسط اکثر
سرورهای Ivanti/Pulse
Connect Secure
پشتیبانی
میشود)، pulse
برای
پشتیبانی
آزمایشی از
Ivanti/Pulse Connect Secure، gp
برای
پشتیبانی
آزمایشی از
پالو آلتو
نتورکز GlobalProtect،
f5 برای
پشتیبانی
آزمایشی از
اف۵ Big-IP، fortinet
برای
پشتیبانی
آزمایشی از
فورتینت
Fortigate، و array برای
پشتیبانی
آزمایشی از
SSL VPN ارِی
نتورکز (Array Networks).
برای جزئیات بیشتر درباره ویژگیها و کاستیهای هر یک از پروتکلها، به https://www.infradead.org/openconnect/protocols.html مراجعه کنید.
برنامه OpenConnect هنوز از تمام گزینههای احراز هویت مورد استفاده توسط Pulse پشتیبانی نمیکند، و همچنین از Host Checker/TNCC در Pulse پشتیبانی نمینماید. اگر VPN مبتنی بر Junos/Ivanti Pulse شما هنوز با --protocol=pulse پشتیبانی نمیشود، ممکن است --protocol=nc یک گزینه جایگزین کاربردی باشد.
- --token-mode=MODE
- فعالسازی تولید رمز عبور یکبارمصرف با استفاده از الگوریتم MODE. گزینه --token-mode=rsa کتابخانه libstoken را برای تولید کد توکن RSA SecurID فراخوانی میکند، --token-mode=totp یک رمز عبور مبتنی بر زمان مطابق با RFC 6238 تولید میکند، و --token-mode=hotp یک رمز عبور مبتنی بر HMAC مطابق با RFC 4226 ایجاد خواهد کرد. توکنهای Yubikey که کدهای OATH را در سختافزار تولید میکنند، با --token-mode=yubioath پشتیبانی میشوند. گزینه --token-mode=oidc از توکن ارائهشده OpenIDConnect به عنوان یک توکن حامل (bearer token) مطابق با RFC 6750 استفاده خواهد کرد.
- --token-secret={ SECRET[,COUNTER] | @FILENAME }
- کلید
محرمانه
برای
استفاده
هنگام
تولید
رمزهای
یکبارمصرف/کدهای
تایید.
کلیدهای TOTP/HOTP
با کدگذاری
Base 32
میتوانند
با مشخص
کردن "base32:" در
ابتدای
کلید
استفاده
شوند، و
برای
کلیدهای HOTP
شمارنده
توکن
میتواند
پس از یک
ویرگول
مشخص شود.
کلیدهای محرمانه RSA SecurID میتوانند به عنوان یک URI اندروید/آیفون یا یک رشته خام عددی CTF (با یا بدون خط تیره) مشخص شوند.
برای Yubikey OATH، کلید محرمانه توکن نام اطلاعات کاربری مورد استفاده را تعیین میکند. اگر ارائه نشود، از اولین اطلاعات کاربری OATH یافتشده روی دستگاه استفاده خواهد شد.
برای OIDC، کلید محرمانه همان توکن حامل (bearer token) است که باید استفاده شود.
پارامتر FILENAME، در صورت مشخص شدن، میتواند شامل هر یک از رشتههای فوق باشد. یا میتواند حاوی یک بذر XML مربوط به SecurID (SDTID) باشد.
اگر این گزینه حذف شود و --token-mode برابر با "rsa" باشد، کتابخانه libstoken سعی خواهد کرد از بذر توکن نرمافزاری ذخیرهشده در ~/.stokenrc توسط دستور "stoken import" استفاده کند.
- --reconnect-timeout=SECONDS
- پس از قطع ارتباط یا تشخیص همتای مرده (Dead Peer Detection)، تلاش برای اتصال مجدد را به مدت SECONDS ثانیه ادامه دهد. مقدار پیشفرض ۳۰۰ ثانیه است، به این معنی که openconnect میتواند یک اتصال VPN را پس از قطعی موقت شبکه که تا ۳۰۰ ثانیه طول بکشد، بازیابی کند.
- --resolve=HOST:IP
- تفکیک خودکار نام میزبان HOST به IP به جای استفاده از سرویس تفکیککننده معمول شبکه برای جستجوی آن.
- --sni=HOST
- هنگام
ایجاد
اتصالات
جدید TLS،
همیشه نام
میزبان HOST
را به عنوان
SNI (نشانگر
نام سرور)
به جای نام
میزبان
واقعی
ارائه دهد،
که نام
واقعی
همچنان در
هدر 'Host:'
پروتکل HTTP
ارسال
خواهد شد، و
انتظار
داشته باشد
که گواهی
همتا به جای
نام میزبان
واقعی با SNI
مطابقت
داشته باشد.
این امر
ممکن است
برای تکنیک
Domain Fronting مفید
باشد، که از
طریق آن
میتوان
برخی
اتصالات
اینترنتی
فیلترشده
یا
سانسورشده
را دور زد.
توجه داشته باشید که ارسال مقادیر متفاوت برای SNI و هدر 'Host:' استانداردهای HTTP را نقض میکند و توسط بسیاری از ارائهدهندگان میزبانی ابری مسدود شده است.
- --servercert=HASH
- پذیرش
گواهی SSL
سرور تنها
در صورتی که
با
اثرانگشت
(fingerprint)
ارائهشده
مطابقت
داشته باشد.
این گزینه
متضمن --no-system-trust
است، و ممکن
است چندین
بار به
منظور
پذیرش
چندین
اثرانگشت
احتمالی
مشخص شود.
انواع اثرانگشت مجاز عبارتند از SHA1، SHA256 و PIN-SHA256. آنها با پیشوندهای 'sha1:'، 'sha256:' و 'pin-sha256:' در ابتدای هش کدگذاریشده متمایز میشوند. دو مورد اول شناسههای سفارشی هستند که کدگذاری هگزادسیمال کلید عمومی همتا را ارائه میدهند، در حالی که 'pin-sha256:' همان PIN کلید طبق RFC7469 است که از کدگذاری base64 استفاده میکند. برای تسهیل برخی موارد استفاده آزمایشی، تطابق جزئی هش نیز پذیرفته خواهد شد، مشروط بر اینکه حداقل ۴ نویسه پس از پیشوند باشد.
- --useragent=STRING
- استفاده از
STRING به عنوان
مقدار فیلد
'User-Agent:' در هدر HTTP.
برخی از سرورهای VPN ممکن است به مقادیر خاصی مطابق با مقادیر ارسالی توسط کلاینتهای اختصاصی VPN برای احراز هویت یا اتصال موفق نیاز داشته باشند. برای مثال، هنگام اتصال به سرور VPN سیسکو، --useragent 'AnyConnect Windows 4.10.06079' یا --useragent 'Cisco AnyConnect VPN Agent for Windows 2.2.0133' یا هنگام اتصال به سرور Pulse، --useragent 'Pulse-Secure/9.1.11.6725'.
- --version-string=STRING
- استفاده از STRING به عنوان نسخه نرمافزار گزارششده به سرور اصلی (head end). (مانند --version-string '2.2.0133')
- --local-hostname=STRING
- استفاده از STRING به عنوان مقدار فیلد 'X-CSTP-Hostname:' در هدر HTTP. برای مثال --local-hostname 'mypc'، مقدار 'mypc' را به عنوان نام میزبان پیشنهادی برای اشاره به آدرس IP ارائهشده اعلان میکند.
- --os=STRING
- نوع سیستمعامل برای گزارش به درگاه. مقادیر شناختهشده عبارتند از: linux، linux-64، win، mac-intel، android، apple-ios. گزارش یک سیستمعامل متفاوت ممکن است بر خطمشی دسترسی پویا (DAP) اعمالشده روی نشست VPN تاثیر بگذارد. اگر درگاه به CSD نیاز داشته باشد، همچنین باعث میشود باینری تروجان CSD مربوطه دانلود شود، بنابراین در صورتی که این کد روی ماشین محلی قابل اجرا نباشد، ممکن است نیاز به استفاده از --csd-wrapper داشته باشید.
سیگنالها (SIGNALS)
در فاز داده اتصال، سیگنالهای زیر مدیریت میشوند:
- SIGINT / SIGTERM
- خاتمه تمیز ارتباط را با خروج از نشست (logout)، قطع ارتباط از درگاه، و اجرای vpnc-script برای بازیابی پیکربندی شبکه انجام میدهد.
- SIGHUP
- ارتباط با درگاه را قطع کرده و vpnc-script را اجرا میکند، اما از نشست خارج نمیشود؛ این امر امکان اتصال مجدد در آینده را با استفاده از --cookie فراهم میسازد.
- SIGUSR1
- پیام پیشرفت را همراه با اطلاعات و آمار تفصیلی اتصال مینویسد.
- SIGUSR2
- قطع و اتصال مجدد فوری را اجبار میکند؛ این سیگنال میتواند برای بازیابی سریع پس از تغییرات آدرس IP شبکه محلی (LAN) استفاده شود.
محدودیتها (LIMITATIONS)
برای ویژگیهای مختلفی که مایل بودیم OpenConnect دارای آنها باشد به https://www.infradead.org/openconnect/contribute.html و برای اطلاعات درباره رفتارها و محدودیتهای خاص هر یک از پروتکلهای VPN به https://www.infradead.org/openconnect/protocols.html مراجعه کنید.
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
David Woodhouse <dwmw2@infradead.org>