| IP-NETNS(8) | Linux | IP-NETNS(8) |
نام (NAME)
ip-netns - مدیریت فضاهای نام شبکه (network namespaces)
خلاصه دستور (SYNOPSIS)
ip [ OPTIONS ] netns { COMMAND | help }
ip netns [ list ]
ip netns add NETNSNAME
ip netns attach NETNSNAME PID
ip [-all] netns del [ NETNSNAME ]
ip netns set NETNSNAME NETNSID
NETNSID := auto | POSITIVE-INT
ip netns identify [ PID ]
ip netns pids NETNSNAME
ip [-all] netns exec [ NETNSNAME ] command...
ip netns monitor
ip netns list-id [ target-nsid POSITIVE-INT ] [ nsid POSITIVE-INT ]
توضیحات (DESCRIPTION)
یک فضای نام شبکه (network namespace) از نظر منطقی نسخهای دیگر از پشته شبکه (network stack) است، با مسیرها، قوانین دیوار آتش (firewall) و دستگاههای شبکه اختصاصی خود.
بهطور پیشفرض، یک پردازش فضای نام شبکه خود را از والدش به ارث میبرد. در ابتدا، همه پردازشها فضای نام شبکه پیشفرض یکسانی را از پردازش init به اشتراک میگذارند.
طبق قرارداد، یک فضای نام شبکه نامگذاریشده شیئی در مسیر /run/netns/NAME است که قابلیت باز شدن دارد. توصیفگر فایل (file descriptor) حاصل از باز کردن /run/netns/NAME به فضای نام شبکه مشخصشده اشاره میکند. باز نگهداشتن این توصیفگر فایل، فضای نام شبکه را زنده نگه میدارد. این توصیفگر فایل میتواند به همراه فراخوان سیستمی setns(2) جهت تغییر فضای نام شبکه مرتبط با یک تسک استفاده شود.
برای برنامههایی که از فضاهای نام شبکه آگاه هستند، قرارداد بر این است که فایلهای پیکربندی سراسری شبکه ابتدا در مسیر /etc/netns/NAME/ و سپس در /etc/ جستجو شوند. به عنوان مثال، اگر نسخه متفاوتی از /etc/resolv.conf را برای یک فضای نام شبکه که جهت ایزولهسازی ویپیان شما به کار میرود میخواهید، میتوانید آن را به صورت /etc/netns/myvpn/resolv.conf نامگذاری کنید.
دستور ip netns exec رسیدگی به این قرارداد فایلهای پیکربندی را برای برنامههای ناآگاه از فضای نام شبکه خودکار میکند؛ این کار از طریق ایجاد یک فضای نام سوارکردن (mount namespace) و bind-mount کردن تمام فایلهای پیکربندی مختص به هر فضای نام شبکه در مکان سنتی آنها در /etc صورت میگیرد.
- ip netns list - نمایش تمام فضاهای نام شبکه نامگذاریشده
-
این دستور تمام فضاهای نام شبکه موجود در /run/netns را نمایش میدهد.
- ip netns add NAME - ایجاد یک فضای نام شبکه نامگذاریشده جدید
-
اگر NAME در /run/netns در دسترس باشد، این دستور یک فضای نام شبکه جدید ایجاد کرده و NAME را به آن اختصاص میدهد.
- ip netns attach NAME PID - انتساب یک نام به فضای نام شبکه پردازش
-
اگر NAME در /run/netns در دسترس باشد، این دستور فضای نام شبکه مربوط به پردازش PID را به NAME متصل میکند، درست همانگونه که با ip netns ایجاد شده باشد.
- ip [-all] netns delete [ NAME ] - حذف نام یک یا چند فضای نام شبکه
-
اگر NAME در /run/netns موجود باشد، از حالت سوارشده خارج (umount) شده و نقطه اتصال حذف میگردد. اگر این آخرین کاربر فضای نام شبکه باشد، فضای نام شبکه آزاد خواهد شد و تمامی دستگاههای فیزیکی به فضای نام پیشفرض منتقل میشوند، در غیر این صورت فضای نام شبکه تا زمانی که هیچ کاربری نداشته باشد باقی میماند. اگر نقطه اتصال در یک فضای نام سوارکردن دیگر در حال استفاده باشد، ممکن است ip netns delete با خطا مواجه شود.
اگر گزینه -all مشخص شده باشد، آنگاه تمام نامهای فضاهای نام شبکه حذف خواهند شد.
این احتمال وجود دارد که دستگاه فیزیکی هنگام انتقال به یک netns و سپس حذف آن netns در حالی که پردازشی درون آن در حال اجرا است، موقتاً از دست برود:
$ ip netns add net0
$ ip link set dev eth0 netns net0
$ ip netns exec net0 SOME_PROCESS_IN_BACKGROUND
$ ip netns del net0
$ ip netns pids net0 | xargs kill
$ ip netns del net0
- ip netns set NAME NETNSID - انتساب شناسه به فضای نام شبکه همتا
-
این دستور یک شناسه را به فضای نام شبکه همتا (peer) اختصاص میدهد. این شناسه تنها در فضای نام شبکه کنونی معتبر است. اگر کلیدواژه "auto" مشخص شود، یک nsid موجود و آزاد برگزیده خواهد شد. این شناسه توسط هسته در برخی پیامهای netlink استفاده میشود. اگر زمانی که هسته به آن نیاز دارد شناسهای اختصاص داده نشده باشد، هسته به صورت خودکار آن را اختصاص میدهد. پس از تخصیص، تغییر آن امکانپذیر نخواهد بود.
- ip netns identify [PID] - گزارش نامهای فضای نام شبکه برای یک پردازش
-
این دستور مسیر /run/netns را پیمایش کرده و تمام نامهای فضای نام شبکه را برای فضای نام شبکه پردازش مشخصشده پیدا میکند؛ اگر PID مشخص نشود، از پردازش فعلی استفاده خواهد شد.
- ip netns pids NAME - گزارش پردازشهای موجود در فضای نام شبکه نامگذاریشده
-
این دستور دایرکتوری /proc را پیمایش کرده و تمام پردازشهایی را که دارای این فضای نام شبکه نامگذاریشده به عنوان فضای نام شبکه اصلی خود هستند پیدا میکند.
- ip [-all] netns exec [ NAME ] cmd ... - اجرای دستور در فضای نام شبکه نامگذاریشده
-
این دستور به برنامههایی که از فضای نام شبکه آگاه نیستند اجازه میدهد در محیطی به جز فضای نام شبکه پیشفرض اجرا شوند، در حالی که تمام پیکربندیهای مربوط به فضای نام شبکه مشخصشده در مکانهای سراسری مرسوم پدیدار میشوند. یک فضای نام شبکه و bind mountها به کار گرفته میشوند تا فایلها را بدون تأثیرگذاری بر سایر پردازشها، از مکان اختصاصی فضای نام شبکه به مکانهای پیشفرض آنها انتقال دهند.
اگر گزینه -all مشخص شده باشد، آنگاه cmd بهصورت همگام بر روی هر یک از فضاهای نام شبکه نامگذاریشده اجرا میشود، حتی اگر cmd روی برخی از آنها شکست بخورد. در هر بار اجرای cmd، نام فضای نام شبکه چاپ میشود.
- ip netns monitor - گزارش همزمان با افزودن و حذف نامهای فضای نام شبکه
-
این دستور رویدادهای افزودن و حذف نامهای فضای نام شبکه را زیر نظر میگیرد و برای هر رویدادی که مشاهده میکند یک خط چاپ مینماید.
- ip netns list-id [target-nsid POSITIVE-INT] [nsid POSITIVE-INT] - فهرست کردن شناسههای فضای نام شبکه (nsid)
-
شناسههای فضای نام شبکه برای شناسایی یک فضای نام شبکه همتا استفاده میشوند. این دستور nsidهای فضای نام شبکه کنونی را نمایش میدهد و در صورت وجود، نام فضای نام متناظر iproute2 (از مسیر /run/netns) را ارائه میدهد.
گزینه target-nsid امکان نمایش nsidهای فضای نام شبکه مشخصشده را به جای فضای نام شبکه فعلی فراهم میکند. این target-nsid یک شناسه nsid از فضای نام شبکه فعلی است.
گزینه nsid امکان نمایش تنها همین nsid را فراهم میسازد. این یک nsid از فضای نام شبکه کنونی است. در ترکیب با گزینه target-nsid، تبدیل یک nsid مشخص از فضای نام شبکه فعلی به یک nsid در فضای نام شبکه target-nsid را امکانپذیر میسازد.
مثالها (EXAMPLES)
ip netns list
ip netns add vpn
ip netns exec vpn ip link set lo up
ip netns add foo ip netns add bar ip netns set foo 12 ip netns set bar 13 ip -n foo netns set foo 22 ip -n foo netns set bar 23 ip -n bar netns set foo 32 ip -n bar netns set bar 33 ip netns list-id target-nsid 12
ip netns list-id target-nsid 12 nsid 13
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
صفحه
راهنمای
اصلی توسط Eric W.
Biederman نوشته شده
است.
بازبینی
صفحه
راهنما
توسط Nicolas Dichtel
<nicolas.dichtel@6wind.com> انجام
شده است.
| 16 Jan 2013 | iproute2 |