PPPOE(8) راهنمای PPPoE PPPOE(8)
" SPDX-License-Identifier: GPL-2.0-or-later

pppoe - کلاینت PPPoE در فضای کاربری

pppd pty 'pppoe [pppoe_options]' [pppd_options]

pppoe -A [pppoe_options]

برنامه pppoe یک کلاینت فضای کاربری (user-space) برای پروتکل PPPoE (پروتکل نقطه-به-نقطه روی اترنت) برای لینوکس و سایر سیستم‌های یونیکس است. pppoe همراه با دیمن PPP یعنی pppd همکاری می‌کند تا یک اتصال PPP را روی بستر اترنت فراهم سازد، همان‌گونه که توسط بسیاری از ارائه‌دهندگان خدمات اینترنت DSL استفاده می‌شود.

گزینه -I رابط اترنت مورد استفاده را تعیین می‌کند. در لینوکس معمولاً eth0 یا eth1 است. رابط شبکه باید پیش از اجرای pppoe در وضعیت فعال (up) باشد، اما نباید دارای نشانی IP پیکربندی‌شده باشد.
گزینه -T باعث می‌شود در صورت عدم شناسایی ترافیک نشست برای مدت‌زمان timeout ثانیه، pppoe خارج شود. توصیه می‌شود از این گزینه به عنوان یک اقدام ایمنی تکمیلی استفاده کنید، اما در این صورت باید مطمئن شوید که PPP ترافیک کافی تولید می‌کند تا این مهلت در شرایط عادی فعال نشود. بهترین روش برای این کار استفاده از گزینه lcp-echo-interval در pppd است. باید مهلت زمانی PPPoE را حدود چهار برابر بازه اکو LCP تنظیم کنید.
گزینه -D باعث می‌شود تمامی بسته‌ها در پرونده file_name ذخیره و تخلیه (dump) شوند. این گزینه صرفاً برای اشکال‌زدایی است؛ حجم زیادی از خروجی تولید می‌کند و کارایی را به شدت کاهش می‌دهد.
گزینه -V باعث چاپ شماره نسخه pppoe و خروج از برنامه می‌شود.
گزینه -A باعث می‌شود pppoe یک بسته PADI ارسال کرده و سپس نام متمرکزکننده‌های دسترسی موجود در هر بسته PADO دریافتی را چاپ کند. از این گزینه همراه با pppd استفاده نکنید؛ گزینه -A برای استفاده تعاملی جهت دریافت اطلاعات مفید درباره متمرکزکننده دسترسی در نظر گرفته شده است.
نام سرویس مورد نظر را مشخص می‌کند. برنامه pppoe تنها با متمرکزکننده‌های دسترسی که بتوانند سرویس مشخص‌شده را ارائه دهند نشست برقرار خواهد کرد. در بیشتر موارد نباید این گزینه را تعیین کنید. تنها در صورتی از آن بهره ببرید که می‌دانید چندین متمرکزکننده دسترسی وجود دارند یا به سرویس خاصی نیاز است.
نام متمرکزکننده دسترسی مورد نظر را مشخص می‌کند. برنامه pppoe تنها با متمرکزکننده دسترسی تعیین‌شده نشست آغاز خواهد کرد. در بیشتر موارد نباید این گزینه را مشخص نمایید. اگر هر دو گزینه -S و -C مشخص شوند، برای برقراری نشست باید هر دو تطابق داشته باشند.
باعث می‌شود pppoe از برچسب Host-Uniq در بسته‌های اکتشافی خود استفاده کند. این ویژگی به شما امکان می‌دهد چندین دیمن pppoe را بدون تداخل بسته‌های اکتشافی آن‌ها اجرا کنید. در صورتی که قصد دارید چندین دیمن را به‌طور همزمان اجرا کنید، باید این گزینه را به تمام دیمن‌های pppoe بدهید. مقدار مشخص Host-Uniq مورد استفاده، نمایش هگزادسیمال PID فرآیند pppoe است.
باعث می‌شود pppoe از برچسب Host-Uniq در بسته‌های اکتشافی استفاده کند و علاوه بر آن، مقدار Host-Uniq را روی value تنظیم نماید. با احتیاط استفاده شود. توجه داشته باشید که -W و -U با یکدیگر ناسازگارند.
باعث می‌شود pppoe از کپسوله‌سازی همگام (synchronous) در PPP استفاده کند. اگر از این گزینه استفاده می‌کنید، باید گزینه sync را با pppd به کار ببرید. توصیه می‌شود در صورت کارکرد مناسب از این گزینه استفاده کنید، زیرا بار پردازشی CPU را در pppoe به میزان چشمگیری کاهش می‌دهد. با این حال ممکن است روی سیستم‌های کند ناپایدار باشد؛ چرا که یک شرایط رقابتی (race condition) میان نوشتن داده توسط pppd و خواندن آن توسط pppoe وجود دارد. به همین دلیل تنظیم پیش‌فرض ناهمگام است.
باعث می‌شود pppoe بیشینه اندازه قطعه TCP (یا MSS) را روی مقدار تعیین‌شده مهار (clamp) کند. به دلیل سربار PPPoE، حداکثر اندازه قطعه برای PPPoE کمتر از کپسوله‌سازی معمولی اترنت است. این موضوع می‌تواند برای رایانه‌های موجود در شبکه محلی پشت یک گیت‌وی PPPoE مشکل‌ساز شود. اگر شبکه‌ای پشت گیت‌وی دارید و گیت‌وی از طریق PPPoE به اینترنت متصل می‌شود، اکیداً توصیه می‌شود از گزینه -m 1412 استفاده فرمایید تا از تنظیم دستی MTU روی تک‌تک میزبان‌های شبکه محلی بی‌نیاز شوید.
باعث می‌شود pppoe شناسه فرآیند (PID) خود را در فایل مشخص‌شده بنویسد. این کار برای یافتن و پایان دادن به فرآیندهای pppoe کاربرد دارد.
باعث می‌شود pppoe مرحله اکتشاف را نادیده گرفته و مستقیماً وارد مرحله نشست شود. نشست با sess و نشانی MAC همتا با mac مشخص می‌گردد. این حالت برای استفاده عادی در نظر گرفته نشده و صرفاً برای pppoe-server(8) طراحی شده است.
باعث می‌شود pppoe سوکت اکتشاف را باز نکند. این حالت صرفاً برای pppoe-server(8) طراحی شده است.
باعث می‌شود pppoe با ارسال یک فریم PADT به نشست موجود خاتمه دهد و سپس خارج شود. باید گزینه -e را همراه با این گزینه استفاده کنید تا نشستی که باید خاتمه یابد مشخص گردد.
باعث می‌شود pppoe عملیات اکتشاف را انجام داده و پس از چاپ اطلاعات نشست در خروجی استاندارد خارج شود. اطلاعات نشست دقیقاً در قالبی چاپ می‌شود که مورد انتظار گزینه -e است. مراقب باشید؛ استفاده از این گزینه در یک حلقه می‌تواند نشست‌های فراوانی ایجاد کند.
گزینه -f انواع فریم‌های اترنت را برای فریم‌های اکتشاف و نشست PPPoE تعیین می‌کند. انواع فریم‌ها به عنوان اعداد هگزادسیمال جداشده با دونقطه مشخص می‌شوند. PPPoE استاندارد از انواع 8863:8864 استفاده می‌کند. تنها در صورتی از این گزینه استفاده کنید که کاملاً مطمئنید طرف مقابل از فریم‌های غیراستاندارد استفاده می‌کند.
گزینه -h باعث چاپ اطلاعات نحوه استفاده و خروج می‌شود.

پروتکل PPPoE (پروتکل نقطه-به-نقطه روی اترنت) در RFC 2516 شرح داده شده است و امکان حفظ انتزاع نشست را روی شبکه‌های اترنت پل‌شده (bridged) فراهم می‌سازد.

پروتکل PPPoE با کپسوله‌سازی فریم‌های PPP درون فریم‌های اترنت کار می‌کند. این پروتکل دارای دو مرحله متمایز است: مرحله اکتشاف (discovery) و مرحله نشست (session).

در مرحله اکتشاف، میزبان یک فریم ویژه PADI (آغازگر اکتشاف فعال PPPoE) را برای یافتن متمرکزکننده‌های دسترسی (access concentrators) ارسال می‌کند. متمرکزکننده‌های دسترسی با بسته‌های PADO (پیشنهاد اکتشاف فعال PPPoE) پاسخ می‌دهند و حضور و خدمات خود را اعلام می‌کنند. میزبان یکی از آن‌ها را انتخاب کرده و یک بسته PADR (درخواست نشست) می‌فرستد. متمرکزکننده دسترسی با یک بسته PADS (تایید نشست) پاسخ می‌دهد و سپس پروتکل وارد مرحله نشست می‌شود.

در مرحله نشست، میزبان و متمرکزکننده دسترسی فریم‌های PPP تعبیه‌شده در فریم‌های اترنت را مبادله می‌کنند. مقدار MTU معمولی اترنت 1500 بایت است، اما سربار PPPoE به علاوه دو بایت برای فریم PPP بدین معناست که MTU رابط PPP حداکثر 1492 بایت خواهد بود. اگر از لینوکس به عنوان فایروال استفاده می‌کنید، این موضوع می‌تواند مشکلاتی ایجاد کند. برای ایمنی توصیه می‌شود MTU دستگاه‌های پشت فایروال روی 1412 تنظیم شود.

به‌طور معمول PPP از پروتکل کنترل پیوند (LCP) برای بستن پیوند استفاده می‌کند، اما مشخصات PPPoE اجازه می‌دهد پیوند با بسته ویژه PADT بسته شود. این کلاینت چنین بسته‌ای را شناسایی کرده و به‌درستی خارج می‌شود.

اهداف طراحی برای این کلاینت PPPoE به ترتیب اولویت عبارت بودند از:

باید کار کند.
باید برنامه‌ای در فضای کاربری باشد و نه یک وصله (patch) برای هسته.
کد باید به آسانی خوانده و نگهداری شود.
باید کاملاً با استاندارد پیشنهادی RFC 2516 سازگار باشد.
هرگز نباید به مدت نامحدود معلق بماند -- اگر اتصال قطع شد باید آن را تشخیص داده و خارج شود تا اسکریپت راه‌انداز بتواند اتصال را دوباره برقرار کند.
باید از کارایی مناسبی برخوردار باشد.

برای اطلاعات بیشتر و تماس به صفحه وب من در https://dianne.skoll.ca/projects/rp-pppoe مراجعه فرمایید.

برای دستیابی به بهترین نتیجه، باید به pppd مقدار mtu برابر با 1492 بدهید. همچنین اگر pppoe روی یک سیستم فایروال اجرا می‌شود، تمام رایانه‌های پشت فایروال باید دارای MTU برابر با 1412 باشند.

اگر با مشکلی مواجه شدید، لاگ‌های سیستمی را بررسی کنید. pppoe رویدادهای مهم را در syslog ثبت می‌کند. ممکن است برای عیب‌یابی دقیق لازم باشد ثبت پیام‌های سطح debug را فعال نمایید.

برنامه pppoe توسط Dianne Skoll <dianne@skoll.ca> با الهام فراوان از نسخه اولیه Luke Stras نوشته شده است.

صفحه خانگی pppoe در https://dianne.skoll.ca/projects/rp-pppoe قرار دارد.

pppd(8), pppoe-sniff(8), pppoe-server(8), pppoe-relay(8)

5 October 2015 4th Berkeley Distribution