ARP(8) راهنمای مدیر سیستم لینوکس ARP(8)

arp - دستکاری و مدیریت جدول نگاشت آدرس شبکه (ARP cache)

arp [-vn] [-H type] [-i if] [-ae] [hostname]

arp [-v] [-i if] -d hostname [pub]

arp [-v] [-H type] [-i if] -s hostname hw_addr [temp]

arp [-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub

arp [-v] [-H type] [-i if] -Ds hostname ifname [netmask nm] pub

arp [-vnD] [-H type] [-i if] -f [filename]

دستور arp جدول نگاشت همسایه‌های شبکه IPv4 در هسته سیستم‌عامل (کرنل) را دستکاری کرده یا نمایش می‌دهد. این ابزار می‌تواند ورودی‌هایی را به جدول اضافه کند، یک ورودی را حذف نماید یا محتوای فعلی جدول را نمایش دهد.

ARP مخفف Address Resolution Protocol (پروتکل تفکیک آدرس) است که برای یافتن آدرس کنترل دسترسی به رسانه (MAC) یک همسایه شبکه به ازای یک آدرس IPv4 مشخص به کار می‌رود.

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

دستور arp -d address یک ورودی را از جدول ARP حذف می‌کند. انجام این کار نیازمند دسترسی ریشه (root) یا مجوز netadmin است. ورودی از طریق آدرس IP شناسایی می‌شود. اگر یک نام میزبان (hostname) مشخص شود، پیش از جستجوی ورودی در جدول ARP، آدرس IP آن نام تفکیک (resolve) خواهد شد.

دستور arp -s address hw_addr برای ایجاد یک ورودی جدید در جدول استفاده می‌شود. قالب پارامتر hw_addr به کلاس سخت‌افزار بستگی دارد، اما برای بیشتر کلاس‌ها می‌توان قالب معمول را به کار برد. برای کلاس اترنت (Ethernet)، این مقدار شامل ۶ بایت در مبنای شانزده است که با دو‌نقطه (:) از هم جدا شده‌اند. هنگام افزودن ورودی‌های پراکسی ARP (یعنی ورودی‌هایی با فلگ publish فعال)، می‌توان یک netmask برای انجام پراکسی ARP روی کل زیرشبکه‌ها مشخص کرد. این شیوه استاندارد و مناسبی نیست، اما توسط هسته‌های قدیمی‌تر پشتیبانی می‌شود زیرا می‌تواند کاربردی باشد. اگر فلگ temp داده نشود، ورودی‌ها به‌طور دائمی در کش ARP ذخیره می‌شوند. برای ساده‌سازی تنظیم ورودی‌ها برای یکی از رابط‌های شبکه خود سیستم، می‌توانید از قالب arp -Ds address ifname استفاده کنید. در این حالت، آدرس سخت‌افزاری از رابطی با نام مشخص‌شده برداشته می‌شود.

نمایش اطلاعات و گزارش تفصیلی از آنچه در حال انجام است.
نمایش آدرس‌ها به‌صورت عددی به‌جای تلاش برای تعیین نام‌های نمادین میزبان، پورت یا کاربر.
هنگام تنظیم یا خواندن کش ARP، این پارامتر اختیاری به arp مشخص می‌کند که کدام کلاس از ورودی‌ها را بررسی کند. مقدار پیش‌فرض این پارامتر ether است (به معنی کد سخت‌افزاری 0x01 برای IEEE 802.3 10Mbps Ethernet). سایر مقادیر می‌توانند شامل فناوری‌های شبکه مانند ARCnet (arcnet) ، PROnet (pronet) ، AX.25 (ax25) و NET/ROM (netrom) باشند.
استفاده از قالب خروجی جایگزین به سبک BSD (بدون ستون‌های ثابت).
استفاده از قالب خروجی پیش‌فرض به سبک لینوکس (با ستون‌های ثابت).
به‌جای hw_addr، آرگومان ورودی نام یک رابط شبکه خواهد بود. arp از آدرس MAC آن رابط برای ورودی جدول استفاده خواهد کرد. این روش معمولاً بهترین گزینه برای تنظیم یک ورودی پراکسی ARP به سمت خود سیستم است.
انتخاب یک رابط شبکه. هنگام گزارش کش ARP، تنها ورودی‌های منطبق با رابط مشخص‌شده چاپ می‌شوند. هنگام تنظیم یک ورودی ARP دائمی یا temp، این رابط به ورودی پیوند داده می‌شود؛ اگر از این گزینه استفاده نشود، هسته بر اساس جدول مسیریابی رابط مناسب را حدس می‌زند. برای ورودی‌های pub، رابط مشخص‌شده همان رابطی خواهد بود که به درخواست‌های ARP روی آن پاسخ داده می‌شود.
نکته: این رابط باید با رابطی که بسته‌های داده IP به سمت آن هدایت (route) می‌شوند متفاوت باشد.
نکته: از نسخه ۲.۲.۰ هسته لینوکس، دیگر امکان تنظیم ورودی ARP برای یک زیرشبکه کامل وجود ندارد. لینوکس در عوض زمانی که مسیری موجود باشد و فورواردینگ فعال باشد، پراکسی ARP را به‌صورت خودکار انجام می‌دهد. برای جزئیات به arp(7) مراجعه کنید. همچنین گزینه dontpub که برای عملیات حذف و تنظیم در دسترس است، در هسته ۲.۴ و نسخه‌های جدیدتر قابل استفاده نیست.
مشابه گزینه -s، با این تفاوت که اطلاعات آدرس از فایل filename خوانده می‌شود. این گزینه زمانی که لازم باشد ورودی‌های ARP برای تعداد زیادی از میزبان‌ها تنظیم شوند کاربرد دارد. نام این فایل داده معمولاً /etc/ethers است، اما این یک نام رسمی نیست. اگر نام فایلی مشخص نشود، /etc/ethers به‌عنوان پیش‌فرض استفاده می‌شود.

قالب فایل ساده است؛ این فایل تنها حاوی خطوط متنی اسکی با یک نام میزبان و یک آدرس سخت‌افزاری است که با فاصله از هم جدا شده‌اند. علاوه بر این، فلگ‌های pub، temp و netmask نیز می‌توانند استفاده شوند.

در تمام بخش‌هایی که یک hostname انتظار می‌رود، می‌توان یک آدرس IP را با نماد ده‌دهی نقطه‌دار (dotted-decimal notation) نیز وارد کرد.

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

هر ورودی کامل در کش ARP با فلگ C مشخص می‌شود. ورودی‌های دائمی با M و ورودی‌های منتشرشده با فلگ P مشخص می‌شوند.

/usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub

پاسخ‌گویی به درخواست‌های ARP برای 10.0.0.2 روی رابط eth0 با آدرس MAC رابط eth1.

/usr/sbin/arp -i eth1 -d 10.0.0.1

حذف ورودی جدول ARP برای 10.0.0.1 در رابط eth1. این دستور با ورودی‌های پراکسی ARP منتشرشده و ورودی‌های دائمی تطابق یافته و آن‌ها را حذف می‌کند.

/proc/net/arp
/etc/networks
/etc/hosts
/etc/ethers

ethers(5), rarp(8), route(8), ifconfig(8), netstat(8)

Fred N. van Kempen <waltje@uwalt.nl.mugnet.org>, Bernd Eckenfels <net-tools@lina.inka.de>.

2008-10-03 net-tools