edge(8) SUPERUSER COMMANDS edge(8)

edge - دیمون نود کلاینت در شبکه مجازی همتا به همتای n2n

edge <پرونده پیکربندی>
edge -c <community> -l <supernode host:port> [گزینه‌های بیشتر]...

سامانه N2N یک سیستم VPN همتا به همتا (peer-to-peer) است. برنامه edge دیمون گره لبه برای n2n است که یک رابط TAP را به منظور ایجاد و اتصال به شبکه محلی مجازی (VLAN) در n2n پیاده‌سازی می‌کند. در هنگام راه‌اندازی، edge رابط TAP را ایجاد کرده و پیکربندی می‌کند، سپس در سوپرنود ثبت‌نام می‌نماید تا بتواند سایر گره‌های عضو جامعه (community) را پیدا کند.

پرونده پیکربندی شبیه به خط فرمان بوده و در هر خط یک گزینه قرار می‌گیرد. خطوطی که با «#» آغاز می‌شوند نادیده گرفته می‌شوند. میان کلید و مقدار باید از علامت مساوی ('=') استفاده شود؛ برای نمونه: -p=7777.

نام جامعه (community) شبکه n2n را تعیین می‌کند (همچنین متغیر N2N_COMMUNITY را در بخش محیط (ENVIRONMENT) ببینید). تمام گره‌های edge درون یک جامعه یکسان، در یک شبکه محلی (بخش شبکه لایه ۲) ظاهر می‌شوند. طول نام جامعه ۱۶ بایت است. نام کوتاه‌تر با بایت‌های 0x00 پر (pad) می‌شود و نام‌های طولانی‌تر به ۱۶ بایت اول کوتاه می‌گردند.
نشانی IP و درگاه سوپرنود n2n را برای ثبت‌نام در آن مشخص می‌کند. می‌توان چندین سوپرنود را تعیین کرد.
دیمون edge را به درگاه UDP مشخص‌شده متصل (bind) می‌کند. این گزینه برای حفظ همان سوکت خارجی در راه‌اندازی‌های مجدد edge مفید است و به گره‌های همتایی که از سوکت edge آگاه هستند اجازه می‌دهد بدون بازگشت به سوپرنود، به ارتباط همتا به همتا (P2P) ادامه دهند. همچنین قابلیت فوروارد کردن درگاه روتر خانگی نیز می‌تواند به این درگاه ثابت اشاره کند. به صورت اختیاری، edge می‌تواند فقط به نشانی IP محلی ارائه‌شده متصل شود؛ این امر در مواردی که محدودسازی به یک رابط محلی یا وای‌فای خاص مد نظر باشد کاربرد دارد. به صورت پیش‌فرض، edge به تمام رابط‌ها متصل می‌شود.
تعیین نوع سرویس (TOS) برای بسته‌ها، برای نمونه 0x48 برای اولویتی مشابه SSH.
فعال‌سازی کشف PMTU؛ این گزینه می‌تواند تکه‌تکه شدن (fragmentation) بسته‌ها را کاهش دهد، اما در صورتی که به درستی پشتیبانی نشود ممکن است باعث اختلال و توقف اتصالات گردد.
نشانی IP محلی ارائه‌شده را به عنوان نشانی ترجیحی اعلان می‌کند؛ زمانی که تشخیص همتا از طریق چندپخشی (multicast) در دسترس نیست (مثلاً در روترها غیرفعال است) مفید خواهد بود. گزینه -e auto برای تشخیص خودکار نشانی IP محلی تلاش می‌کند.
ارتباط همتا به همتا برقرار نشود و همیشه از سوپرنود استفاده گردد: -S1 از طریق UDP و -S2 از طریق TCP.
بازه زمانی ثبت‌نام در سوپرنود. فاصله زمانی بر حسب ثانیه را میان بسته‌های متوالی REGISTER_SUPER مشخص می‌کند و برای باز نگه‌داشتن حفره NAT از طریق تکنیک سوراخ‌کاری NAT با UDP استفاده می‌شود. این گزینه تنها برای NATهای نامتقارن عمل کرده و ارتباط همتا به همتا را امکان‌پذیر می‌سازد.
تنظیم TTL برای بسته سوراخ‌کاری NAT. این یک فلگ پیشرفته است تا اطمینان حاصل شود بسته ثبت‌نام بلافاصله پس از خروج از NAT محلی دور انداخته می‌شود تا باعث فعال شدن رفتارهای فایروال در گره مقصد نشود. در واقع، انتظار می‌رود بسته ثبت‌نام تنها یک حفره UDP در NAT محلی باز کند و به گره مقصد نرسد؛ مستند https://tools.ietf.org/html/rfc5389 را ببینید. برای دستیابی به این هدف، این فلگ باید روی «تعداد لایه‌های NAT + 1» تنظیم شود. برای مثال، اگر ۲ لایه NAT در شبکه محلی وجود دارد، باید مقدار -L 3 تنظیم گردد. معمولاً ما تعداد دقیق لایه‌های NAT را در شبکه محلی می‌دانیم. اگر از تعداد لایه‌های NAT در شبکه محلی مطمئن نیستیم، می‌توانیم از traceroute در لینوکس برای بررسی استفاده کنیم. مثال زیر یک NAT محلی تک‌لایه را نشان می‌دهد زیرا در جهش دوم یک نشانی IP عمومی دیده می‌شود. در این حالت باید -L 2 تنظیم گردد:
$ /usr/sbin/traceroute -w1 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.3.1 (192.168.3.1)  0.464 ms  0.587 ms  0.719 ms
 2  112.65.17.217 (112.65.17.217)  5.269 ms  7.031 ms  8.666 ms

اما این روش به دلیل سیاست‌های گوناگون دستگاه‌های شبکه محلی همواره پاسخگو نیست.

کلید رمزنگاری (اسکی) - همچنین به صورت N2N_KEY=<key>
تنظیم کلید رمزنگاری با استفاده از متن اسکی (همچنین متغیر N2N_KEY در بخش محیط (ENVIRONMENT) را ببینید). تمام گره‌های edge متصل به یکدیگر باید از کلید و نام جامعه یکسانی استفاده نمایند. اگر -k مشخص نشود، edge از حالت متن ساده (بدون رمزنگاری) استفاده می‌کند.
غیرفعال‌سازی رمزنگاری داده‌ها (بار مفید)؛ نباید همراه با کلید استفاده شود، در این صورت به عنوان پیش‌فرض AES در نظر گرفته می‌شود.
انتخاب الگوریتم رمزنگاری برای بار مفید؛ نیازمند ارائه کلید است: -A2 = الگوریتم Twofish، -A3 = الگوریتم AES (در صورت ارائه کلید، پیش‌فرض است)، -A4 = الگوریتم ChaCha20، -A5 = الگوریتم Speck-CTR.
استفاده از رمزنگاری هدر؛ سوپرنود نیازمند جامعه (community) ثابت است.
فشرده‌سازی بسته‌های داده خروجی: -z1 = فشرده‌سازی lzo1x؛ به صورت پیش‌فرض غیرفعال است.
انتخاب سوپرنود بر اساس زمان رفت و برگشت (RTT) در صورتی که چندین گزینه برای انتخاب وجود داشته باشد (حالت فدراسیون)؛ در صورت عدم تعیین، راهبرد انتخاب بر اساس بار به عنوان پیش‌فرض عمل خواهد کرد.
انتخاب سوپرنود بر اساس نشانی MAC در صورت وجود گزینه‌های متعدد (حالت فدراسیون)؛ پایین‌ترین نشانی MAC در اولویت است.
رفتار پیش‌فرض مبنی بر تلاش برای فوروارد کردن خودکار درگاه edge از طریق روترهای پشتیبانی‌کننده را غیرفعال می‌کند (تنها در صورت کامپایل با پشتیبانی از کتابخانه‌های miniupnp و/یا natpmp).

نشانی رابط و زیرشبکه اختیاری CIDR، مقدار پیش‌فرض '/24' است. حالت = [static|dhcp]:؛ برای DHCP از '-r -a dhcp:0.0.0.0' استفاده کنید؛ در صورت عدم ارائه '-a ...' ، گره edge نشانی IP را از سوپرنود دریافت می‌کند.
راه‌اندازی رابط TAP با نشانی MAC داده‌شده. این گزینه به شدت توصیه می‌شود چرا که باعث می‌شود در صورت توقف و راه‌اندازی مجدد edge از همان نشانی استفاده شود. در غیر این صورت، حافظه موقت ARP تمام همتاها نادرست شده و تا زمان بازخوانی بعدی ARP، هیچ بسته‌ای به این edge هدایت نخواهد شد. برای نمونه: '-m 10:20:30:40:50:60' ؛ به صورت پیش‌فرض از یک نشانی MAC تصادفی استفاده می‌شود.
نام دستگاه TAP.
تعیین MTU شبکه n2n برای رابط TAP؛ مقدار پیش‌فرض ۱۲۹۰ است.
فعال‌سازی فورواردینگ/مسیریابی بسته‌های IP از طریق شبکه محلی مجازی n2n. بدون این گزینه، بسته‌های IP دریافتی از طریق n2n که متعلق به نشانی IP رابط edge (تعیین‌شده توسط -a <addr> یا ارائه‌شده از طریق DHCP) نباشند، دور انداخته می‌شوند.
پذیرش بسته‌هایی که به نشانی‌های MAC اترنت چندپخشی (multicast) ارسال شده‌اند. این نشانی‌ها در اترنت چندپخشی و کشف همسایه IPv6 کاربرد دارند. در صورت عدم درج این گزینه، این بسته‌های چندپخشی نادیده گرفته می‌شوند چون اکثر کاربران به آن‌ها نیازی ندارند.
توضیحاتی برای edge که برای شناسایی راحت‌تر در خروجی درگاه مدیریت یا نام کاربری استفاده می‌شود.
گذرواژه برای احراز هویت edge مبتنی بر کاربر-گذرواژه (همچنین متغیر N2N_PASSWORD را در بخش محیط (ENVIRONMENT) ببینید).
کلید عمومی فدراسیون برای احراز هویت کاربر-گذرواژه.
افزودن قانون برای دور انداختن (drop) یا پذیرش (accept) بسته‌های خاص در حال انتقال روی رابط شبکه edge. از -R rule_str می‌توان چندین بار برای افزودن چندین قانون استفاده کرد. هر -R rule_str یک قانون اضافه می‌کند.

قالب rule_str:

"src_ip/len:[b_port,e_port],dst_ip/len:[s_port,e_port],TCP+/-,UDP+/-,ICMP+/-"

عبارت ip/len بیانگر یک بلوک CIDR است؛ len می‌تواند حذف شود که در این صورت یک IP تکی (نه بلوک CIDR) در قانون فیلتر استفاده خواهد شد.

علامت‌های + یا - پس از نوع پروتکل‌های TCP، UDP و ICMP نشان‌دهنده مجاز بودن یا مسدود شدن بسته‌های آن پروتکل است. در صورت ذکر نشدن هر یک از این سه پروتکل، قانون بر روی آن پروتکل اعمال نخواهد شد.

محدوده درگاه‌ها [s_port,e_port] می‌تواند با یک شماره درگاه تکی جایگزین شود. در صورت عدم تعیین، مقدار [0,65535] استفاده خواهد شد. محدوده درگاه شامل درگاه شروع و درگاه پایان است. اگر چندین قانون با IPها و درگاه‌های بسته مطابقت داشته باشند، قانونی که بلوک CIDR کوچک‌تری دارد (فضای نشانی کوچک‌تر) انتخاب می‌شود. این بدان معناست که قوانینی با مقدار len بزرگ‌تر اولویت بالاتری دارند.

بسته‌هایی که با هیچ قانونی مطابقت نداشته باشند به صورت پیش‌فرض پذیرفته می‌شوند. کاربران می‌توانند برای مسدود کردن ترافیک قوانینی اضافه کنند. این رفتار را می‌توان با افزودن قانون زیر تغییر داد:

`0.0.0.0/0:[0,65535],0.0.0.0/0:[0,65535],TCP-,UDP-,ICMP-`

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

برای نمونه:

-R 0.0.0.0/0,0.0.0.0/0,TCP-,UDP-,ICMP- -R 192.168.100.0/24,192.168.100.0/24,ICMP+
تنظیم متریک رابط TAP؛ مقدار پیش‌فرض 0 (خودکار) است؛ برای نمونه مقدار 1 برای تشخیص بهتر در بازی‌های چندنفره.
(فقط در ویندوز)

عدم اجرای چنگالی (fork) در پس‌زمینه به عنوان دیمون؛ اجرا در پیش‌زمینه (foreground).
اتصال سامانه مدیریت edge به درگاه UDP مشخص‌شده؛ مقدار پیش‌فرض 5644 است. اگر لازم است چندین نمونه از edge را اجرا کنید یا سرویس دیگری از این درگاه استفاده می‌کند، از این گزینه بهره ببرید.
تنظیم گذرواژه برای دسترسی به JSON API در درگاه مدیریت؛ مقدار پیش‌فرض 'n2n' است. این گذرواژه باید هنگام استفاده از 'scripts/n2n-ctl' یا 'scripts/n2n-httpd' یا هرگونه دسترسی مرتبط دیگر به JSON API در درگاه مدیریت ارائه شود.
نمایش خروجی با جزئیات بیشتر؛ در صورت نیاز تکرار شود.
مسیریابی یک شبکه IPv4 از طریق دروازه (gateway)؛ از 0.0.0.0/0 برای دروازه پیش‌فرض استفاده کنید؛ این گزینه می‌تواند چندین بار تنظیم شود.
شناسه کاربری عددی (UID) برای استفاده پس از سلب دسترسی‌های ممتاز ریشه.
شناسه گروهی عددی (GID) برای استفاده پس از سلب دسترسی‌های ممتاز ریشه.
نمایش راهنمای استفاده و سپس خروج.
نمایش توضیحات تفصیلی پارامترها.

تنظیم کلید رمزنگاری به گونه‌ای که در خط فرمان نمایش داده نشود.
تنظیم نام جامعه به گونه‌ای که در خط فرمان نمایش داده نشود.
تنظیم گذرواژه برای احراز هویت کاربر-گذرواژه به گونه‌ای که در خط فرمان نمایش داده نشود.

راه‌اندازی edge با دستگاه TAP با نام n2n0 در جامعه "mynetwork" همراه با سوپرنود جامعه در 123.121.120.119 و درگاه UDP شماره 7654 و اتصال درگاه محلی UDP به 50001. استفاده از "encryptme" به عنوان کلید رمزنگاری مشترک دائمی منفرد. تخصیص نشانی MAC با مقدار DE:AD:BE:EF:01:23 به رابط n2n و سلب دسترسی‌های ریشه به user=99 و group=99 پس از پیکربندی موفقیت‌آمیز دستگاه TAP:

edge -d n2n0 -c mynetwork -k encryptme -u 99 -g 99 -m DE:AD:BE:EF:01:23 -a 192.168.254.7 -p 50001 -l 123.121.120.119:7654

افزودن گزینه -f برای جلوگیری از اجرای edge به صورت دیمون.

در سامانه‌ای دیگر، یک edge دیگر را با پارامترهای مشابه راه‌اندازی کنید؛ برای نمونه:

edge -d n2n0 -c mynetwork -k encryptme -u 99 -g 99 -m DE:AD:BE:EF:01:21 -a 192.168.254.5 -p 50001 -l 123.121.120.119:7654

اکنون می‌توانید از 192.168.254.5 به 192.168.254.7 پینگ بگیرید.

نشانی MAC (-m <MAC>) و نشانی IP مجازی (-a <addr>) باید در تمام گره‌های edge در یک جامعه یکسان متفاوت باشند.

اگر -k مشخص نشود، برنامه edge از حالت متن ساده (cleartext) استفاده می‌کند. در حالت متن ساده هیچ تغییری روی داده‌های بسته انجام نمی‌شود و بسته‌ها رمزنگاری نمی‌شوند. این حالت برای اشکال‌زدایی n2n کاربردی است زیرا محتوای بسته‌ها به طور واضح قابل مشاهده خواهد بود.

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

برنامه edge یک سیستم مدیریت بسیار ساده را روی درگاه UDP شماره 5644 ارائه می‌دهد. با ارسال یک کاراکتر خط جدید (newline) خروجی وضعیت دریافت می‌شود. با ارسال 'stop' دیمون edge به طور منظم و تمیز خارج می‌شود.

نمایش آمار و وضعیت فعلی یک نسخه در حال اجرای edge.

برنامه edge یک دیمون است و هرگونه خروج از آن، خطا محسوب می‌شود.

andrews (at) ntop.org - نگه‌دارنده n2n-1 و نویسنده اصلی n2n-2
deri (at) ntop.org - نویسنده اولیه n2n
(--) - مشارکت‌های برجسته در n2n-1

ifconfig(8)، supernode(1)، tunctl(8)، n2n(7)
مستندات موجود در کد منبع پروژه
مستندات جامع موجود در پوشه doc/ در مخزن n2n

18 Jul 2021 version 3