| dictionary(5) | File Formats Manual | dictionary(5) |
نام (NAME)
dictionary - قالب فایل دیکشنری پروتکل RADIUS در FreeRADIUS
توضیحات (DESCRIPTION)
فایل اصلی دیکشنری RADIUS در مسیر /etc/raddb/dictionary قرار دارد. این فایل به سایر فایلهای dictionary واقع در /usr/share/freeradius ارجاع میدهد. هر فایل دیکشنری حاوی فهرستی از ویژگیها و مقادیر RADIUS است که سرور از آنها برای نگاشت میان نامهای توصیفی و دادههای ارسالی روی شبکه استفاده میکند. این نامها در خارج از خود سرور RADIUS هیچ معنایی ندارند و هرگز میان سرور و کلاینتها تبادل نمیشوند.
به بیان دیگر، ویرایش دیکشنریها هیچ تاثیری بر هیچ چیز دیگری به جز همان سروری که آن فایلها را میخواند نخواهد داشت. افزودن ویژگیهای جدید به دیکشنریها هیچ اثری روی کلاینتهای RADIUS ندارد و سبب درک خودکار آن ویژگیها توسط کلاینتهای RADIUS نمیشود. دیکشنریها صرفاً برای راحتی کار مدیر سیستم محلی هستند و مختص هر نسخه از FreeRADIUS میباشند.
دیکشنریهای موجود در /usr/share نباید ویرایش شوند مگر اینکه دقیقاً بدانید چه کاری انجام میدهید. تغییر دادن آنها به احتمال زیاد استقرار RADIUS شما را از کار خواهد انداخت.
اگر نیاز به افزودن ویژگیهای جدید دارید، لطفاً فایل /etc/raddb/dictionary را ویرایش کنید. تنها هدف این فایل، نگهداری تعاریف محلی است که توسط مدیر سیستم اضافه میشوند.
قالب (FORMAT)
هر خطی که با علامت هش ('#') آغاز شود، به عنوان توضیح در نظر گرفته شده و نادیده گرفته میشود.
هر خط از فایل میتواند شامل یکی از رشتههای زیر باشد:
- ATTRIBUTE name oid type [flags]
- تعریف یک نگاشت نام به شماره برای ویژگی RADIUS.
فیلد name یک فیلد قابل چاپ است که از مشخصات فنی گوناگون یا تعاریف تولیدکنندگان گرفته شده است. این فیلد اغلب به صورت مجموعهای از کلمات جدا شده با خط تیره استفاده میشود، مانند «User-Name». ویژگیهای مختص تولیدکننده (VSAها) با نام تولیدکننده پیشوندگذاری میشوند، مانند «Cisco-AVPair». نامها باید در سطح سراسری یکتا باشند، زیرا به عنوان کلید برای جستجوی مشخصات ویژگی به کار میروند.
فیلد oid از مشخصات فنی مربوط به آن نام گرفته میشود. در بیشتر موارد، یک عدد دهدهی (دسیمال) مانند «256» است. برای برخی ویژگیهای معین، از نمادگذاری «اعداد نقطهدار» استفاده میشود، مانند «1.2». نمادگذاری اعداد نقطهدار فقط برای برخی ویژگیهای خاص استفاده میشود.
فیلد type میتواند یکی از انواع استاندارد باشد:
string متن قابل چاپ UTF-8 (در RFCها «text» نامیده میشود) octets دادههای باینری خام (در RFCها «string» نامیده میشود) ipaddr آدرس IPv4 date ثانیههای سپریشده از ۱ ژانویه ۱۹۷۰ (۳۲ بیتی) integer عدد صحیح ۳۲ بیتی بدون علامت ipv6addr آدرس IPv6 ipv6prefix پیشوند IPv6 به همراه ماسک ifid شناسه رابط (hex:hex:hex:hex) integer64 عدد صحیح ۶۴ بیتی بدون علامت
فیلد type میتواند یکی از انواع غیراستاندارد زیر باشد:
ether آدرس MAC اترنت abinary قالب فیلتر باینری Ascend byte عدد صحیح ۸ بیتی بدون علامت short عدد صحیح ۱۶ بیتی بدون علامت signed عدد صحیح ۳۱ بیتی علامتدار (بستهبندی شده در فیلد ۳۲ بیتی) tlv نوع-طول-مقدار (امکان ویژگیهای تودرتو را فراهم میکند) ipv4prefix پیشوند IPv4 بر اساس RFC 6572
آخرین فیلد (اختیاری) از تعریف یک ویژگی، فلگهای اضافی برای آن ویژگی است که در یک فهرست جدا شده با کاما قرار میگیرند. نسخههای قبلی سرور اجازه میدادند این فلگها شامل نام یک تولیدکننده باشند. این رفتار ممکن است هنوز کار کند، اما منسوخ شده و توصیه نمیشود.
گزینهها عبارتند از:
array چندین مقدار در یک ویژگی بستهبندی میشوند. concat چندین ویژگی باید به هم متصل شوند. encrypt=# تنظیم نوع رمزنگاری روی ۱، ۲ یا ۳. has_tag ویژگی میتواند تگی به سبک RFC 2868 داشته باشد. secret مقداری که نباید در حالت اشکالزدایی چاپ شود. virtual ویژگی برای سرور خاص است.
فلگ «array» تنها برای DHCP استفاده میشود و نشان میدهد که یک گزینه DHCP میتواند حاوی آرایهای از چندین مقدار باشد.
فلگ «concat» نشان میدهد زمانی که چندین ویژگی در یک بسته وجود دارند، محتویات آنها باید به یکدیگر متصل شوند تا محتوای نهایی به دست آید. به طور مشابه، هنگام کدگذاری بستهها، یک مقدار طولانی باید به چندین ویژگی تقسیم شود.
فلگ «encrypt» ویژگی را به عنوان رمزنگاریشده با یکی از سه روش ممکن علامتگذاری میکند. مقدار «1» به این معنی است که ویژگی با روش تعریفشده در RFC2865 برای ویژگی User-Password رمزنگاری شده است. مقدار «2» به این معنی است که گذرواژه با روش تعریفشده در RFC2868 برای ویژگی Tunnel-Password رمزنگاری شده است. مقدار «3» به این معنی است که ویژگی مطابق با تعاریف Ascend برای ویژگی Ascend-Send-Secret رمزنگاری شده است.
فلگ «has_tag» ویژگی را به عنوان مجاز به داشتن یک برچسب (تگ)، مطابق با تعریف RFC2868 علامتگذاری میکند. هدف تگ، امکان گروهبندی ویژگیها برای کاربران تانلشده است. برای جزئیات بیشتر به RFC2868 مراجعه کنید.
فلگ «secret» نشان میدهد که مقدار نباید در حالت اشکالزدایی عادی چاپ شود. این مقدار تنها زمانی چاپ میشود که سطح اشکالزدایی ۳ یا بالاتر باشد.
فلگ «virtual» مخصوص سرور است و نشان میدهد که ویژگی در واقع وجود خارجی ندارد. در عوض، مقدار از یک بازخوانی (کالبک) داخلی دریافت میشود.
هنگامی که سرور یک ویژگی کدگذاریشده را در یک بسته RADIUS دریافت میکند، آن ویژگی را بر اساس شماره در دیکشنری جستجو کرده و از تعریف موجود در آنجا برای چاپ پیامهای تشخیصی و لاگها استفاده میکند. هنگامی که سرور نام یک ویژگی را در یک فایل پیکربندی میبیند، آن ویژگی را بر اساس نام در دیکشنری جستجو کرده و از تعریف موجود در آنجا استفاده مینماید.
- VALUE attribute-name value-name number
- تعریف یک نگاشت نام مقدار ویژگی به شماره، برای ویژگیای از نوع integer. فیلد attribute-name باید پیشتر توسط یک مدخل ATTRIBUTE تعریف شده باشد. فیلد value-name میتواند هر متن بدون فاصلهای باشد، اما معمولاً از RFC2865 یا اسناد دیگر گرفته میشود. فیلد number نیز برای آن نام، از اسناد مربوطه اخذ میگردد.
هنگامی که سرور یک مقدار کدگذاریشده را در یک بسته RADIUS دریافت میکند، مقدار آن ویژگی را بر اساس شماره در دیکشنری جستجو کرده و از نام موجود در آنجا برای چاپ پیامهای تشخیصی و لاگها استفاده میکند.
- VENDOR vendor-name number [format=...]
- تعریف یک کپسولهسازی ویژگی مختص تولیدکننده (VSA) برای vendor-name به number. برای مشاهده فهرستی از نامها و شمارههای تولیدکنندگان، ببینید: http://www.iana.org/enterprise-numbers.txt
عبارت «format=t,l» به سرور اعلام میکند که از چند اوکتت (بایت) برای کدگذاری/کدگشایی فیلدهای «type» و «length» تولیدکننده در ویژگیها استفاده کند. مقدار پیشفرض «format=1,1» است که نیازی به مشخص کردن صریح آن نیست. برای VSAهای USR قالب «format=4,0»، برای VSAهای Lucent قالب «format=2,1» و برای VSAهای Starent قالب «format=2,2» میباشد.
مقادیر پشتیبانیشده برای تعداد اوکتتهای type (یعنی رقم اول) برابر با ۱، ۲ و ۴ هستند. مقادیر پشتیبانیشده برای تعداد اوکتتهای length (یعنی رقم دوم) برابر با ۰، ۱ و ۲ هستند. هر ترکیبی از این مقادیر کار خواهد کرد.
- BEGIN-VENDOR vendor-name
- تعریف آغاز یک بلوک از ویژگیهای مختص تولیدکننده (Vendor-Specific). تمام تعاریف ATTRIBUTE پس از آن، تا زمانی که بلوک با دستور «END-VENDOR» بسته شود، به عنوان ویژگیهای متعلق به تولیدکنندهٔ نامبرده تفسیر میشوند.
این شیوه نسبت به قرار دادن نام تولیدکننده در انتهای یک تعریف ATTRIBUTE ترجیح داده میشود.
برای VSAها در فضای «Extended vendor-specific» بر اساس RFC 6929، میتوان قالبی را پس از «vendor-name» مشخص کرد. قالب باید بین «format=Extended-Vendor-Specific-1» تا «format=Extended-Vendor-Specific-6» باشد. دستور معادل «END-VENDOR» باید تنها شامل «vendor-name» بدون رشته قالب باشد.
- END-VENDOR vendor-name
- پایان دادن به یک بلوک BEGIN-VENDOR که قبلاً تعریف شده است. مقدار «vendor-name» باید مطابقت داشته باشد.
- $INCLUDE filename
- درج مدخلهای دیکشنری از فایل filename. مسیر filename به صورت نسبی نسبت به محل فایلی که درخواست درج دارد در نظر گرفته میشود.
- BEGIN-TLV name
- این قابلیت برای سازگاری با نسخههای پیشین با دیکشنریهای قدیمیتر پشتیبانی میشود و نباید استفاده گردد. به جای آن باید از فرمت جدید «oid» برای تعریف شماره ویژگی استفاده شود.
- END-TLV name
- این قابلیت برای سازگاری با نسخههای پیشین با دیکشنریهای قدیمیتر پشتیبانی میشود و نباید استفاده گردد. به جای آن باید از فرمت جدید «oid» برای تعریف شماره ویژگی استفاده شود.
فایلها (FILES)
/etc/raddb/dictionary, /usr/share/freeradius/dictionary.*
همچنین ببینید (SEE ALSO)
radiusd(8), RFC2865, RFC2866, RFC2868, RFC6929
| 05 Jan 2025 |